阅读更多

0顶
0踩

互联网
这篇文章由Databricks的Feynman Liang和Joseph Bradley,以及Intel的Yuhao Yang撰写。

在使用LDA之前,请先下载Spark 1.5或是申请试用版的Databricks

人们正在推特上讨论什么呢?为了关注分布式计算,我该阅读哪些资讯文章呢?这些问题都能够被话题模型所解答,它是分析文档集所涵盖话题类别的一种技术。本文将要讨论Spark 1.4和1.5使用强大的隐含狄利克雷分布 (Latent Dirichlet Allocation,LDA)算法对话题模型的性能提升。

Spark 1.4和1.5引入了一种增量式计算LDA的在线算法,在已训练的LDA模型上支持更多的查询方式,以及支持似然率(likelihood)和复杂度(perplexity)的性能评估。我们给出了一个例子,用超过450万条维基百科词条的文档集训练一个话题模型。

话题模型和LDA

话题模型分析一个大规模的文档集,并且自动推测其所讨论的话题。举个例子,我们用Spark的LDA算法训练450万条维基百科词条,可以得到下表中的这些话题。



表一:用维基百科文档集训练得到的LDA话题示例

此外,LDA告诉我们每篇文档分别属于哪些话题;文档X有30%的概率属于话题1(“政治”)以及70%的概率属于话题5(“航线”)。隐含狄利克雷分布(LDA)是实践中最成功的话题模型之一。阅读我们之前的文章了解更多关于LDA的介绍。

一种新的在线变分学习算法

在线变分预测是一种训练LDA模型的技术,它以小批次增量式地处理数据。由于每次处理一小批数据,我们可以轻易地将其扩展应用到大数据集上。MLlib按照 Hoffman论文里最初提出的算法实现了一种在线变分学习算法。

性能对比

上表所示的话题是用新开发的在线变分学习算法训练得到。如果我们对比时间开销,可以发现新算法相比原来的EM算法效率有显著提升:



图1:在线学习算法比之前的EM算法速度更快

实验细节

我们首先对数据预处理,滤去常见的英语停用词,并且将词表限制在10000个常用单词之内。然后用在线LDA优化器迭代100次训练得到100个LDA话题模型。我们的实验在 Databricks上进行,训练用到了16个节点的AWS r3.2x大集群,数据存放在S3。具体代码详见 github。

改进的预测、评估和查询

预测新文档的话题

除了描述训练文档集的话题之外,Spark 1.5支持让用户预测新测试文档所属的话题,使得已训练的LDA模型更有用。

用似然率和复杂度评估模型

在训练完一个LDA模型之后,我们通常关心模型在数据集上的表现如何。我们增加了两种方式来评估效果:似然率复杂度

支持更多的查询方式

新的版本添加了一些新的查询方式,用户可以用在已训练的LDA模型上。例如,现在我们不仅能获得每篇文档的top k个话题(“这篇文档讨论了什么话题?”),也能得到每个话题下排名靠前的文档(“若要学习X话题,我该阅读哪些文档?”)。

运行LDA的小技巧
  • 确保迭代次数足够多。前期的迭代返回一些无用的(极其相似的)话题,但是继续迭代多次后结果明显改善。我们注意到这对EM算法尤其有效。
  • 对于数据中特殊停用词的处理方法,通常的做法是运行一遍LDA,观察各个话题,挑出各个话题中的停用词,把他们滤除,再运行一遍LDA。
  • 确定话题的个数是一门艺术。有些算法可以自动选择话题个数,但是领域知识对得到好的结果至关重要。
  • 特征变换类的Pipeline API对于LDA的文字预处理工作极其有用;重点查看Tokenizer,StopwordsRemover和CountVectorizer接口。

下一步是什么?

Spark贡献者正在积极地优化我们的LDA实现方式。正在进行的工作有:吉布斯采样(一种更慢但是有时更准确的算法),流式LDA算法分层狄利克雷处理(自动选择话题个数)。

感谢

LDA的开发得益于众多Spark贡献者的通力合作。

Feynman Liang、Yuhao Yang、Joseph KBradley等人完成了最近这次优化, 其它众多朋友对早期版本亦有贡献。

原文链接:Large Scale Topic Modeling: Improvements to LDA on Spark(译者/赵屹华 审校/朱正贵 责编/仲浩)

