云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云解析_云服务器的租用_试用

小七 141 0

大规模主题建模:apachespark上LDA的改进

本博客由Databricks的Feynman Liang和Joseph Bradley以及Intel的Yuhao Yang撰写。要开始使用LDA,请下载apachespark1.5或立即注册参加为期14天的Databricks免费试用。人们在Twitter上讨论什么?为了赶上分布式计算,我应该阅读哪些新闻文章?这些问题可以通过主题模型来回答,主题模型是一种分析文档集合中的主题的技术。这篇博客文章讨论了apachespark1.4和1.5中使用强大的潜在Dirichlet分配(LDA)算法进行主题建模的改进。spark1.4和1.5引入了一种在线算法,用于增量运行LDA,支持对经过训练的LDA模型的更多查询,以及诸如似然和复杂度等性能指标。我们举了一个例子,在450万篇维基百科文章的数据集上训练一个主题模型。主题模型与LDA主题模型获取一组文档,并自动推断正在讨论的主题。例如,当我们在包含450万篇维基百科文章的数据集上运行Spark的LDA时,我们可以获得下表中的主题。表1:从Wikipedia文章数据集中学习的示例LDA主题此外,LDA会告诉我们每个文档涉及哪些主题;文档X可能有30%是关于主题1("政治")的,70%是关于主题5("航空公司")的。潜在Dirichlet分配(LDA)是实践中最成功的主题模型之一。请参阅我们之前在LDA上的博客文章以了解更多信息。一种新的在线变分学习算法在线变分推理是一种通过小批量增量处理数据来学习LDA模型的技术。通过小批量处理,我们可以很容易地扩展到非常大的数据集。MLlib实现了一种用于执行在线变分推理的算法,该算法最初由Hoffman等人描述。性能比较前面显示的主题表是使用新开发的在线变分学习算法学习的。如果我们比较计时结果,我们可以看到使用新的在线算法比旧的EM算法有显著的加速:图1:在线学习算法比早期的EM算法学习更快实验细节我们首先对数据进行预处理,过滤出常见的英语停止词,并将词汇量限制在10000个最常见的单词以内。然后,我们使用在线LDA优化器为100个迭代训练了一个100个主题的LDA模型。我们在一个16节点的awsr3.2x大型集群上运行了我们的实验,数据存储在S3中。对于实际的代码,请参见下面的Github要点。改进预测、度量和查询预测新文档的主题除了描述训练集中的主题外,spark1.5允许用户预测新测试文档的主题,从而使经过训练的LDA模型更加有用。用可能性和困惑来评估你的模型在学习了LDA模型之后,我们通常对模型与数据的拟合程度感兴趣。我们增加了两个新的指标来评估这一点:可能性和困惑。进行更多查询这个新版本还添加了一些用户可以在经过训练的LDA模型上执行的新查询。"我们现在可以获得每个文档的最上面的主题是什么?"以及每个主题的顶级文档("要了解主题X,我应该阅读哪些文档?")。运行LDA的提示确保运行足够的迭代。早期迭代可能返回无用的(例如非常相似的)主题,但是运行更多的迭代可以显著地改善结果。我们注意到这对新兴市场尤其如此。要处理特定于数据的停止字,一个常见的工作流程是运行LDA,查看主题,识别出现在主题中的停止字,将其过滤掉,然后再次运行LDA。选择主题的数量是一门艺术;有一些算法可以自动选择,但是领域专业知识对于获得好的结果至关重要。Pipelines-API特性转换器对于预处理文本以准备LDA非常有用;请参见Tokenizer、StopwordsRemover和CountVectorizer。下一步是什么?Spark贡献者正在积极改进我们的LDA实现。一些正在进行的工作包括:Gibbs采样(一种较慢但有时更精确的算法)、流式LDA算法和分层Dirichlet进程(用于自动选择主题数量)。致谢LDA的开发是许多Spark贡献者之间的合作。Feynman Liang、Yuhao Yang、Joseph K.Bradley和其他人最近进行了改进,许多其他人也对早期的工作做出了贡献。免费试用Databricks。今天就开始吧