阅读更多

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 条 请登录后发表评论

发表评论

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

相关推荐

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

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

  • 自动化测试的定位及一些思考_自动化成本 收益曲线,2024年最新大专生三面蚂蚁金服

    即使这样,做为一个有上进心的测试人员,我们也是需要多想想这一块,毕竟这是离我们测试最近的一块“技术沃土”了(之一)。这个只要有一定的技术基础还是能做的,至少有一部分测试人员是能够做接口测试的(话说性能测试就属于一种接口自动化),如果能自主开发或直接引进一套像样的接口自动化工具或框架(工具上来说,市面上也不少),那么就可以开展这部分的工作,我相信大部分公司能做好的自动化测试,应该也是基于这一层的(所以我们建议有条件的话,自动化测试可以先在这一层面开层,当然前提是真有那么多接口或服务需要测试)。

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

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

  • 【测试效率对比】深入分析:为何UI自动化测试的投资回报率通常低于接口自动化测试?

    UI自动化测试真的比较难以实施吗?ROI真的比接口自动化测试低吗?从哪里得出如此结论?得出结论的人是否有真正实施过UI自动化测试呢?这些问题的答案可能不是绝对的,但是有一点可以肯定得出如此解决的人绝对没做过UI自动化测试!为什么题主敢这么说呢,且听题主娓娓道来!日拱一卒无有尽、功不唐捐终入海!

  • 如何评估自动化测试的效益

    评估自动化测试的效益需要从多个方面进行考量,包括测试效率、测试质量、成本效益以及其他相关因素,通过综合评估这些因素,可以更全面地了解自动化测试在项目中的价值和作用。

  • 【笔记】自动化测试概况和认知

    目录前言1、自动化测试真相1.1、自动化并不廉价,相反,自动化很贵1.2、自动化脚本往往没有想象中的那么可靠1.3、自动化测试不是单靠测试就能搞定的事儿2、如何评估自动化收益?2.1、自动化测试的实施成本2.1.1、前期开发成本2.1.2、后期维护成本2.2、自动化测试的运行次数2.3、自动化测试实施成本3、自动化测试工具介绍3.1、单元测试工具3.2、UI自动化测试工具3.3、性能自动化测试工具 《测试架构师修炼之道》是我的一本枕边书,每次看的时候总是有不同的感受。今天来整理下书中提到的自动化测试相关的知

  • 小米测试前辈浅谈,如何调整自动化测试的成本与收益

    Time will tell. 自动化测试成本。这一直是领导们最关心的问题。 因为他们都希望自动化测试带来的收益要远大于所投入的成本。不然怎么体现自动化测试价值?如果没有价值还不如直接手工测试来的干脆。 那么自动化成本有哪些? 1、调研成本; 2、脚本开发维护成本; 3、自动化用例设计与维护成本; 4、资源投入成本。 如何有效降低自动化测试成本呢? 1、 提高调研成本,减少人为因数成本 调研成本省不了,而且要加大投入,如果投入成本不大,选择的工具和框架都不适合自动化的开展,那么自动化测试肯定.

  • 公司想要做自动化测试,那么自动化测试发展和价值回报有哪些?

    因此,可以想的到是,越到后来,其公司规模越来越趋于两极化,大的愈大,小的愈小,就在于其对待产品质量的重视程度上,其测试会越来越得到看重,但其对测试人员的水平会越来越要求高端。8、最后,作为测试人员,眼光要放长远,带着一颗平和的心态,测试不一定比研发差,关键在于自己怎么去对待测试,很多人想做自动化测试,是因为其含有一定的技术水平,孰不知,其道理亦是相通,做一个只会用工具或者只会因为自动化测试而做自动化测试的自动化测试人员,和只会重复测试的手工测试人员,性质是差不多的;不思考,不自动化测试。

  • 自动化测试成本与收益

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

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

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

  • 功能测试自动化的投入和产出

    测试自动化,对于系统性能测试、负载测试等效果是明显的,而且我们也不得不为之。我们知道,没有测试工具进行负载模拟,要通过手工测试完成系统测试任务,几乎是不可能的。但在功能测试中,情况就大不一样了。手工测试在功能测试中的优势还是比较大的,我在“测试方法的辩证统一(之二)”已做了讨论,工具本身并没有想象力和灵活性,而人对界面美观性、逻辑合理性,容易作出判断。所以功能测试自动化主要的应用在回归测试中,而且

  • 自动化测试介绍

    什么是自动化测试?     做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。   首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于

  • 十年软件测试经验分享—写给想要做自动化测试的人

    接触了不少同行,由于他们之前一直做手工测试,现在很迫切希望做自动化测试,其中不乏工作5年以上的人。 本人从事软件自动化测试已经近5年,从server端到web端,从API到mobile,切身体会到自动化带来的好处与痛楚,在此分享一下个人体会。 想做自动化,首先得了解一下自动化测试的一些常见问题: 自动化测试一些问题 1.什么是自动化测试? 自动化测试,顾名思义,自动完成测试工作。通过一些自动化测试工具或自己造轮子实现模拟之前人工点点/写写的工作并验证其结果完成整个测试过程,这样的测试过程,便是自动化测试。自

  • 测试自动化建设成本

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

  • 业务团队如何高效实施自动化测试

    本文来自作者 梁士兴 在 GitChat 上分享「业务团队如何高效实施自动化测试」,「阅读原文」查看交流实录 「文末高能」 编辑 | 嘉仔 摘要 美团酒旅的终端研发团队,在2017年实施了大规模的自动化测试。酒旅的终端研发团队负责美团在住宿、境内度假、大交通方向的业务研发工作,是一支面向业务的平台型团队。 由于其业务属性,客户端一直面临着业务需求压力大、业务需求迭代演

  • 关于自动化测试的收益和内容

    首先我们需要先想清楚做自动化测试核心目标是什么?质量?效率?还是都要?答案肯定是都要,但是在某一个时间段肯定只能择重点在一个方面。那么如何实现既能提高质量,又能提高效率?如果只能选择其一那么目前现阶段优先考虑哪个? 质量是有成本,而且往往这种成本很难用收益来衡量。目前现阶段我们做自动化测试更多是预防,这里就会存在一个难点,预防的成本与收益的不可预估性。比如:我们投入了大量的自动化测试脚本开发,但是无法证明这样做了之后质量越来越好,效率越来越高,这是不一定的。因为有可能随着业务的变化、架构的变化软件本身就在腐

  • 自动化测试的意义在哪里?

    作者:Andy Chen 链接:https://www.zhihu.com/question/19786019/answer/33207262 来源:知乎 有人问:自动化测试的成本高效果差,那么自动化测试的意义在哪呢? 我觉得这个问题带有很强的误导性,是典型的逻辑陷阱之一。“自动化测试的成本高效果差”是真的吗?当然不是。而且我始终相信,回答问题的最好方式是把问题本身弄清楚。也就

  • 关于自动化测试的定位及一些思考

    大家对自动化的理解,首先是想到Web UI自动化,这就为什么我一说自动化,公司一般就会有很多人反对,因为自动化的成本实在太高了,其实自动化是分为三个层面的(UI层自动化、接口自动化、单元测试),不是每个层面的自动化都是遥不可及的,以下标示一下这三个层面的难易程度(网上叫这个为自动化金字塔): 基本上可以肯定的是,单元测试是成本最低的,也是最容易推广,见效最大的...

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

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

  • 自动化测试高手-价值篇

    自动化测试的最终交付价值是什么:自动化测试项目的最终交付价值是它产生的收益,也就是投入回报率比,ROI,一个成功的自动化测试项目必然是获得了高ROI的收益。自动化测试高手就是要做出成功的自动化测试项目,不仅要写代码让自动化测试跑起来,而且要超脱于工具框架的层面,对测试需求和自动化ROI一起抽象建模,对最终ROI负责。

Global site tag (gtag.js) - Google Analytics