中企动力 > 商学院 > 分类算法的数据分析
  • ?

    36氪首发 | 今日头条推荐算法原理全文详解

    元芹

    展开

    如今,算法分发已经逐步成为信息平台、搜索引擎、浏览器、社交软件等几乎所有软件的标配,但同时也开始面临各种不同的质疑、挑战与误解。

    2018年1月,今日头条资深算法架构师曹欢欢博士,首次公开今日头条的算法原理,以期推动整个行业问诊算法、建言算法。通过让算法透明,来消除各界对算法的误解。

    据悉,今日头条的信息推荐算法自2012年9月第一版开发运行至今,已经经过四次大调整和修改。目前服务全球亿万用户。

    以下为曹欢欢关于《今日头条算法原理》的分享内容(已授权):

    本次分享将主要介绍今日头条推荐系统概览以及内容分析、用户标签、评估分析,内容安全等原理。

    一、系统概览

    推荐系统,如果用形式化的方式去描述实际上是拟合一个用户对内容满意度的函数,这个函数需要输入三个维度的变量。

    第一个维度是内容。头条现在已经是一个综合内容平台,图文、视频、UGC小视频、问答、微头条,每种内容有很多自己的特征,需要考虑怎样提取不同内容类型的特征做好推荐。第二个维度是用户特征。包括各种兴趣标签,职业、年龄、性别等,还有很多模型刻划出的隐式用户兴趣等。第三个维度是环境特征。这是移动互联网时代推荐的特点,用户随时随地移动,在工作场合、通勤、旅游等不同的场景,信息偏好有所偏移。

    结合三方面的维度,模型会给出一个预估,即推测推荐内容在这一场景下对这一用户是否合适。

    这里还有一个问题,如何引入无法直接衡量的目标?

    推荐模型中,点击率、阅读时间、点赞、评论、转发包括点赞都是可以量化的目标,能够用模型直接拟合做预估,看线上提升情况可以知道做的好不好。但一个大体量的推荐系统,服务用户众多,不能完全由指标评估,引入数据指标以外的要素也很重要。

    比如广告和特型内容频控。像问答卡片就是比较特殊的内容形式,其推荐的目标不完全是让用户浏览,还要考虑吸引用户回答为社区贡献内容。这些内容和普通内容如何混排,怎样控制频控都需要考虑。

    此外,平台出于内容生态和社会责任的考量,像低俗内容的打压,标题党、低质内容的打压,重要新闻的置顶、加权、强插,低级别账号内容降权都是算法本身无法完成,需要进一步对内容进行干预。

    下面我将简单介绍在上述算法目标的基础上如何对其实现。

    前面提到的公式y = F(Xi ,Xu ,Xc),是一个很经典的监督学习问题。可实现的方法有很多,比如传统的协同过滤模型,监督学习算法Logistic Regression模型,基于深度学习的模型,Factorization Machine和GBDT等。

    一个优秀的工业级推荐系统需要非常灵活的算法实验平台,可以支持多种算法组合,包括模型结构调整。因为很难有一套通用的模型架构适用于所有的推荐场景。现在很流行将LR和DNN结合,前几年Facebook也将LR和GBDT算法做结合。今日头条旗下几款产品都在沿用同一套强大的算法推荐系统,但根据业务场景不同,模型架构会有所调整。

    模型之后再看一下典型的推荐特征,主要有四类特征会对推荐起到比较重要的作用。

    第一类是相关性特征,就是评估内容的属性和与用户是否匹配。显性的匹配包括关键词匹配、分类匹配、来源匹配、主题匹配等。像FM模型中也有一些隐性匹配,从用户向量与内容向量的距离可以得出。

    第二类是环境特征,包括地理位置、时间。这些既是bias特征,也能以此构建一些匹配特征。

    第三类是热度特征。包括全局热度、分类热度,主题热度,以及关键词热度等。内容热度信息在大的推荐系统特别在用户冷启动的时候非常有效。

    第四类是协同特征,它可以在部分程度上帮助解决所谓算法越推越窄的问题。协同特征并非考虑用户已有历史。而是通过用户行为分析不同用户间相似性,比如点击相似、兴趣分类相似、主题相似、兴趣词相似,甚至向量相似,从而扩展模型的探索能力。

    模型的训练上,头条系大部分推荐产品采用实时训练。实时训练省资源并且反馈快,这对信息流产品非常重要。用户需要行为信息可以被模型快速捕捉并反馈至下一刷的推荐效果。我们线上目前基于storm集群实时处理样本数据,包括点击、展现、收藏、分享等动作类型。模型参数服务器是内部开发的一套高性能的系统,因为头条数据规模增长太快,类似的开源系统稳定性和性能无法满足,而我们自研的系统底层做了很多针对性的优化,提供了完善运维工具,更适配现有的业务场景。

    目前,头条的推荐算法模型在世界范围内也是比较大的,包含几百亿原始特征和数十亿向量特征。整体的训练过程是线上服务器记录实时特征,导入到Kafka文件队列中,然后进一步导入Storm集群消费Kafka数据,客户端回传推荐的label构造训练样本,随后根据最新样本进行在线训练更新模型参数,最终线上模型得到更新。这个过程中主要的延迟在用户的动作反馈延时,因为文章推荐后用户不一定马上看,不考虑这部分时间,整个系统是几乎实时的。

    但因为头条目前的内容量非常大,加上小视频内容有千万级别,推荐系统不可能所有内容全部由模型预估。所以需要设计一些召回策略,每次推荐时从海量内容中筛选出千级别的内容库。召回策略最重要的要求是性能要极致,一般超时不能超过50毫秒。

    召回策略种类有很多,我们主要用的是倒排的思路。离线维护一个倒排,这个倒排的key可以是分类,topic,实体,来源等,排序考虑热度、新鲜度、动作等。线上召回可以迅速从倒排中根据用户兴趣标签对内容做截断,高效的从很大的内容库中筛选比较靠谱的一小部分内容。

    二、内容分析

    内容分析包括文本分析,图片分析和视频分析。头条一开始主要做资讯,今天我们主要讲一下文本分析。文本分析在推荐系统中一个很重要的作用是用户兴趣建模。没有内容及文本标签,无法得到用户兴趣标签。举个例子,只有知道文章标签是互联网,用户看了互联网标签的文章,才能知道用户有互联网标签,其他关键词也一样。

    另一方面,文本内容的标签可以直接帮助推荐特征,比如魅族的内容可以推荐给关注魅族的用户,这是用户标签的匹配。如果某段时间推荐主频道效果不理想,出现推荐窄化,用户会发现到具体的频道推荐(如科技、体育、娱乐、军事等)中阅读后,再回主feed,推荐效果会更好。因为整个模型是打通的,子频道探索空间较小,更容易满足用户需求。只通过单一信道反馈提高推荐准确率难度会比较大,子频道做的好很重要。而这也需要好的内容分析。

    上图是今日头条的一个实际文本case。可以看到,这篇文章有分类、关键词、topic、实体词等文本特征。当然不是没有文本特征,推荐系统就不能工作,推荐系统最早期应用在Amazon,甚至沃尔玛时代就有,包括Netfilx做视频推荐也没有文本特征直接协同过滤推荐。但对资讯类产品而言,大部分是消费当天内容,没有文本特征新内容冷启动非常困难,协同类特征无法解决文章冷启动问题。

    今日头条推荐系统主要抽取的文本特征包括以下几类。首先是语义标签类特征,显式为文章打上语义标签。这部分标签是由人定义的特征,每个标签有明确的意义,标签体系是预定义的。此外还有隐式语义特征,主要是topic特征和关键词特征,其中topic特征是对于词概率分布的描述,无明确意义;而关键词特征会基于一些统一特征描述,无明确集合。

    另外文本相似度特征也非常重要。在头条,曾经用户反馈最大的问题之一就是为什么总推荐重复的内容。这个问题的难点在于,每个人对重复的定义不一样。举个例子,有人觉得这篇讲皇马和巴萨的文章,昨天已经看过类似内容,今天还说这两个队那就是重复。但对于一个重度球迷而言,尤其是巴萨的球迷,恨不得所有报道都看一遍。解决这一问题需要根据判断相似文章的主题、行文、主体等内容,根据这些特征做线上策略。

    同样,还有时空特征,分析内容的发生地点以及时效性。比如武汉限行的事情推给北京用户可能就没有意义。最后还要考虑质量相关特征,判断内容是否低俗,色情,是否是软文,鸡汤?

    上图是头条语义标签的特征和使用场景。他们之间层级不同,要求不同。

    分类的目标是覆盖全面,希望每篇内容每段视频都有分类;而实体体系要求精准,相同名字或内容要能明确区分究竟指代哪一个人或物,但不用覆盖很全。概念体系则负责解决比较精确又属于抽象概念的语义。这是我们最初的分类,实践中发现分类和概念在技术上能互用,后来统一用了一套技术架构。

    目前,隐式语义特征已经可以很好的帮助推荐,而语义标签需要持续标注,新名词新概念不断出现,标注也要不断迭代。其做好的难度和资源投入要远大于隐式语义特征,那为什么还需要语义标签?有一些产品上的需要,比如频道需要有明确定义的分类内容和容易理解的文本标签体系。语义标签的效果是检查一个公司NLP技术水平的试金石。

    今日头条推荐系统的线上分类采用典型的层次化文本分类算法。最上面Root,下面第一层的分类是像科技、体育、财经、娱乐,体育这样的大类,再下面细分足球、篮球、乒乓球、网球、田径、游泳...,足球再细分国际足球、中国足球,中国足球又细分中甲、中超、国家队...,相比单独的分类器,利用层次化文本分类算法能更好地解决数据倾斜的问题。有一些例外是,如果要提高召回,可以看到我们连接了一些飞线。这套架构通用,但根据不同的问题难度,每个元分类器可以异构,像有些分类SVM效果很好,有些要结合CNN,有些要结合RNN再处理一下。

    上图是一个实体词识别算法的case。基于分词结果和词性标注选取候选,期间可能需要根据知识库做一些拼接,有些实体是几个词的组合,要确定哪几个词结合在一起能映射实体的描述。如果结果映射多个实体还要通过词向量、topic分布甚至词频本身等去歧,最后计算一个相关性模型。

    三、用户标签

    内容分析和用户标签是推荐系统的两大基石。内容分析涉及到机器学习的内容多一些,相比而言,用户标签工程挑战更大。

    今日头条常用的用户标签包括用户感兴趣的类别和主题、关键词、来源、基于兴趣的用户聚类以及各种垂直兴趣特征(车型,体育球队,股票等)。还有性别、年龄、地点等信息。性别信息通过用户第三方社交账号登录得到。年龄信息通常由模型预测,通过机型、阅读时间分布等预估。常驻地点来自用户授权访问位置信息,在位置信息的基础上通过传统聚类的方法拿到常驻点。常驻点结合其他信息,可以推测用户的工作地点、出差地点、旅游地点。这些用户标签非常有助于推荐。

    当然最简单的用户标签是浏览过的内容标签。但这里涉及到一些数据处理策略。主要包括:一、过滤噪声。通过停留时间短的点击,过滤标题党。二、热点惩罚。对用户在一些热门文章(如前段时间PG One的新闻)上的动作做降权处理。理论上,传播范围较大的内容,置信度会下降。三、时间衰减。用户兴趣会发生偏移,因此策略更偏向新的用户行为。因此,随着用户动作的增加,老的特征权重会随时间衰减,新动作贡献的特征权重会更大。四、惩罚展现。如果一篇推荐给用户的文章没有被点击,相关特征(类别,关键词,来源)权重会被惩罚。当然同时,也要考虑全局背景,是不是相关内容推送比较多,以及相关的关闭和dislike信号等。

    用户标签挖掘总体比较简单,主要还是刚刚提到的工程挑战。头条用户标签第一版是批量计算框架,流程比较简单,每天抽取昨天的日活用户过去两个月的动作数据,在Hadoop集群上批量计算结果。

    但问题在于,随着用户高速增长,兴趣模型种类和其他批量处理任务都在增加,涉及到的计算量太大。2014年,批量处理任务几百万用户标签更新的Hadoop任务,当天完成已经开始勉强。集群计算资源紧张很容易影响其它工作,集中写入分布式存储系统的压力也开始增大,并且用户兴趣标签更新延迟越来越高。

    面对这些挑战。2014年底今日头条上线了用户标签Storm集群流式计算系统。改成流式之后,只要有用户动作更新就更新标签,CPU代价比较小,可以节省80%的CPU时间,大大降低了计算资源开销。同时,只需几十台机器就可以支撑每天数千万用户的兴趣模型更新,并且特征更新速度非常快,基本可以做到准实时。这套系统从上线一直使用至今。

    当然,我们也发现并非所有用户标签都需要流式系统。像用户的性别、年龄、常驻地点这些信息,不需要实时重复计算,就仍然保留daily更新。

    四、评估分析

    上面介绍了推荐系统的整体架构,那么如何评估推荐效果好不好?

    有一句我认为非常有智慧的话,“一个事情没法评估就没法优化”。对推荐系统也是一样。

    事实上,很多因素都会影响推荐效果。比如侯选集合变化,召回模块的改进或增加,推荐特征的增加,模型架构的改进在,算法参数的优化等等,不一一举例。评估的意义就在于,很多优化最终...

  • ?

    算法有没有价值观?知乎内容推荐算法解析

    Guy

    展开

    【IT168 技术】今年,我们已经听到了多家内容平台整改的消息,对于标题党、蹭热点等行为,用户早已经见怪不怪。同样是知识分享平台,知乎倒是躲过了每一次整改,肯定有人会说是幸运,也肯定有人会从理性的角度对知乎的内容推荐和讨论方式进行分析,就好像每一条知乎问答下的用户一样理性。

    同样是AI算法,同样是内容推荐,知乎更侧重于将关注点放在内容生产本身,对违规内容的处理速度也是极其快速。本文详细介绍了知乎算法是如何通过识别垃圾广告导流信息、识别低质量回答并处理违规信息的,想必对业内不少工程师会有借鉴意义。

    算法在社区氛围的应用(一):识别垃圾广告导流信息

    近期,我们发现社区内出现了垃圾广告的导流内容,影响用户体验,破坏认真、专业和友善的社区氛围。为了解决这种情况,我们进行了大量努力和探索。最开始在识别导流信息上采用的是干扰转换+正则匹配+匹配项回溯的方式进行异常导流信息的识别与控制,取得了很好的效果。

    但是我们发现,随着我们处理这些内容的同时,他们正在逐步增加导流信息的各种变体,常见的有以下几种方式:第一种变体是导流前缀的变化,如 QQ 导流前缀变化成企鹅,「腾顺」等等;第二变体是不使用前缀,如退款 123377281;第三种变体是导流中随机插入非特殊字符,如 319xxxx053xxxx7178。我们对这些变体进行了收集整理和分析。

    通过对典型导流样本的分析,我们发现尽管导流信息变体在不断演化,但是它们所在的上下文变化并不明显。因此,我们尝试通过序列标注的方式来识别导流内容,提高算法的识别准确度。

     模型

    常用的序列标注算法,有 HMM、CRF、RNN、BILSTM-CRF 等。BILSTM-CRF 在多个自然语言序列标注问题(NER、POS)上都表现优秀,同时,通过实验,我们也发现 BILSTM-CRF 表现优于其他模型。

    网络结构

    BILSTM-CRF 模型结构如下图所示:

    第一层为 Embedding 层,将输入文本转换为词向量表示。

    第二层为双向 LSTM 层。LSTM 具有强大的序列建模能力,能够捕捉长远的上下文信息,同时还拥有神经网络拟合非线性的能力。相比单向的 LSTM,双向 LSTM 不仅能够利用以前的上下文信息,还能利用未来的上下文信息。

    第三层为一个全连接层。作用是将上一层的输出,映射为 [T,C] 的向量,T为输入序列长度,C为标签数量。输出的也就是每个 timestep 对应的状态 score。

    最后一层为 linear-chain CRF 层。CRF 计算的是一种联合概率,优化的是整个序列(最终目标),而不是将每个时刻的最优拼接起来。在 CRF 层,使用 viterbi 解码算法从状态 score 和转移矩阵中解码得到输出状态序列。

    BILSTM-CRF 模型同时结合了 LSTM 和 CRF 的优点,使得其在序列标注任务上具有极强的优势。

    CRF

    从上述网络结构,可知要优化的目标函数由最后一层决定。

    通常给定一个线性链条件随机场 ,当观测序列为

    时,

    标签序列为

    的概率可写为

    其中,Z(x) 为归一化函数,对所有可能的标签序列求和。

    是特征函数,通常考虑转移特征和状态特征两方面。状态特征描述标签之间的相似程度,

    是上一层网络的输出。

    转移特征考虑状态之间的变化趋势

    在模型的概率给出之后,可以使用最大似然估计优化参数,即最小化负对数似然 -logP(y|x),从而得到整个网络的 loss function。

     是否包含前后缀?

    训练模型之前,我们需要标记训练数据。

    标记训练数据的一个问题是,是否要包含导流信息的前后缀。如「加V:xxxxxx」,是否需要包含「加V」。通常情况下,答案应该是不包含,因为我们的实体是微信号,「加 V」不属于我们要识别的实体。

    但是,我们在实验过程中发现,如果不加前后缀,模型会把大量的英文单词,或者字母数字组合,标记为导流内容。原因是,作为中文社区,英文单词出现频率很低,同时大部分导流信息都是字母数字组合,从而使得模型出现错误。

    针对这种情况,我们在处理数据时,将导流信息的前后缀也作为实体的一部分,有效的降低了上述问题出现的概率。

     实体编码

    序列标注模型另一个需要注意的问题是,实体编码的格式。常用的序列实体编码方式有IO、BIO、BMEWO三种。

    IO 编码是最简单的编码,它将属于类型X的实体的序列元素标记为 I_X,不属于任何实体的序列元素标记为 O。这种编码存在缺陷,因为它不能代表彼此相邻的两个实体,因为没有边界标签。

    BIO 编码是当前实体编码的行业标准。它将表示实体的 I_X 标签细分为实体开始标签 B_X和实体延续标签 I_X。

    BMEWO 编码进一步区分实体结束元素 E_X 和实体中间元素令 M_X,并为单元素实体添加一个全新的标签 W_X。

    上述三种编码的示例,如下所示:

    综合考虑,我们选择 BIO 编码,一是满足我们对于导流信息的区分,二是其标记方式相对通用。

    效果

    在实验阶段,分别将 HMM、BILSTM、BIGRU、BILSTM-CRF 做了一系列的对比,将表现比较好的 BILSTM-CRF 放在线上与原本的 Base 模型进行 AB 实验。从结果上来看,宽深度学习模型在线下/线上都有比较好的效果。线上实验结论如下:

    后续的改进

    为了提高模型的效果,我们需要使用更多的训练数据,构造更复杂的网络结构,使用更多的超参数设置训练模型。然而,不断增加的模型尺寸和超参数极大地延长了训练时间。很明显,计算能力已经成为了模型优化的主要瓶颈。相比 CNN 和 Attention 等操作,LSTM 仍然不太适应多线程 /GPU 计算,训练速度偏慢,不能充分利用GPU的并行计算优势。因此,我们还在尝试 SRU 等RNN 加速方案,希望在模型效果损失不大的情况下,提高模型的训练速度。

    我们当前采用的是Char-based model,Char-based model在一个优势在于利用词元(lemmas)和形态学信息(morphological information ),能更好的处理导流内容内部结构,如手机号的组成。另一方面,Word-based model 更多的利用词语信息,词语比字具有更高的抽象等级,通常正确率会更高。我们希望通过训练一个新的分词模型的方式,使得在保持处理导流内容内部结构的情况下,构建 Word-based model。

    算法在社区氛围的应用(二):深度学习在不友善文本识别中的应用

    此前,我们常常收到知友们的反馈说「好烦哦,TA 又不友善了」、「我要举报 XX,TA 在评论区又开始杠上了」、「这种辱骂他人的人,你们都不处理吗?」等等。今年年初,我们开始尝试用深度学习算法辅助审核人员处理不友善问题,经过近三个月的探索和尝试,目前该算法第一版已经上线,并且取得相对不错的效果。

    知乎不友善文本识别应用的场景和策略

    目前,瓦力识别不友善的算法已经应用在知友们的举报和社区实时产生的内容中。针对这两种内容的不同场景和特点,我们采用了不同的处理策略:

    举报内容的处理策略

    瓦力有效地提升了我们的举报处理效率和响应速度。目前,我们每天约收到知友们近 25,000 条举报。在这些举报中,大约有 7,000 条是关于不友善的内容。模型训练阶段,我们利用经过人工标注的举报内容进行模型训练。线上预测阶段,如果模型预测某条内容属于不友善的概率x 大于阈值 p_abuse,瓦力会在 0.3 秒间完成判断并直接删除,内容被处理后,知友们也会收到相应的私信通知;如果模型预测该内容属于非不友善类型的概率 x 大于阈值 p_friend,则认为该内容属于非不友善内容,那么该举报会被忽略;不满足以上条件的内容,我们会进行多次人工审核判断,人工审核后的判断标准也会用于下一轮模型的迭代和升级。

    我们重视每一个举报,并根据举报内容增强瓦力可识别的范围和准确度,还会每日人工复核知友们的举报,针对可能存在不同处理意见的举报,会根据规范与实际的应用场景多次复审。在这里,我们也非常感谢知友们的每一次举报,感谢大家与我们一起并肩维护社区氛围,我们也正是在知友们的举报中逐渐形成统一的判断标准。

    全量内容的处理策略

    我们会对每天新产生的内容进行全量审核,每天可以实时拦截处理 3,000 条内容。在实际的操作过程中,我们发现全量内容有如下两个特点使其不能跟举报内容共用模型和策略:

    不友善样本和非不友善样本分布非常不均衡;

    词语分布和举报内容有区别。比如,举报内容中包含「SB、NC」之类的脏词的基本属于不友善类型;但是在全量内容中脏字、脏词可能出现在影视作品讨论、陈述自己的经历等场景等非不友善内容中,例如:坑到你头皮发麻。———《鲁班智商二百五》

    由于数据不均衡、数据排查标注成本较高和上述数据的分布特点,全量内容模型要做到准确率 98% 以上非常困难,因此我们根据人工审核量,选择一个适宜的阈值,在保证每天召回量的基础上,维持召回内容的处理准确率到 80% 以上,并将召回的内容进行人工审核。

    知乎社区不友善文本识别系统基本框架

    目前,不友善内容处理系统架构如下图所示(以知友举报内容识别识别系统为例,全量内容识别系统与其类似)

    ▲不友善内容处理系统框图

    我们在选择模型时在小批量数据集上对比了 lstm 模型、svm 和朴素贝叶斯模型,lstm 模型表现最好,因此我们的模型优化工作主要集中在深度学习模型上。

     词向量

    将词用「词向量」表示是深度学习模型处理 NLP 问题的关键一步,我们的系统中使用 Google 提出的 word2vec 词向量模型,训练数据采用来自知乎社区 300 多万条真实的提问、评论、回答数据,内容涉及娱乐、政治、新闻、科学等各个领域,词向量维度采用 128 维,训练模型窗口大小 5。

    Word2vec 的原理和使用方法这里就不做过多介绍了,有兴趣的可以阅读文献[1],Python 版本实现的可以参考 gensim官方文档。

    text-cnn

    TextCNN 是利用卷积神经网络对文本进行分类的算法,2014 年由 Yoon Kim 提出(见参考[3])。 TextCNN 的结构比较简单,其模型的结构如下图:

    ▲ext-cnn 网络结构

    Embedding Layer——该层将输入的自然语言编码成 distributed representation,我们的模型该层使用 word2vec 预先训练好的词向量,同时该层设置为 trainable。

    Convolution Layer——这一层主要是通过卷积,提取文本的 n-gram 特征,输入文本通过 embedding layer 后,会转变成一个二维矩阵,假设文本的长度为 |T|,词向量的大小为 |d|,则该二维矩阵的大小为 |T|x|d|,接下的卷积工作就是对这一个 |T|x|d| 的二维矩阵进行的。卷积核的大小一般设为 n x |d|,n 是卷积核的长度,|d| 是卷积核的宽度(LP 中通常取词向量的维度)。我们的模型中 n 取 [2,3,4,5]4 个值,每个值固定取 128 个 filter。

    Max Pooling Layer——最大池化层,对卷积后得到的若干个一维向量取最大值,然后拼接在一块,作为本层的输出值。如果卷积核的 size=2,3,4,5 每个 size 有 128 个 filter,则经过卷积层后会得到 4×128 个一维的向量,再经过 max-pooling 之后,会得到 4×128 个 scalar 值,拼接在一块,最终得到一个 512×1 的向量。max-pooling 层的意义在于对卷积提取的 n-gram 特征,提取激活程度最大的特征。

    Fully-connected Layer——将 max-pooling layer 后再拼接一层,作为输出结果。实际中为了提高网络的学习能力,可以拼接多个全连接层。

    Softmax——根据类别数目设定节点数,我们不友善文本识别项目是二分类问题,设置一个节点,激活函数选择 sigmoid。

    Bi-LSTM

    CNN 最大问题是固定 filter_size 的视野,无法建模更长的序列信息,自然语言处理中更常用的是 RNN,因为 RNN 能够更好的表达上下文信息。在文本分类任务中,由于语句过长,会出现梯度消失或梯度爆炸的问题,基本的RNN网络难于处理语言中的长程依赖问题,为了解决这个问题,人们提出了 LSTM 模型。我们在对比 LSTM 和 Bi-LSTM 效果后选择了 Bi-LSTM,Bi-LSTM 从某种意义上可以理解为可以捕获变长且双向的「n-gram」信息。图 3 是 Bi-LSTM 用于分类问题的网络结构,黄色的节点分别是前向和后向RNN的输出,示例中的是利用最后一个词的结果直接接全连接层 softmax 输出了。我们的实际使用的网络结构在全联接层之后加了一层 dropout 层,dropout 输出接 sigmoid 二元分类层。RNN、LSTM、BI-LSTM 可以参考文献[4]。

    ▲用于文本分类的双向 LSTM 网络结构

    我们参考论文 A C-LSTM Neural Network for Text Classification 来实现 CNN-LSTM 文本分类模型,模型的网络结构如下所示(该图直接来自论文)

    ▲CNN-ISTM 网络结构

     效果

    举报的内容

    知友举报内容不管是直接删除还是直接忽略,都要求算法有较高的准确率(本文准确率没有特别说明的情况下指 precision),经过对比不同模型的评测效果,目前线上选用模型和准确率、召回率如下:

    全量内容

    经过模型调优和对比不同模型的评测效果,目前线上使用的模型和准确率、召回率如下:

    后续工作

    我们会利用更多数据模型,尝试更复杂定神经网络并进行语义分析。通过分析实际操作中的 bad case 可以发现,有些文本带有脏字、脏词但并不属于不友善类别,同时也存在一些很隐晦的不友善内容,主要有以下ä...

  • ?

    年薪百万大数据工程师:告诉大家如何学习大数据

    施听寒

    展开

    信息

    作为二千零一十七世纪流行的技术,大量的数据越来越受到人们的重视。对于一个想进入大数据的朋友来说,他想知道的是:什么是大数据学习?今天,我们将与大家分享数据,并分享一篇关于大数据学习内容系统的文章。

    大数据技术体系过于复杂,数据采集,涵盖了基本的数据处理、分布式存储、NoSQL数据库、多模式计算(批处理、联机处理、共享大数据交流学习裙722680258低中高资料每天都有,欢迎大家加入。实时流处理、记忆、处理)多模态计算(图像、文本、视频、音频)、数据仓库、数据挖掘、机器学习、深度学习、人工智能、并行计算、可视化技术和不同层次。此外,大数据应用得到了广泛的应用,不同领域的技术差异仍然很大。在很短的时间内,很难掌握大数据理论和技术的许多领域。从应用的角度出发,从实际应用需求出发,一定要把它修改一下,然后再掌握一些技巧,然后再画横向扩展,这样学习效果会更好。大数据技术初探

    大数据分布

    过去几年到现在的所谓的大数据时代,先进的信息技术在移动互联网、物联网、云计算、人工智能领域、机器人、大数据、火又一个接一个,什么是大数据,大数据技术类包括那些,他们中的许多人都是根据自己的熟悉该领域盲人摸象估计。

    从DT以下(数据技术,数据技术)技术,系统地介绍了大数据的普遍看法是什么,包括核心技术、各领域的关系:首先我们说机器学习,机器学习(机器学习),是计算机科学统计的一门交叉学科,其核心目标是通过优化映射的数据,训练函数实现,评价模式我,和一系列的自动分类和预测算法,让计算机具有数据保存功能;机器学习领域包括各种智能算法、分类、聚类、回归和相关分析,对每一类下有很多算法的支持,支持向量机,神经网络,logistic回归,EM、决策树、贝叶斯网络、随机森林、LDA、十或20网络排名算法,只是冰山一角角尖;在计算机智能机器学习为核心,深入学习,核心数据挖掘、商业智能、人工智能、大数据的核心技术,如机器学习、机器学习是用于图像处理处理和机器视觉识别,机器学习是用来模拟自然语言处理人类语言,自然语言处理是机器视觉和一般数据分析、人工智能技术支持的核心数据挖掘,机器学习数据挖掘和商业智能技术的肺。

    知识

    深入学习(深学习)是机器学习的一个分支,它是非常热门的,深层学习是基于神经网络算法,经过几十年的分类和识别,在图像数据的语音识别的条件下,取得了良好的效果,有望成为人工智能核心技术的一个突破。因此,科研机构和IT巨头正在做相关的研究和开发工作,投入了大量的人力和物力。数据挖掘(数据挖掘)是一个非常宽泛的概念。

    与采矿相似,我们需要从大量的石头中挖出大量的石头,从大量的数据中挖掘出有价值的、有规律的信息。数据挖掘的核心技术是机器学习领域。例如,深学习是机器学习的一种比较火的算法,当然它也可以用于数据挖掘。此外,传统的商业智能(BI)领域还包括数据挖掘,OLAP多维数据分析可以挖掘和分析,甚至可以对excel的基本统计分析进行挖掘。关键在于你的技术能真正挖掘出有用的信息,如果信息包含在数据挖掘中,那么这些信息可以增强你的决策指导。人工智能(AI)是一个伟大的概念。

    工程师

    智能机器的最终目标是拟人化。机器可以做同样的事情。人的力量只有几瓦,能处理各种复杂的问题和惊人的事情。虽然机器的计算能力强于人类,但人类的理解、感知推理、记忆和幻觉以及心理功能都是D。

  • ?

    19款最好用的免费数据挖掘工具大汇总(干货)

    国家

    展开

    数据在当今世界意味着金钱。随着向基于app的世界的过渡,数据呈指数增长。然而,大多数数据是非结构化的,因此需要一个过程和方法从数据中提取有用的信息,并将其转换为可理解的和可用的形式。

    数据挖掘或“数据库中的知识发现”是通过人工智能、机器学习、统计和数据库系统发现大数据集中的模式的过程。

    免费的数据挖掘工具包括从完整的模型开发环境如Knime和Orange,到各种用Java、c++编写的库,最常见的是Python。数据挖掘中通常涉及到四种任务:

    分类:将熟悉的结构概括为新数据的任务

    聚类: 在数据中以某种方式查找组和结构的任务,而不需要在数据中使用已注意的结构。

    关联规则学习: 查找变量之间的关系

    回归: 旨在找到一个函数,用最小的错误来模拟数据。

    下面列出了用于数据挖掘的免费软件工具

    数据挖掘工具

    1.Rapid Miner

    Rapid Miner,原名YALE又一个学习环境,是一个用于机器学习和数据挖掘实验的环境,用于研究和实际的数据挖掘任务。毫无疑问,这是世界领先的数据挖掘开源系统。该工具以Java编程语言编写,通过基于模板的框架提供高级分析。

    它使得实验可以由大量的可任意嵌套的操作符组成,这些操作符在XML文件中是详细的,并且是由快速的Miner的图形用户界面完成的。最好的是用户不需要编写代码。它已经有许多模板和其他工具,让我们可以轻松地分析数据。

    2. IBM SPSS Modeler

    IBM SPSS Modeler工具工作台最适合处理文本分析等大型项目,其可视化界面非常有价值。 它允许您在不编程的情况下生成各种数据挖掘算法。 它也可以用于异常检测、贝叶斯网络、CARMA、Cox回归以及使用多层感知器进行反向传播学习的基本神经网络。

    3.Oracle Data Mining

    Oracle。 作为“高级分析数据库”选项的一部分,Oracle数据挖掘功能允许其用户发现洞察力,进行预测并利用其Oracle数据。您可以构建模型来发现客户行为目标客户和开发概要文件。

    Oracle Data Miner GUI使数据分析师、业务分析师和数据科学家能够使用相当优雅的拖放解决方案处理数据库内的数据。 它还可以为整个企业的自动化、调度和部署创建SQL和PL / SQL脚本。

    4. Teradata

    Teradata认识到,尽管大数据是令人敬畏的,但如果您实际上并不知道如何分析和使用它,那么它是毫无价值的。 想象一下,有数百万的数据点没有查询的技能。 这就是Teradata所提供的。它们提供数据仓库,大数据和分析以及市场营销应用程序方面的端到端解决方案和服务。

    Teradata还提供一系列的服务,包括实施,业务咨询,培训和支持。

    5. Framed Data

    这是一个完全管理的解决方案,这意味着你不需要做任何事情,而是坐下来等待见解。 框架数据从企业获取数据,并将其转化为可行的见解和决策。 他们在云中训练、优化和存储产品的电离模型,并通过API提供预测,消除基础架构开销。 他们提供了仪表板和情景分析工具,告诉你哪些公司杠杆是驾驶你关心的指标。

    6. Kaggle

    Kaggle是全球最大的数据科学社区。 公司和研究人员张贴他们的数据,来自世界各地的统计人员和数据挖掘者竞相制作最好的模型。

    Kaggle是数据科学竞赛的平台。 它帮助您解决难题,招募强大的团队,并扩大您的数据科学人才的力量。

    3个步骤的工作 -

    上传预测问题

    提交

    评估和交流

    7. Weka

    WEKA是一个非常复杂的数据挖掘工具。 它向您展示了数据集、集群、预测建模、可视化等方面的各种关系。您可以应用多种分类器来深入了解数据。

    8. Rattle

    Rattle代表R分析工具轻松学习。 它提供数据的统计和可视化汇总,将数据转换为可以轻松建模的表单,从数据中构建无监督模型和监督模型,以图形方式呈现模型的性能,并对新数据集进行评分。

    它是一个使用Gnome图形界面在统计语言R编写的免费的开源数据挖掘工具包。 它运行在GNU / Linux,Macintosh OS X和MS / Windows下。

    9. KNIME

    Konstanz信息采集器是一个用户友好、可理解、全面的开源数据集成、处理、分析和探索平台。它有一个图形用户界面,帮助用户方便地连接节点进行数据处理。

    KNIME还通过模块化的数据流水线概念集成了机器学习和数据挖掘的各种组件,并引起了商业智能和财务数据分析的注意。

    10. Python

    作为一种免费且开放源代码的语言,Python通常与R进行比较,以方便使用。 与R不同的是,Python的学习曲线往往很短,因此成了传奇。 许多用户发现,他们可以开始构建数据集,并在几分钟内完成极其复杂的亲和力分析。 只要您熟悉变量、数据类型、函数、条件和循环等基本编程概念,最常见的业务用例数据可视化就很简单。

    11. Orange

    Orange是一个以Python语言编写的基于组件的数据挖掘和机器学习软件套件。它是一个开放源码的数据可视化和分析的新手和专家。数据挖掘可以通过可视化编程或Python脚本进行。它还包含了数据分析、不同的可视化、从散点图、条形图、树、到树图、网络和热图的特征。

    12. SAS Data Mining

    使用SAS Data Mining商业软件发现数据集模式。 其描述性和预测性建模提供了更好的理解数据的见解。 他们提供了一个易于使用的GUI。 他们拥有自动化的数据处理工具,集群到最终可以找到正确决策的最佳结果。 作为一个商业软件,它还包括可升级处理、自动化、强化算法、建模、数据可视化和勘探等先进工具。

    13. Apache Mahout

    Apache Mahout是Apache软件基金会(Apache Software Foundation)的一个项目,用于生成主要集中在协作过滤、聚类和分类领域的分布式或其他可伸缩机器学习算法的免费实现。

    Apache Mahout主要支持三种用例:建议挖掘采取用户行为,并尝试查找用户可能喜欢的项目。 集群需要 文本文档,并将它们分组为局部相关的文档。 分类从现有的分类文档中学习到特定类别的文档是什么样子,并能够将未标记的文档分配给(希望)正确的类别。

    14. PSPP

    PSPP是对采样数据进行统计分析的程序。 它有一个图形用户界面和传统的命令行界面。 它用C语言编写,使用GNU科学图书馆的数学例程,并绘制UTILS来生成图表。 它是专有程序SPSS(来自IBM)的免费替代品,可以自信地预测接下来会发生什么,以便您可以做出更明智的决策,解决问题并改进结果。

    15. jHepWork

    jHepWork是一个免费的开放源代码数据分析框架,它是为了使用开放源代码软件包和可理解的用户界面创建一个数据分析环境,并创建一个与商业程序相竞争的工具。

    JHepWork显示数据集的交互式2D和3D图,以便更好地分析。 Java中实现了数字科学库和数学函数。 jHepWork基于高级编程语言Jython,但Java编码也可用于调用jHepWork数值库和图形库。

    16. R programming Language

    为什么R是这个名单上免费数据挖掘工具的超级巨星?它是免费的、开源的,并且很容易为那些没有编程经验的人挑选。实际上,有数以千计的库可以集成到R环境中,使其成为一个强大的数据挖掘环境。它是一个免费的软件编程语言和软件环境,用于统计计算和图形。

    在数据采矿者中广泛使用R语言进行统计软件和数据分析。近年来,易用性和可扩展性大大提高了R的知名度。

    17. Pentaho

    Pentaho为数据集成,业务分析和大数据提供了一个全面的平台。 有了这个商业工具,你可以轻松地融合任何来源的数据。 深入了解您的业务数据,为未来做出更准确的信息驱动决策。

    18. Tanagra

    TANAGRA是一个用于学术和研究目的的数据挖掘软件。 有探索性数据分析,统计学习,机器学习和数据库领域的工具。 Tanagra包含一些监督学习,但也包括其他范例,如聚类,因子分析,参数和非参数统计,关联规则,特征选择和构建算法。

    19. NLTK

    自然语言工具包,是一套用于Python语言的符号和统计自然语言处理(NLP)的库和程序。 它提供了一个语言处理工具库,包括数据挖掘,机器学习,数据报废,情感分析和其他各种语言处理任务。 构建python程序来处理人类语言数据。

  • ?

    基于大数据平台的数据分析

    不知火

    展开

    标签 | 大数据 架构

    作者 | 张逸

    无论是采集数据,还是存储数据,都不是大数据平台的最终目标。失去数据处理环节,即使珍贵如金矿一般的数据也不过是一堆废铁而已。数据处理是大数据产业的核心路径,然后再加上最后一公里的数据可视化,整个链条就算彻底走通了。

    数据处理的分类

    如下图所示,我们可以从业务、技术与编程模型三个不同的视角对数据处理进行归类:

    业务角度的分类与具体的业务场景有关,但最终会制约技术的选型,尤其是数据存储的选型。例如,针对查询检索中的全文本搜索,ElasticSearch会是最佳的选择,而针对统计分析,则因为统计分析涉及到的运算,可能都是针对一列数据,例如针对销量进行求和运算,就是针对销量这一整列的数据,此时,选择列式存储结构可能更加适宜。

    在技术角度的分类中,严格地讲,SQL方式并不能分为单独的一类,它其实可以看做是对API的封装,通过SQL这种DSL来包装具体的处理技术,从而降低数据处理脚本的迁移成本。毕竟,多数企业内部的数据处理系统,在进入大数据时代之前,大多以SQL形式来访问存储的数据。大体上,SQL是针对MapReduce的包装,例如Hive、Impala或者Spark SQL。

    Streaming流处理可以实时地接收由上游源源不断传来的数据,然后以某个细小的时间窗口为单位对这个过程中的数据进行处理。消费的上游数据可以是通过网络传递过来的字节流、从HDFS读取的数据流,又或者是消息队列传来的消息流。通常,它对应的就是编程模型中的实时编程模型。

    机器学习与深度学习都属于深度分析的范畴。随着Google的AlphaGo以及TensorFlow框架的开源,深度学习变成了一门显学。我了解不多,这里就不露怯了。

    机器学习与常见的数据分析稍有不同,通常需要多个阶段经历多次迭代才能得到满意的结果。下图是深度分析的架构图:

    针对存储的数据,需要采集数据样本并进行特征提取,然后对样本数据进行训练,并得到数据模型。倘若该模型经过测试是满足需求的,则可以运用到数据分析场景中,否则需要调整算法与模型,再进行下一次的迭代。

    编程模型中的离线编程模型以Hadoop的MapReduce为代表,内存编程模型则以Spark为代表,实时编程模型则主要指的是流处理,当然也可能采用Lambda架构,在Batch Layer(即离线编程模型)与Speed Layer(实时编程模型)之间建立Serving Layer,利用空闲时间与空闲资源,又或者在写入数据的同时,对离线编程模型要处理的大数据进行预先计算(聚合),从而形成一种融合的视图存储在数据库中(如HBase),以便于快速查询或计算。

    场景驱动数据处理

    不同的业务场景(业务场景可能出现混合)需要的数据处理技术不尽相同,因而在一个大数据系统下可能需要多种技术(编程模型)的混合。

    场景1:某厂商的舆情分析

    某厂商在实施舆情分析时,根据基于需求,与数据处理有关的部分就包括:语义分析、全文本搜索与统计分析。通过网络爬虫抓取过来的数据会写入到Kafka,而消费端则通过Spark Streaming对数据进行去重去噪,之后交给SAS的ECC服务器进行文本的语义分析。分析后的数据会同时写入到HDFS(Parquet格式的文本)和ElasticSearch。同时,为了避免因为去重去噪算法的误差而导致部分有用数据被“误杀”,在MongoDB中还保存了一份全量数据。如下图所示:

    场景2:Airbnb的大数据平台

    Airbnb的大数据平台也根据业务场景提供了多种处理方式,整个平台的架构如下图所示:

    Panoramix(现更名为Caravel)为Airbnb提供数据探查功能,并对结果进行可视化,Airpal则是基于Web的查询执行工具,它们的底层都是通过Presto对HDFS执行数据查询。Spark集群则为Airbnb的工程师与数据科学家提供机器学习与流处理的平台。

    大数据平台的整体结构

    行文至此,整个大数据平台系列的讲解就快结束了。最后,我结合数据源、数据采集、数据存储与数据处理这四个环节给出了一个整体结构图,如下图所示:

    这幅图以查询检索场景、OLAP场景、统计分析场景与深度分析场景作为核心的四个场景,并以不同颜色标识不同的编程模型。从左到右,经历数据源、数据采集、数据存储和数据处理四个相对完整的阶段,可供大数据平台的整体参考。

  • ?

    数据分析篇:用户增长分析——用户分群分析

    黎又菡

    展开

    在产品的增长分析当中,想关注符合某些条件的一部分用户,不仅想知道这些人的整体行为(访问次数,访问时长等),还希望知道其中差异较大的细分群体。用户分群方法,能帮助我们对差异较大的群体分别进行深入分析,从而探究指标数字背后的原因,探索实现用户增长的途径。

    用户分群的应用场景

    在日常的数据工作中,我们经常接到这样的需求:想关注符合某些条件的一部分用户,不仅想知道这些人的整体行为(访问次数,访问时长等),还希望知道具体是哪些人符合这些条件。然后查看这些人的数据导出用户名单,针对性的发送tips消息。有时还想进一步查看某些人在使用某功能上的具体操作行为。

    用户分群,就是用来满足这类需求的工具方法,它能帮助我们对差异较大的群体分别进行深入分析,从而探究指标数字背后的原因,探索实现用户增长的途径。

    如用户画像分群,核心价值在于精细化的定位人群特征,挖掘潜在的用户群体。使网站、广告主、企业及广告公司充分认知群体用户的差异化特征,根据群体的差异化特征,帮助客户找到营销机会、运营方向,全面提高客户的核心影响力。

    用户分群

    用户分群的5个类型

    类型一:不分群,如全量活跃用户投放,群发短信等,缺点是没有针对性,容易引起用户反感。

    类型二:用户基本信息分群,如根据用户注册的信息分群。相比不分群,这种方法已具备一定的针对性, 但是由于对用户不是真正了解,产生不了很好的结果预期。

    类型三:用户画像分群,如年龄、性别、地域、用户偏好等,画像建设的焦点是为用户群打“标签”。

    一个标签通常是人为规定的高度精炼的特征标识,最后将用户分群的标签综合,即可勾勒出该用户群的立体“画像”。画像分群让我们真正了解了用户的某些特征,对业务推广帮助很大。

    类型四:根据用户行为进行分群,此阶段会在画像分群的基础上关注用户的行为特征, 如根据用户的注册渠道和活跃习惯,制定不同的营销推广策略。

    类型五:聚类和预测建模分群,聚类建模可以根据用户的综合特征指标,将用户分为不同的群体,如将用户划分为娱乐型、挂机型、社交型、办公型等;

    预测建模即尝试去猜测用户下一步的态度与行为(例如想知道什么,想做什么)。正因如此,它对将复杂的行为过程变为营销自动化,是十分有帮助的。

    常见的用户分群维度

    1. 统计指标:年龄,性别,地域

    2. 付费状态:免费,试用,付费用户

    3. 购买历史:未付费用户,一次付费用户,多次付费用户

    4. 访问位置:用户使用产品的区域位置

    5. 使用频率:用户使用产品的频率

    6. 使用深度:轻度,中度,重度用户

    7. 广告点击:用户点击了广告 vs 未点击广告

    常用的聚类分群方法介绍

    上面介绍了一些关于分群的方法和思路, 接下来重点讲解一下用户聚类分群,聚类分群可分为层次聚类(合并法,分解法,树状图)和非层次聚类(划分聚类,谱聚类等),而较常用的互联网用户聚类方法为K-means聚类方法和两步聚类法(均为划分聚类)。

    聚类分析的特征:

    简单、直观;

    主要应用于探索性的研究,其分析的结果可以提供多个可能的解,选择最终的解需要研究者 的主观判断和后续的分析;

    不管实际数据中是否真正存在不同的类别,利用聚类分析都能得到若干类别的解;

    聚类分析的解完全依赖于研究者所选择的聚类变量,增加或删除一些变量对最终的解都可能产生实质性的影响;

    研究者在使用聚类分析时应特别注意可能影响结果的各个因素;

    异常值和特殊的变量对聚类有较大影响;

    当分类变量的测量尺度不一致时,需要事先做标准化处理。

    聚类分析的弱点:

    聚类是一种无监督类分析方法,无法自动发现应该分成多少个类;

    期望能很清楚的找到大致相等的类或细分市场是不现实的;

    样本聚类,变量之间的关系需要研究者决定;

    不会自动给出一个最佳聚类结果。

    聚类分析的应用过程:

    一、选择聚类变量

    在选取特征的时候,我们会根据一定的假设,尽可能选取对产品使用行为有影响的变量,这些变量一般包含与产品密切相关的用户态度、观点、行为。

    但是,聚类分析过程对用于聚类的变量还有一定的要求:

    1、这些变量在不同研究对象上的值具有明显差异;

    2、这些变量之间不能存在高度相关。

    首先,用于聚类的变量数目不是越多越好,没有明显差异的变量对聚类没有起到实质意义,而且可能使结果产生偏差;

    其次,高度相关的变量相当于给这些变量进行了加权,等于放大了某方面因素对用户分类的作用。

    识别合适的聚类变量的方法:

    1、对变量做聚类分析,从聚得的各类中挑选出一个有代表性的变量;

    2、做主成份分析或因子分析,产生新的变量作为聚类变量。

    二、聚类分析

    相对于聚类前的准备工作,真正的执行过程显得异常简单。数据准备好后,导入到统计工具中跑一下,结果就出来了。这里面遇到的一个问题是,把用户分成多少类合适?

    通常,可以结合几个标准综合判断:

    1、看拐点(层次聚类会出来聚合系数图,一般选择拐点附近的几个类别);

    2、凭经验或产品特性判断(不同产品的用户差异性也不同);

    3、在逻辑上能够清楚地解释。

    聚合系数图

    三、找出各类用户的重要特征

    确定一种分类方案之后,接下来,我们需要返回观察各类别用户在各个变量上的表现。根据差异检验的结果,我们以颜色区分出不同类用户在这项指标上的水平高低。其他变量以此类推。最后,我们会发现不同类别用户有别于其他类别用户的重要特征。

    四、聚类解释和命名

    在理解和解释用户分类时,最好可以结合更多的数据,例如,人口统计学数据、功能偏好数据等等。然后,选取每一类别最明显的几个特征为其命名,大功告成。

    K-means聚类应用案例

    在本案例中,我们首先来看最常用的K-Means聚类法(也叫快速聚类法),这是非层次聚类法当中最常用的一种。

    因其简单直观的计算方法和比较快的速度(相对层次聚类法而言),进行探索性分析时,K-Means往往是第一个采用的算法。并且,由于其广泛被采用,在协作沟通时也节省了不少用于解释的时间成本。

    1、K-means的算法原理:

    a、随机取k个元素,作为k个簇各自的中心。

    b、计算剩下的元素到k个簇中心的相似度,将这些元素分别划归到相似度最高的簇。

    c、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。

    d、将全部元素按照新的中心重新聚类。

    e、重复第4步,直到聚类结果不再变化,然后结果输出。

    假设我们提取到原始数据的集合为(X1, X2, …, Xn),并且每个Xi为d维的向量, K-means聚类的目的就是,在给定分类组数k(k ≤ n)值的条件下,将原始数据分成k类,S = {S1, S2, …, Sk},在数值模型上,即对以下表达式求最小值(μi 表示分类Si 的平均值):

    2、用户分群背景和目标:

    某产品覆盖社会各种群体(不同年龄、不同行业、不同兴趣等),需要将大盘用户进行一定细分,然后针对性的开展运营活动。

    3、聚类变量选取:

    用户画像特征、用户状态特征、用户活跃特征

    4、 聚类分析和结果:

    通过相关性分析和变量重要性分析,剔除部分效果差的变量,然后对剩余11个变量进行多次训练(目标聚类个数,参与的变量,组内个体差异容忍度),最终得出聚类结果。

    用户分群K-means聚类效果

    5、结果解读和命名:

    聚类1:低端低龄群体

    聚类2:学生活跃群体

    聚类3:职场高粘性群体

    聚类4:职场低粘性群体

    聚类5:高龄低活跃群体

    用户分群K-mean聚类结果

    两步聚类和k-means聚类效果对比

    前面谈到的K-Means聚类法有简单、直观和快速的优点。但是其缺点是只能采用数值型变量,不能包含类别变量,并且对异常值非常敏感,离群值很容易严重影响聚类结果。

    并且,当数据集比较大(在腾讯,这种情况很常见),不能把所有数据点都装进内存的时候,K-Means就无法在单机上运行。

    而两步聚类法则克服了以上缺点,可以包含类别变量和数值型变量,并且当硬件条件不足或数据集非常大时,都能顺利运行。

    这种两步聚类法可以看成是改进版BIRCH聚类算法和层次聚类法的结合,先用BIRCH算法中的“聚类特征树”做预聚类,形成子类,然后把子类作为输入,做层次聚类。

    1、两步聚类的原理:

    第一步:预聚类过程:

    构建聚类特征树(CFT),分成很多子类。

    开始时,把某个观测量放在树的根节点处,它记录有该观测量的变量信息,然后根据指定的距离测度作为相似性依据,使每个后续观测量根据它与已有节点的相似性,放到最相似的节点中,如果没有找到某个相似性的节点,就为它形成一个新的节点。

    在这一步当中,离群点将会被识别并剔除,不会像在K-Means当中那么容易地影响结果。

    第二步:正式聚类:

    将第一步完成的预聚类作为输入,对之使用分层聚类的方法进行再聚类(以对数似然函数作为距离的度量)。

    每一个阶段,利用施瓦兹贝叶斯信息准则(BIC)评价现有分类是否适合现有数据,并在最后给出符合准则的分类方案。

    2、 两步聚类的优点:

    a、海量数据处理;

    b、自动标准化数据;

    c、能够处理分类变量和连续变量的混合数据;

    d、可自动丢弃异常值或者将异常值归入最近的类。

    e、可自动确定或者根据业务需要人工指定分类数目;

    3、两步聚类的效果对比:

    对第六点同样的数据进行两步聚类,得到模型最优结果如下:

    用户分群两步聚类效果

    4、两步聚类结果解读:

    聚类1:低端低龄群体

    聚类2:学生或新入职场高活跃群体

    聚类3:青年低活跃群体

    聚类4:青年挂机群体

    聚类5:职场办公群体

    聚类6:高龄低活跃群体

    用户分群两步聚类结果

    业务案例 – 通过K-Means聚类

    业务案例 – 通过K-Means聚类,挖掘特殊行为模式的客户群

    1、业务需求

    在本案中,产品经理希望了解登录不活跃用户的行为模式,并且能针对不同的行为组合,对庞大的用户群体进行细分,从而关注不同群体的不同需求,甚至挖掘垂直领域需求,从而在产品或运营侧采取措施,拉活沉默用户,提高DAU。

    2、分析目标

    a、发现使用行为模式异于大盘典型用户的细分群体

    b、粗估每个细分群体的用户数量

    c、了解每个细分群体的行为特征和用户画像

    d、基于上述结果,在拉活方面,提出产品或运营建议或明确进一步探索的方向

    3、分析过程

    a) 特征提取

    分析聚焦于用户的点击行为。在本例中,考虑到用户行为的典型性,选取了4个完整的周,共28天的数据,并且时间窗当中无任何节日。

    另外,考虑到计算性能和探索性分析需要反复迭代的场景,只从大盘当中随机抽取千分之一的用户作为代表。

    b) 特征筛选

    在特征提取阶段一共提取了接近200个功能点的点击数据。但是这些特征当中,有些覆盖面非常低,只有百分之一的用户在28天当中曾经使用,这些低覆盖的特征会首先被去除。

    另外,前面谈到高度相关的变量也会干扰聚类过程,这里对所有特征对两两进行计算皮尔逊相关系数,对高相关特征(相关系数大于0.5)则只保留其中保留覆盖面最广的特征,以便最大限度地体现用户差异。

    c) 特征改造-探索

    经过上面两步后,笔者曾进行过多次聚类探索,但无一例外,聚类结果都呈现出一个超级大类搭配数十个非常小的小类(几个或十几个用户)。这样的结果,显然与我们的分析目标是想违背的。

    其一,这里挖掘出的小群体体积太小,从业务角度来说没有价值;其二,超级大类基本等同与大盘用户,没有能找出其中的用户差异。

    为什么会有这样的结果呢,主要是因为点击行为基本上遵循的是幂率分布,大量用户集中在低频次区间,而极少量用户却会有极高的频次,这样在典型的聚类算法中,高频次用户都会被聚集成人数极少的小类,而大量的低频词用户就会被聚集成一个超级大类。

    点击行为分布

    点击行为数K-Means聚类示意图

    对于这种情况,典型的解决方法是对频次取对数,使幂率分布转化为近似的正态分布再进行聚类,在本次研究中,取自然对数后,聚类效果仅有少量改善,但仍然停留在一个超级大类加上若干人数极少的小类的情况。

    背后原因,是点击行为数据的特点之一:核心功能和热门项目点击人数极多,而相对冷门的功能则有大量的0值。这样的情况下,取对数是没有改善的。

    打开次数分布

    打开次数分布(自然对数变换)

    回到本次分析的目标当中,我们需要“发现使用行为模式异于大盘典型用户的细分群体”,如果丢弃这些冷门功能只看热门选项,则无法找出一些相对小众的行...

  • ?

    9种常用数据分析方法

    卫山菡

    展开

    数据分析是从数据中提取有价值信息的过程,过程中需要对数据进行各种处理和归类,只有掌握了正确的数据分类方法和数据处理模式,才能起到事半功倍的效果,以下是数据分析员必备的9种数据分析思维模式:

    1. 分类

    分类是一种基本的数据分析方式,数据根据其特点,可将数据对象划分为不同的部分和类型,再进一步分析,能够进一步挖掘事物的本质。

    2. 回归

    回归是一种运用广泛的统计分析方法,可以通过规定因变量和自变量来确定变量之间的因果关系,建立回归模型,并根据实测数据来求解模型的各参数,然后评价回归模型是否能够很好的拟合实测数据,如果能够很好的拟合,则可以根据自变量作进一步预测。

    3. 聚类

    聚类是根据数据的内在性质将数据分成一些聚合类,每一聚合类中的元素尽可能具有相同的特性,不同聚合类之间的特性差别尽可能大的一种分类方式,其与分类分析不同,所划分的类是未知的,因此,聚类分析也称为无指导或无监督的学习。

    数据聚类是对于静态数据分析的一门技术,在许多领域受到广泛应用,包括机器学习,数据挖掘,模式识别,图像分析以及生物信息。

    4. 相似匹配

    相似匹配是通过一定的方法,来计算两个数据的相似程度,相似程度通常会用一个是百分比来衡量。相似匹配算法被用在很多不同的计算场景,如数据清洗、用户输入纠错、推荐统计、剽窃检测系统、自动评分系统、网页搜索和DNA序列匹配等领域。

    5. 频繁项集

    频繁项集是指事例中频繁出现的项的集合,如啤酒和尿不湿,Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集,目前已被广泛的应用在商业、网络安全等领域。

    6. 统计描述

    统计描述是根据数据的特点,用一定的统计指标和指标体系,表明数据所反馈的信息,是对数据分析的基础处理工作,主要方法包括:平均指标和变异指标的计算、资料分布形态的图形表现等。

    7. 链接预测

    链接预测是一种预测数据之间本应存有的关系的一种方法,链接预测可分为基于节点属性的预测和基于网络结构的预测,基于节点之间属性的链接预测包括分析节点资审的属性和节点之间属性的关系等信息,利用节点信息知识集和节点相似度等方法得到节点之间隐藏的关系。与基于节点属性的链接预测相比,网络结构数据更容易获得。复杂网络领域一个主要的观点表明,网络中的个体的特质没有个体间的关系重要。因此基于网络结构的链接预测受到越来越多的关注。

    8. 数据压缩

    数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。数据压缩分为有损压缩和无损压缩。

    9. 因果分析

    因果分析法是利用事物发展变化的因果关系来进行预测的方法,运用因果分析法进行市场预测,主要是采用回归分析方法,除此之外,计算经济模型和投人产出分析等方法也较为常用。

    以上是数据分析员应熟练掌握的9种数据分析思维方法,数据分析员应根据实际情况合理运用不同的方法,才能够快速精确的挖掘出有价值的信息!

  • ?

    四种常用而且简单的业务数据分析方法

    乔飞珍

    展开

    在我们日常工作中经常需要用到数据分析,但一些如回归,聚类、概率分析方法比较复杂,学习成本高,也不一定能用得上。实际分析的时候,有四种很简单的分析方法非常实用,这四种就是:对比、细分、转化和分类。只要掌握了这四种思想,基本上已经可以应付日常的分析工作了。

    一、对比

    对比又可以分为纵向对比和横向对比,指标间的横向对比帮助我们认识数据的合理性和分析是否有问题,而指标纵向的对比,如在时间维度上的对比,既可以做趋势分析也可以判断是否达到预期值。

    如店铺的订单量,可以把最近30天的订单显示在坐标轴上,这样就可以很明显的看到最近的订单数量是否达到了预期,当然我们也可以以周或者月(或者季度,年等等)为单位。做对比一定要考虑实际的场景,因为今天和昨天的性质可能未必一样,例如今天可能是周六,或者恰好是节假日等等。所以我们在做纵向对比的时候,两个对比的数据是否合理,是否是同一性质。比如看最近30天的趋势数据,我们还可以考虑环比和同比,今天和上个月的今天,今年的双11和去年的双11进行对比。横向的对比,比如一个地区这周的成交额上涨了10%,那当地的子公司是不是应该高兴呢?但是例如其它子公司的店铺这周的成交额都上涨了20%!那这个子公司可能已经被其它子司拉大了距离。也就是说,我们对一个数据结果判断好不好,这是需要一个参照物的。

    二、拆解

    通过拆解方法我们对分析对象进行逐步拆分,最终定位到问题点。拆解的角度可以有很多,越细分越能准确描述问题。比如零售中的人货场分析,就是将零售中的问题,逐步定位某一个或几个细节上的问题,最终找出成本最低的解决方式。举个栗子,通过报表知道了这个月成交额下降了这个问题后,现在我们用拆解来找出问题的所在:

    成交额 = 客单价 X 客户数。对比客单价和客户数的趋势,就可以判断出影响成交额变化的主要因素是什么,如果是客户数问题,我们则对客户数进行细分,如果是客单价问题,则对客单价进行细分。

    客户数 = 新客户 + 老客户。老客户 = 二次成交客户 + 多次成交客户

    一段时间内的新客户反映的是电商的引流效果,而老客户反馈的是电商的产品质量,服务质量和客户维护营销等。

    客单价 = 成交价 X 人均成交数。 均成交数这是电商中一个非常值得关注的指标,它能最直接地反馈出电商的服务质量和客户维护营销等方面的效果,如果该值过小表明电商的客户流失率很大,应该重点关注。

    成交价 = 件单价 X 连带率。 成交价反馈的通常是导购的能力,促销活动的效果等,成交价的上升或者下跌,反映的问题可能很多,对其进行分解后就很明确了。件单价的变化通常是有促销的力度,商品结构和消费结构(例如季节因素等)变化引起的。带率这个反馈的是店铺内导购的能力,或者促销手段(例如买一送一等)的效果,也是店铺管理人员重点要关注的指标。

    拆解的方法其实就是不断用更小的量化指标去细分一个大的指标,从而达到定位问题的目的。

    三、转化

    拆解的方法可以从纵向定位问题,但是单单细分是不够的。这些指标是从哪里来的,每一个步骤的转化率怎么样,哪一个步骤的转化不好,可以改善?这些通过转化都可以分析出来。

    例如我们要分析本周的活跃客户数(有成交的客户数),那么我们就要分析这些活跃的客户数是从哪里来的,梳理一下可以简单分为以下4个步骤:进入平台的客户数 ==》浏览过商品的客户数 ==》下单的客户数 ==》支付成功的客户数。这里4个步骤就会有3个转化率,哪些步骤转化率比较高,哪些步骤转化率比较低,历史趋势怎么样,是否合理,是否有改进的空间等等。通过应用转化的思想,能够有效的指导和优化实际的运营工作。转化的思想就是一种漏斗,每一步其实都会有转化率,通过改善我们的转化率来提高我们的运营业绩。

    四、分类

    分类就是把一些对象,按照某种规则,划分为若干个类别,然后分析各个类别的特征,并以此来指导我们的行动。分类思想的应用很多,例如对客户的分类,我们可以用RFM分析模型,也可以用简单的利用某个指标的值(例如渠道标识,这样我们就可以分析到各个渠道客户的质量等)。基于这些客户的分类,我们就可以进行精准的客户营销了。在电商或者零售业上,我们经常做的分类还有商品分类,经典的有按照品类分类,或者ABC分类,这些对于我们做商品运营都是非常重要的。

    总结:

    以上四种其实都是很简单的数据分析思想,而且在日常的运营中也非常实用,但需要注意的是一定要了解自己的业务,只有深入了解业务,才能很好的运用数据分析,并不是自己知道几种统计学的算法,就能做好业务数据分析了。

  • ?

    数据分析面试总结

    蒙托伊尔

    展开

    欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答、求职一站式搞定!

    本文作者:天善智能学院学员张龙祥。

    原文地址:https://ask.hellobi/blog/zlx19930503/8745

    本人于2018年6月份硕士毕业,2017年,为了找实习找工作四处奔波,前前后后投了100多次简历,面了30多家公司。在这期间,经历的丢手机从人间蒸发的惨状,也经历了两个半月减掉15g体重的神奇现象。总而来说,过程很艰辛,结果还是很美好。下面是我的面试经过。

    第一个单位:北京互联网金融公司。一共有三面,第一面是技术面,是一个男同胞面试的我,首先是来了一个自我介绍,这个自我介绍也是很有讲究,干一行说一行,不相关的废话一字不要提。自我介绍完就开始技术面了,因为这是个金融公司,因此对于分类算法很是注重(大家在面试的时候要针对行业常用算法来进行准备,做到烂熟于心)。问题一:决策树算法中的信息熵具体阐述一下?问题二:决策树算法中ID3、C45、CART算法,根据自己的理解进行简要叙述,并且对剪枝问题进行叙述?问题三:阐述一下自己对过拟合的理解以及一些解决措施?问题四:叙述一下K-means算法的流程?问题五:阐述一下自己对逻辑回归的理解?问题六:模型评估的一些指标?问题七:数据结构中的排序算法说几个,以及时空复杂度?问题八:数据库的连接问题,叙述几个。

    我的回答:前五个问题回答的都可以,我第六个问题说了ROC曲线,我的妈,他让我说横纵坐标,我不记得了,我很直接,就说这个我忘记了,看一下书就可以了,原理我晓得。对于第七个问题,我当时真的很无语,我直接说的“面试官,数据结构我学过,但是四年时间我不记得了,就连最简单的冒泡排序都不记得了,我工程方面用R和Python,如果您招的是要精通C的,那这个岗位不适合我”。最终一面通过。

    第二天下午,是二面,是大数据部门的女总监面试的,先是自我介绍,后来是问了这么一个问题:你的职场规划是什么?讲真,这些问题我和专门的大神聊过,回答的也还不错,当然也是自己的内心想法,只是逻辑更加完善而已。然后就是技术面,一面的有的问题我就不再重复,说了一下组合算法,我实话实说:“当时对于三大组合算法看的还不是很细,马上会进入这方面的学习”,下一个问题是叙述PCA降维技术,我就从特征值、特征向量巴拉巴拉的说。之后女总监说“回去把组合算法搞一下,Python好好看看”我这边通过。

    之后就是HR面,谈了薪资就没啥了。

    总结:

    ①夯实一些名词的含义,比如:评价模型的指标。

    ②近期把组合算法搞定。

    ③过拟合发生的原因以及解决措施梳理一遍。

    第二个单位:杭州互联网金融公司。第一面试的时候,我在无锡接的电话,是个男面试官,人很温和,我就不害怕了。首先自我介绍,之后又是分类算法搞了一圈,还有模型评价的指标,这里有一个KS指标被提到,这个在上面已经说了,就不在赘述。(当你面试较多的时候,你就有一种倒背如流的赶脚,但是你必须沉得住气,慢慢说,这样一二三四的你会更有逻辑性),一面就这样很愉快的结束了。

    那个面试官让我从无锡去杭州面基,我正好第二天去杭州,我说可以的。但是中午到杭州的我和一个网易的朋友吃饭聊天的就超时了,又急急忙忙赶回上海,就错过了去公司的机会。我说明原因之后二面改为电话面试。

    觉得二面的面试官真的很有质量,面试官的语速很快,搞得有点压抑,我适当笑一下,缓解一下气氛。他说了这么一句话我很佩服:我们先不谈别的,从数据处理到建模有一个很重要的特征选取,说一下对特征工程的理解,好高端,我当时有点冒冷汗呀。这个问题得谈了20分钟吧,“L1正则化可以进行特征筛选的原因:从几何和后验概率两个角度”“L1和L2正则化的区别”等等,后面,对于决策树的问题又来了一拨:“决策树算法中的剪枝,预剪枝和后剪枝,自己根据自己的理解来简单叙述”“决策树在连续型变量的处理方面的一些方法”,这方面我们聊得还是很开心,本来以为要结束了,面试官又问了我的研究方向,又被问的有点懵,最后又问了我分布式什么的,我直接说的不会。不过好在面试还是过了。

    总结:把面试中提到的不懂的问题理清楚。

    最后我总结以下几点:

    ①面试单位要看缘分,假如你准备的问题面试官都没问,面试官问的问题你都不会,孩子,这个单位不适合你。

    ②面试的时候,要把面试官引入自己擅长的领域,不要哪里不会点哪里。

    ③向面试官展示最真实的自己。

    ④保证足够的营养,我已经好多年没吃过药了,哇哈哈!

    ⑤重要的是查漏补缺,时间不等人,只争朝夕啊!

    ⑥给大家推荐天善智能,来进行学习,我也会陆续在里面发文章。

    天善学院svip正火爆报名中!包含Excel BI、Python3爬虫案例、Python机器学习、Python数据科学家、大数据体系、数据分析报告、数据分析师体系、深度学习、R语言案例共10套课程,其他课程只需五折即可,欢迎大家关注报名!

  • ?

    Top30数据分析师常见面试题(附答案)!

    褪色

    展开

    【IT168 评论】这是一个用数据说话的时代,也是一个依靠数据竞争的时代。各大互联网公司都在不断完善自己的数据分析团队,数据分析师的薪酬也是水涨船高。业内人士透露,应届毕业生的平均薪资大概在6K左右,1至3年经验的大概在10K到20K之间,5至10年经验的大概在25K以上。薪资还是十分诱人的,那么,如何快速成长为一名年薪百万的数据分析师呢?快来看看,以下30道数据分析相关面试题,你会多少?

    1、分析数据还要写java代码是不是效率有点低?

    2、成为一名数据分析师需要具备哪些技能?

    要成为一名数据分析师,需要掌握丰富的报告软件包(Business Objects),编程语言(XML,Javascript或ETL框架),数据库(SQL,SQLite等);能够准确分析、组织、收集或传播数据;掌握数据库设计,数据模型,数据挖掘等方面的技术知识以及分析大型数据集(SAS,Excel,SPSS等)的统计软件包知识。

    3、分析项目的各个步骤是什么?

    分析项目的各个步骤包括:

    ·问题定义

    ·数据挖掘

    数据准备

    模型化

    数据认证

    实施跟踪

    4、分析的结果数据特别大,在线请求这些结果数据扛不住了,咋搞?

    5、列出数据清理的最佳实践?

    一些数据清理的最佳实践包括:

    按不同的属性排序数据

    对于大数据集,逐步清理并改进数据,直到获得良好的数据质量

    对大型数据集,可以先将其分解为小数据集,使用更少的数据将增加迭代速度

    要处理常见的清理任务,请创建一组实用程序函数/工具/脚本。它可能包括基于CSV文件或SQL数据库重映射值,或者正则表达式搜索和替换,消除所有不匹配正则表达式的值

    如果在数据清理方面存在问题,请按照估计的频率进行安排并解决问题

    分析每列的汇总统计数据(标准差,均值,缺失值的数量)

    保持对每一个清理操作的跟踪,以便可以根据需要更改或删除操作

    6、海量日志数据,提取出某日访问百度次数最多的那个IP。

    7、可用于数据分析的一些最佳工具清单有什么?

    Tableau

    RapidMiner

    OpenRefine

    KNIME

    Google Search Operators

    Solver

    NodeXL

    io

    Wolfram Alpha’s

    Google Fusion tables

    8、数据挖掘和数据分析之间的区别是什么?

    数据挖掘和数据分析之间的区别在于:

    数据分析:针对个别属性的实例分析。提供有关属性的各种信息,如值范围,离散值及其频率,空值的发生,数据类型,长度等。

    数据挖掘:重点关注聚类分析,异常记录检测,依赖关系,序列发现,多个属性之间的关系控制等。

    9、给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?

    10、用于处理分布式计算环境中应用程序大数据集的Apache框架有哪些?

    Hadoop和MapReduce是由Apache开发的用于处理分布式计算环境中应用程序大数据集的编程框架。

    11、腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在40亿个数当中?

    12、解释KNN插补方法是什么?

    在KNN插补中,通过使用与其值缺失的属性最相似的属性值来推断缺少的属性值。通过使用距离函数,确定两个属性的相似度。

    13、数据分析师使用的数据验证方法是什么?

    通常,数据分析师用于数据验证的方法是数据筛选和数据验证。

    14、解释应该如何处理可疑或缺失数据?

    准备提供所有可疑数据信息的验证报告。它应该提供信息,如失败的验证标准以及发生的日期和时间

    有经验的数据分析师应该检查可疑数据以确定其可接受性

    应该找出无效数据并用验证码替换

    对缺失数据进行处理,使用最佳分析策略,如删除,单一插补方法,基于模型的方法等。

    15、如何避免过拟合?

    过拟合表现在训练数据上的误差非常小,而在测试数据上误差反而增大。其原因一般是模型过于复杂,过分得去拟合数据的噪声和outliers。常见的解决办法是正则化:增大数据集,正则化

    16、解释异常值是什么?

    异常值是分析师使用的一个术语,指的是一个远远超出样本总体模式的值。有两种类型的异常值:

    Univariate

    Multivariate

    17、解释分层聚类算法是什么?

    分层聚类算法结合并划分现有的组,创建分层结构并展示组划分或合并的顺序。

    18、解释K均值算法是什么?

    K均值是一种著名的分区方法。对象被分类为属于K个组中的一个,k是先验选择的。

    在K均值算法中:

    簇是球形的:簇中的数据点以该簇为中心

    簇的方差/扩展是相似的:每个数据点属于最接近的簇

    19、数据分析师所需掌握的关键技能是什么?

    数据科学家必须具备以下技能:

    数据库知识

    数据库管理

    数据混合

    数据查询

    数据操作

    预测分析

    基本描述性统计

    预测建模

    高级分析

    大数据知识

    大数据分析

    非结构化数据分析

    机器学习

    演示技巧

    数据可视化

    报告设计

    20、解释协同过滤是什么?

    协同过滤是一种基于用户行为数据创建推荐系统的简单算法。协同过滤最重要的组件是用户对项目的兴趣。

    协同过滤一个很好的例子就是购物网站上出现的类似“为您推荐”的模块,该模块通常会获取用户的浏览记录信息,以弹出用户可能喜欢或需要的商品。

    21、大数据中通常会使用到哪些工具?

    大数据中使用的工具包括:

    Hadoop

    Hive

    Pig

    Flume

    Mahout

    Sqoop

    22、解释什么是KPI,实验设计和80/20规则?

    关键绩效指标(KPI):它代表关键绩效指标(Key Performance Indicator),它是关于业务流程的报告或图表

    实验设计:这是用于分解数据,采样和建立数据以进行统计分析的初始过程

    80/20规则:这意味着你收入的80%来自客户的20%

    23、解释Map Reduce是什么?

    Map-Reduce是一个处理大型数据集的框架,可以将它们分解成子集,在不同的服务器上处理每个子集,然后混合每个子集上获得的结果。

    24、解释聚类是什么?聚类算法的属性?

    聚类是一种应用于数据的分类方法。聚类算法将数据集划分为自然组或集群。

    聚类算法的属性是:

    Hierarchical or flat

    Iterative

    Hard and soft

    Disjunctive

    25、对数据分析师有用的统计方法是什么?

    对数据科学家有用的统计方法是

    贝叶斯方法

    马尔科夫过程

    空间和集群进程

    统计数据,百分位数,异常值检测

    计算技巧等

    简单的算法

    数学优化

    26、时间序列分析是什么?

    时间序列分析可以在频域和时域两个域中完成。在时间序列分析中,可以通过指数平滑,对数线性回归等各种方法分析数据,来预测特定过程输出。

    27、解释空间自相关分析是什么?

    空间自相关分析是地理空间分析的常用形式。它由一系列为不同空间关系计算的估计自相关系数组成。当原始数据表示为距离而不是单个点的值时,它可以用于构建基于距离的数据相关图。

    28、散列表是什么?散列表冲突是什么?如何避免?

    在计算中,哈希表(散列表)是键值对的映射,这是一个用于实现关联数组的数据结构。它使用散列函数来计算一个时隙阵列的索引,从中可以获取所需的值。

    当两个不同的键散列到相同的值时,发生散列表冲突。两个数据不能存储在阵列的同一个插槽中。

    为了避免散列表碰撞,有很多技巧,这里列出两个:

    分离链接:它使用数据结构来存储散列到同一个插槽的多个项目。

    再探测:在找到查找位置的index的index-1,index+1位置查找,index-2,index+2查找,依次类推。这种方法称为线性再探测。

    29、解释 imputation是什么?列出不同类型的插补技术?哪种插补方法更有利?

    在插补过程中,我们用替代值替换丢失的数据。插补技术涉及的类型有:

    单一插补

    热点插补:从随机选择的类似记录中推断缺失值

    冷却板插补:与热点插补相同,但更先进,从其他数据集中选择供体

    平均估算:在所有其他情况下,用该变量的平均值代替缺失值

    回归插补:用基于其他变量的变量预测值替换缺失值

    随机回归:与回归插补一样,但它将平均回归方差加入到回归估计中

    多重插补:与单个插补不同,多重插补会多次估计值

    虽然单一插补法被广泛使用,但并不能反映随机丢失数据所造成的不确定性。因此,在数据丢失的情况下,多重插补更有利。

    30、解释N-gram是什么?

    N-gram是来自给定序列文本或语音的n个项目的连续序列。这是一种以(n-1)形式预测下一个项目的概率语言模型。

分类算法的数据分析

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP