阅读更多

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 测试环境要多少?从成本与效率说起

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

  • 自动化的价值

    自动化的价值 传统的自动化价值:. 1) 自动化测试提高效率,缩短测试工作时间 2) 自动化测试和人工测试相比,每一次测试执行的操作时固定的,非常可靠 3) 自动化测试能加大每一轮回归的力度,提高测试的覆盖率 4) 自动化测试具备更好的重现软件缺陷的能力,具有很强的一致性和可重复性 传统自动化ROI(收益和成本)公式: 自动化收益=迭代次数 * 全手动执行成本 – 首次自动化成本 – 维护次数 * 维护成本 如果迭代次数和维护次数近似相等,这个公式可等价为: 比如一个较新的产品: 自动化收益 = 迭代次数

  • 【自动化测试】自动化测试的价值和误区以及如何高效实用地落地自动化测试

    总之,自动化测试是现代软件开发中不可或缺的一部分,它有助于提高软件开发的效率、质量和可靠性。然而,要充分发挥自动化测试的价值,需要合理规划、正确实施,并持续维护和优化自动化测试套件避免这些误区,可以更有效地实施自动化测试,提高软件质量和开发效率因此,自动化是一个复杂的工程实践,它结合了软件开发、测试设计、过程管理、数据分析等多个方面。它要求参与者具备跨领域的知识和技能,而不仅仅是简单的操作能力通过上述步骤,可以更高效实用地落地自动化测试,从而提升软件质量和开发效率。

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

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

  • 为什么需要自动化测试?自动化有哪些优势?

    自动化测试,最近些年可谓是大火。招聘上的要求也好,培训班的广告也罢,比比皆是,足以说明它在业内的火爆程度。

  • 一入测试深似海,从此月薪过两万--自动化测试如何产生价值?

    一、前言 如何让自动化测试产生价值?这是一个恒古不变的话题!只有将自动化切入日常测试中,才能将飘于空中的技术产生实际的价值,无论是DevOps、CICD等其他的一些融合开发的概念,质量的自动化保障都是基础设施。本次主要讲一下现有团队在自动化方面的一些探索和落地。 二、自动化优先 自动化优先,既在QA人员介入测试时,就需要考虑需求自动化测试动作。需求中需要哪种程度的自动化介入,需要哪些自动化测试动作的介入,自动化测试需要哪些前置资源,自动化测试所花费成本,自动化测试在本次需求中的收益...

  • 为什么需要自动化测试

    2.自动比起手工测试脆弱,无法对测试系统的变化做出识别,业界流传:开发者手一抖,自动化测试忙一宿,这也从侧面反应了,自动化测试一直居高不下的事实,原因自动化不具备智能识别,只能按部就班按的测试,没有任何的处理能力;4.自动化可以实现某种测试无法完成或者付出巨大的代价的测试类型,比如关键业务的测试7*24持续运行系统的稳定性和高并发场景的压力测试;3.自动化测试的开发工作量远远大于单次的手工测试,所以只有开发完成的手工测试大于5次,才能收回自动化测试的成本;2.研发和维护周期长,需要频繁地回归测试;

  • 5年经验之谈 —— 为什么要做自动化测试?

    自动化测试是一种软件测试方法,通过编写和使用自动化脚本和工具,以自动执行测试用例并生成结果、自动化旨在替代手动测试过程,提高测试效率和准确性、自动化测试可以覆盖多种测试类型,包括功能测试、性能测试、安全测试等,以确保软件系统在各个方面的质量和稳定性得到验证

  • 自动化测试的概念与意义

    自动化测试不仅是技术实现的堆砌,更是测试策略、团队协作、过程优化的综合体现。合理的测试自动化策略能大幅提升软件开发的效率和质量,但盲目追求自动化而不考虑投入产出比,也可能适得其反。因此,理解自动化测试的分类、合理选择工具、有效集成到开发流程中,是每个软件开发团队走向高效高质量开发的重要步骤。

  • 自动化测试价值与质量

    产品质量很难孤立的去看,不管是自动化测试团队还是业务测试团队,最终的目的都是为了产品质量服务,从而打造很酷很好的产品来赋能客户。但是现实的情况很多时候并不是这样的,往往是测试开发团队会开发很多的工具,也会做很多的自动化测试,业务团队的测试人员并没有感到轻松,随着产品的体系越来越大的时候,这种压力会递增式的增加,在这个过程中,就得需要重新来思考自动化测试的价值和质量内建这部分。 回归到具体的测试本质工作,其实可以总结为测试的工作就是质量管理以及测试效率的提升。质量管理是一个比较大的话题,它包...

  • 为什么学软件测试一定要学自动化?手工测试和自动化测试有什么区别?

    本节内容,将从测试的底层本质出发,让大家真正的理解测试和自动化测试之间的区别。想了解自动化测试概念,那我们一定要先认识一下 软件测试到底是做什么的? 大家都知道一个游戏叫"大家来找茬"。我们看下图,你可以尝试着从找一下左右两张图的不同之处: 其实在我们找两幅图不同之处的过程中,就是进行了一个测试的工作。左边是用户的需求,右边是开发做出来的样子。那软件测试,就是从开发做出来的样子找出与客户需求不一样的地方,一句话概括:软件测试就是大家来找茬。当然此茬非彼茬。软件测试其实就是我们在找软件上面的 bu..

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

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

  • 自动化测试成本与收益

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

  • 自动化测试如何计算ROI

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

  • 浅谈对自动化测试的理解

    1. 自动化主要包含三个层面的自动化:单元测试自动化,接口测试自动化和web测试自动化。 A.  单元测试自动化,调用被测试的类或方法,根据类或方法的参数,传入相应的数据,然后,得到一个返回结果。最终断言返回的结果是否等于预期结果。如果相等,测试通过;如果不相等,测试失败。所以,这里的单元测试关注的是代码的实现与逻辑,一般是由开发来做。 B.  接口自动化,根据接口文档,编写测试用例,根据测试...

  • 自动化测试介绍

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

  • 1.1- 自动化测试的价值与应用

    1.自动化测试的价值 2.什么样的项目适合自动化 3.测试金字塔模型 1.单元测试 2.接口测试 3.UI测试 4.自动化测试的应用。 1.UI自动化测试 2.接口自动化测试 3.性能自动化测试 4.专项测试自动化工具 这个会在后面的性能专项讲解,这次主要讲解UI自动化与接口自动化。 转载于:https://www.cnblog...

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

    大多数开发团队都很欣赏测试和测试自动化的价值,但是当涉及到与之相关的时间和成本时总是望而却步。 了解测试和测试自动化的成本和收益以决定适合给定项目的覆盖级别非常重要。与此同时,QA 团队应该不断评估有助于提高流程效率的新技术,为更少的时间和成本以及更大的测试覆盖率铺平道路。 为什么要编写自动化测试? 测试对于确保软件按照用户期望的方式运行而不出现任何错误至关重要。通过自动化这些测试,开发团队可以加快发布周期。它们提供了一个安全网,让每个人都有信心快速重构代码、添加功能和修复缺陷。 自动化测试的最大好处包括

  • 整体思考自动化测试发展和价值回报(转载)

      很长一段时间,都在思考,怎么能通俗的看待自动化测试的收效   自动化测试到底能不能成为一种趋势?   自动化测试到底能不能形成一种规模?   自动化测试到底能不能成为我们的利器?   自动化测试到底能对我们的职业带来何种发展?   一些官方总是从各种数字上面来说自动化的收效,可是那种计算就真的是准确和令人信服的吗?每个公司的情况不一样,而且每个公司有自己独特的研发模式和流程,而不...

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

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

Global site tag (gtag.js) - Google Analytics