阅读更多

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. 提高测试效率,保证产品质量 各概念解释: 回归测试:项目在发新版本之后对项目之前的功能进行验证,自动化一般只在测试环境回归 压力测试:可以理解多用户同时去操作软件,统计软件服务器处理多用户请求的能力 兼容

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

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

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

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

  • 自动化测试的场景及成本维护怎么做?

    目录1、前言2、执行回归测试3、压测场景执行并发4、UI稳定,接口不断升级5、是否了解自动化风险6、团队成员的资历7、自动化成本投入产出比8、自动化工具的采购9、自动化测试介入阶段10、自动化框架成熟度11、总结作为一名大厂测开,编写自动化脚本,俨然成为一种必备的技能。但是,什么情况下使用自动化,使用自动化的前提条件,却不是很多人都熟知。这就好比,拿到驾照会开车的人很多,但车子何时需要做养护,每个阶段养护内容是什么,应该不是所有驾驶员都知道。所以,为了能彻底搞懂自动化的来龙去脉,我们今天就来聊一聊,自动化的

  • 2024年最全微信公众号 接口测试平台 获取自定义菜单教程,2024年最新推荐给大家

    线、讲解视频,并且后续会持续更新**

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

    每次集成,都可以通过自动化构建,包括编译发布、自动化测试验证,从而可以尽快的发现集成中的一些错误。持续集成是目前相对比较成熟的技术方案,在掌握了这一套持续集成的技术之后,可以在此基础上进一步开发测试工具和测试平台(测试开发的工作),如测试环境管理、配置管理、项目(需求/缺陷)管理、线上问题监控、打点统计等工具平台。作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  • SmartBear举办首场中国线上研讨会:洞察全球自动化测试趋势,探讨提升效率降低成本之道

    总结而言,SmartBear举办的首场中国线上研讨会为我们提供了洞察全球自动化测试趋势的机会,并探讨了提升效率和降低成本的方法。通过选择适合的自动化测试工具、设计可维护的测试用例和运用持续集成和持续交付等最佳实践,我们可以在软件开发过程中实现更高效、更可靠的自动化测试。SmartBear作为软件测试自动化领域的领导者,为我们提供了先进的解决方案和工具,帮助我们应对自动化测试中的挑战并取得成功。通过使用SmartBear的测试工具,开发人员可以轻松地编写和执行自动化测试脚本,提高测试的效率和准确性。

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

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

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

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

  • 测试自动化成本及投资回报率

    ROI,投入产出比,项目需要重点考虑的问题

  • 自动化测试成本与收益

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

  • 如何降低自动化测试成本?

    背景UI自动化是提高测试效率不可少的手段。闲鱼UI自动化之前的情况是脚本维护成本较高,因此减少脚本投入的成本作为提高自动化效率的第一步。设计思路1、monkey大家都了解...

  • 制定自动化测试实施计划

    自动化测试实施计划根据不同公司的情况也许很简单、也许很复杂,简单到可以是几个事项,复杂到也许可以自动化测试可行性分析报告。无论怎样,自动化测试实施计划应该有一个清晰的自动化测试目标。 我们给出几个咨询过程中常问的问题帮助大家梳理出自己的自动化测试目标: 您是如何理解或定义自动化测试的? 您想通过自动化测试解决什么问题? 您的组织对自动测试的期望是什么? 您的自动化测试目标是否能支持达成...

  • 自动化测试成本和收益_评论的成本和收益

    自动化测试成本和收益 与软件开发中的大多数事情一样,进行评论的最终货币是时间。 我们必须投资多少?它们为我们节省了多少? 换句话说: 评论的成本和收益是什么? 费用 初始组成 显然,要使注释在将来对您有所帮助,必须在某个时候编写该注释。 同样清楚的是,评论写得越早,撰写的速度就越快,并且包含的​​信息也就越多,因为它们在作者的脑海中是新鲜的。 成本与代码的复杂性和注释的质量相关。 ...

  • 自动化改造要想取得最大效益,要搞清这几个问题!

    据数据统计,我国连续数年成为全球第一大工业机器人应用市场,机器换人正在各行各业如火如荼地进行。但是机器人产学研联盟在平时调研中发现,一些中小企业对于自动化改造还是一头雾水,不知从哪入手,而一些已经引入机器人的企业,又没有真正地发挥出机器人的作用,造成资源的浪费。今天我们就详解一下,企业要想让自动化改造取得最大效益,应该怎么做。一.分析自己的需求首先,需要确定自己通过自动化改造所期望达到的短期及长期...

  • 自动化比手工测试成本高?使用Selenium评估测试自动化的ROI指标

    跨浏览器测试是一种测试,需要大量的精力和时间。通过不同的浏览器,操作系统,设备,屏幕分辨率测试Web应用程序,以评估针对各种受众的Web内容呈现的过程是一项活动。 特别是如果手动处理,使用Selenium进行的自动跨浏览器测试可以帮助您节省例行测试活动的时间,并帮助您缩短回归测试的时间。但是,人们很少喜欢变化。如果手动测试在您的组织中很流行,那么当您要求他们实施测试自动化时,管理层显然会提出问题。 自动化比手工测试成本高?使用Selenium评估测试自动化的ROI指标 测试自动化虽然非常有益,但通常可能会

  • 自动化测试成本和收益_单元测试–成本与收益

    自动化测试成本和收益 我很长时间以来一直是单元测试的忠实拥护者。 我的博客到处都是关于它的文章 。 如果我看一下过去十年来我的项目中自动化的单元测试是如何进行的,我注意到进行单元测试的意愿并不存在 。 最近,我遇到了马丁·福勒(Martin Fowler),肯特·贝克(Kent Beck)和DHH之间的播客系列 ,这是对DHH的TDD已死,万岁测试的回应。 播客并没有向我透露一些新内容,但它...

  • 对UI自动化测试的一些感悟

    不断发掘自动化测试对各个团队的附加价值,这样才能得到来自四面八方的支持没有将自动化加入项目过程的自动化都达不到预期的效果UI自动化框架把UI自动化框架设计成一个拼图性质的架构。把每个特性都设计成一个独立的部分,然后组装成UI自动化框架: (appium/webdriver)底层操作封装特性 Page Object特性 测试用例管理特性 测试执行引擎特性 测试报告管理特性 测试数据管理特性

Global site tag (gtag.js) - Google Analytics