译者简介:赵屹华,搜狗算法工程师,关注大数据和机器学习。
  • 大小: 30.5 KB
  • 大小: 21.6 KB
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 自动化测试的成本与收益

    自动化测试主要形式 1.基于接口 2.基于UI 基于接口的自动化测试,主要是针对服务端逻辑的验证, 分为两种形式 1.各个接口独立测试,不涉及接口间的逻辑调用和数据共享,意在验证各个接口独立的功能是否正常 2.基于场景的接口测试,关注的是场景化,需要对业务流程有一定的熟悉程度,各个接口串联,实现某一个功能场景的验证。 基于UI的自动化测试,主要对模拟页面UI上的点击操作,验证输出结果...

  • 09 测试环境要多少?从成本与效率说起

    在上一篇文章中,我分享了互联网公司测试环境的常见结构,以及对用户来说什么样的测试环境才是好用的。然而对测试环境来说,只是高效好用还不够,还要考虑到成本问题。 效率和成本永远是一对矛盾体。今天,我就从成本和效率出发,和你聊聊构建测试环境时,还需要考虑的其他维度。 测试环境的成本 谈到环境成本,你很自然地就会想到云计算,《持续交付:发布可靠软件的系统方法》一书出版时,云计算还是一个时髦的概念,而...

  • 自动化测试——自动化测试的概念、分类及成本等

    自动化测试概念: 1. 什么是自动化测试 首先探讨的是测试的本质:校验系统能否满足规定的需求,并弄清楚预期结果与实际结果之间的差别 而自动化测试是指让程序代替人工去验证系统功能的过程 2. 自动化测试可以解决什么问题 1. 解决-回归测试 2. 解决-压力测试 3. 解决-兼容性测试 4. 提高测试效率,保证产品质量 各概念解释: 回归测试:项目在发新版本之后对项目之前的功能进行验证,自动化一般只在测试环境回归 压力测试:可以理解多用户同时去操作软件,统计软件服务器处理多用户请求的能力 兼容

  • 自动化测试的成本高效果差,那么自动化测试的意义在哪呢?

    当然他还有另一层意思,就是好的测试用例是没有办法100%被自动化的,测试人员的经验,逻辑判断和探索性的测试方法都不能被有效自动化。作为这个论断的补充和扩展,自动化应该是审视软件研发活动的每一个环节,去发现那些可以被工具化自动化的重复性活动,然后去实现。好的自动化带来的迭代周期的缩短,是可以缩短项目周期,在某些时候能变不能做为能做,进而带来的机会收益是巨大的,也是很难量化的。但是把节省测试的人力成本作为自动化测试的直接目标是错误的,而且是致命的。这个就是一个典型的不懂自动化的团队+期望脱离现实的老板。

  • 自动化测试成本与收益

    在测试领域,很多的测试从业人员都在讨论或者曾经讨论过自动化测试。支持者认为自动化能够提高测试效率,减少枯燥繁琐的用例执行。持反对意见人的当心自动化测试的引入成本太大,反而没有手工测试来的高效。更有人当心自动化测试无法保证软件的质量,其实能否保证软件的质量,不是由自动化测试决定,而是取决于你的用例的设计。对于新的事物,在没有任何实践的基础上不能轻易地下结论...

  • 自动化测试的成本高效果差,那么自动化测试的意义在哪?

    一、为什么自动化测试“投入高”、“效果差” 1. 测试脚本的开发成本不亚于软件代码的开发成本 自动化测试并不适合短期项目或一次性项目,主要原因在于自动化测试脚本的开发和维护与软件代码一样,需要投入技术人员。而且测试脚本受软件需求的影响非常大,如果是短期项目、一次性项目或者需求不稳定的项目,投入自动化测试的成本非常高昂。 如果是短期或者一次性的项目,投入大量的精力开发的自动化测试脚本因为只会使用一次,无法通过多次复用执行来稀释初始投入成本,这种情况下自动化测试的产出远不如手工测试,这就导致了自动化测试投

  • 自动化测试如何计算ROI

    根据以下公式计算ROI(return on investment): ROI=(手工测试成本-自动化测试成本)/自动化测试成本*100% 其中: 手工测试成本=手工用例设计成本+手工测试总执行成本=手工用例设计成本+(手工用例单次执行成本+手工用例单次维护成本+手工用例单次发现问题排查成本)*执行次数  自动化测试成本=自动化测试框架、测试代码首次开发成本+自动

  • 如何降低自动化维护成本?

    自动化测试的根本目标:测试环境中,保证新增接口功能正确性,原有接口的回归(保证原有接口不被修改“坏”);生产环境中,保证接口层面服务可用,功能的正确性(保证服务挂掉时,及时发现)参考自多则惑少则明面对这个问题,首先要思考的是几个问题是:第一、什么项目适合自动化?业界普遍认为一下几种情况比较适合自动化测试:回归测试为主的支持维护项目,即需要长期做支持维护的产品。或者有过去版本需要长期做支持维护的产品...

  • 测试自动化建设成本

    原创:逆熵研习社 本期导读 1.未对成本有认识是建设的第一大障碍; 2.投入产出比是需要考虑的至关重要的要素 ROI=执行次数*(手动回归成本-自动化维护成本)/ (基础建设成本+引入成本+日常维护成本) 自动化建设成本 在投入自动化建设前需要思考下成本与收益的问题,自动化不是银弹,以自动化为基础的CI/CD等都有自己的成本。控制好成本和收益的预期是建设有效用的自动化体系的根本)自动化测试是一个让人又爱有恨的东西,有地方解决了很多问题,而又有不少地方完全成了累赘。经历了这么多年的发展自动化测试依然是许多公司

  • 自动化成本高?那么如何获得最高的投资回报呢?

    原文:https://www.jianshu.com/p/423ae3ba7f5b 大家对自动化的理解,首先是想到WebUI自动化,这就为什么我一说自动化,公司一般就会有很多人反对,因为自动化的成本实在太高了。其实自动化是分为三个层面的(UI层自动化、接口自动化、单元测试),不是每个层面的自动化都是遥不可及的,以下标示一下这三个层面的难易程度(也叫这个为自动化金字塔): 三个层面的自动化测...

  • S/4HANA生产订单增强WORKORDER_UPDATE方法BEFORE_UPDATE参数分析

    题目这个增强的输入参数很恐怖,长长的一串: CALL BADI l_badi->BEFORE_UPDATE EXPORTING IT_PIINSTRUCTIONVALUE = IT_PIINSTRUCTIONVALUE IT_PIINSTRUCTION = IT_PIINSTRUCTION ...

  • 为什么有人不喜欢标准成本?

    许多人都认为成本核算是ERP中十分重要的部分,正在选型的公司也往往对成本功能非常关注。我也认为其十分重要,甚至认为应该把成本核算能否自动完成作为ERP实施是否成功的标志之一。ERP软件中一般都有多种成本核算方法可供选择,通常分为...

  • 如何设计ABAP/4 Query报表

    ABAP/4 Query是sap R/3系统报表开发的一种工具。开发人员可以用它来创建简单的报表。用ABAP/4 Query创建报表主要包括一下步骤:1、创建用户组(User Group)(TCODE:SQ03)2、创建Infoset(TCODE:SQ02) 3、分配用户和功能区4、创建基于Infoset的报表(TCODE:SQ01)1、创建用户组(User Group)(TCODE:SQ03

  • 计划订单分析

    目前SAP计划订单数据包括几个大类: 1、色粉一步料信息:因为色粉一步料是虚件,但是因为色粉从成品下单到色粉bom生成之间的时间差,导致了色粉一步料虚件都在计划订单里面有,一旦对色粉一步料建立bom并经过一次MRP运算后,有b...

  • K_车间材料消耗汇总报表(精细)

    该报表是用来展示车间材料消耗差异的。对于推式物料来说,用来检讨该作业上的需求数量和实际的发料数量的差异,对于拉式物料而言,则是直接看盘点差异的数量。因此,对于新的计划组,必须设定盘点仓和计划组的对应关系。否则该报...

  • ABAP报表中负值展示问题的处理方法

    现象描述 在使用ABAP报表展示数据的时候会涉及到金额类字段,在手动计算金额的时候,有时会发生存在负值而无法正常展示的情况。  处理过程 ABAP报表的数据展示常用的方法有两种,分别是表控制和ALV 1、使用ALV展示时负值不会报错,但是金额字段的负号默认显示在结尾如图 如果希望按照习惯将负号置于数字前段,则需要手动编写一个转换例程的函数来实现。 首先创建一个函数,命名规则CON...

  • 生产订单相关信息的获取

    1: 工序获取afko-aufpl = afvc-aufpl => afvc-vornr  afvc- ltxa1  工序短文本  "附加afvc-arbid                                     => afvc-lar01  活动类型2:工作中心afvc-arbid = crhd-objid => crhd-ARBPL "附加crhd-werks

  • 生产报表数据库出现了活动事务的回滚段损坏(一)

    接到业务人员的报告,说是报表数据库最近很慢,于是登陆上去检查。结果确意外的发现有一个异常的活动事务:START_TIME              SID SERIAL# SEGMENT_ID SEGMENT_NAME PROCESS      SPID         SES_ADDR         LOCKWAIT          USED_UBLK------------------

  • kkb-2-01-vue组件化

    bbbbbbb

Global site tag (gtag.js) - Google Analytics