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

阿里云_被对方服务器退回_高性能

小七 141 0

LDA主题建模:MLlib满足GraphX

主题模型自动推断文档集合中讨论的主题。这些主题可以用来总结和组织文档,或者在机器学习(ML)管道的后期阶段用于特征化和降维。在apachespark1.3中,MLlib现在支持潜在Dirichlet分配(LDA),这是最成功的主题模型之一。LDA也是第一个基于GraphX的MLlib算法。在这篇博文中,我们提供了LDA及其用例的概述,并解释了GraphX如何成为实现的自然选择。主题模型在高层次上,主题建模的目标是在非结构化文档集合中找到结构。在学习了这个"结构"之后,主题模型可以回答这样的问题:documentx讨论的是什么?文件X和Y有多相似?如果我对主题Z感兴趣,我应该首先阅读哪些文档?LDA公司主题建模是一个非常广泛的领域。apachespark1.3添加了潜在的Dirichlet分配(LDA),可以说是迄今为止最成功的主题模型。LDA最初是为文本分析和群体遗传学而发展的,后来被扩展并应用于从时间序列到图像分析的许多应用。首先,让我们从文本分析的角度来描述LDA。什么是主题?LDA没有给定主题,因此它必须从原始文本中推断它们。LDA将主题定义为单词的分布。例如,当我们对20个新闻组的文章数据集运行MLlib的LDA时,前几个主题是: 看看这三个主题中权重最高的词,我们可以很快地理解每个主题是关于什么的:体育、太空探索和计算机。LDA的成功很大程度上源于它能够产生可解释的主题。用例除了推断这些主题外,LDA还推断每个文档的主题分布。例如,文件X可能60%关于"太空探索",30%关于"计算机",10%关于其他主题。这些主题发行版可用于多种方式:集群:主题是集群中心,文档与多个集群(主题)相关联。这种聚类可以帮助组织或汇总文档集合。特征生成:LDA可以生成供其他ML算法使用的特征。如上所述,LDA为每个文档推断一个主题分布;对于K个主题,这将给出K个数字特征。然后,这些特征可以被插入到诸如Logistic回归或用于预测任务的决策树之类的算法中。降维:每个文档在主题上的分布给出了文档的简明摘要。在这个缩小的特征空间中比较文档比在词的原始特征空间中进行比较更有意义。在MLlib中使用LDA我们给出了一个使用LDA的简短示例。我们在这里描述了这个过程,并在这个Github要点中提供了实际的代码。我们的示例首先加载和预处理文档。预处理最重要的部分是选择词汇表。在我们的示例中,我们将文本拆分为术语(单词),然后删除(a)非字母术语,(b)少于4个字符的短术语,以及(c)最常见的20个术语(作为"stopwords")。通常,为特定的数据集调整此预处理是很重要的。然后我们使用10个主题和10个迭代来运行LDA。根据数据集选择主题的数量通常很重要。使用其他选项作为默认值,我们在Spark文档标记文件(Spark/docs/*.md)上训练LDA。最后我们有10个主题。这里有5个精选的主题,每个主题都有最重要的5个术语。注意每一个都很好地对应于Spark的一个组件!标题是用手加上去的LDA在spark1.3中有Scala和javaapi。pythonapi将很快添加。实现:GraphX学习LDA模型有许多算法。我们选择期望最大化(EM)算法,因为它简单且收敛速度快。因为emforlda有一个隐式的图形结构,所以在GraphX上构建LDA是一个自然的选择。LDA有两种主要的数据类型:术语(单词)和文档。我们将这些数据存储在一个二分图上(如下图所示),该图包含术语顶点(左)和文档顶点(右)。每个术语顶点存储指示该术语与哪些主题相关的权重;同样,每个文档顶点存储文档中讨论的主题的当前估计值。当一个术语出现在文档中时,该图在相应的术语顶点和文档顶点之间有一条边。例如,在上图中,第一条包含了"曲棍球"和"系统"两个术语这些边也说明了算法的通信。在每次迭代中,每个顶点都会通过从相邻顶点收集数据来更新其数据(主题权重)。下面,文章2通过从连接的术语顶点收集数据来更新其主题估计。因此GraphX是LDA的自然选择。随着MLlib的发展,我们期望将来有更多的图结构学习算法!可扩展性LDA的并行化并不简单,已经有很多研究论文提出了不同的策略。关键问题是所有的方法都需要大量的通信。这在上面的图描述中很明显:术语和文档在每次迭代中都需要用新数据更新它们的邻居,并且有很多邻居。我们选择期望最大化算法的部分原因是它在少量迭代中收敛到一个解。更少的迭代意味着更少的沟通。在将LDA添加到Spark之前,我们对一个大型Wikipedia数据集进行了测试。以下是数字:培训集规模:460万份文档词汇量:110万词汇训练集大小:11亿令牌(约239字/文档)100个主题16工人EC2集群计时结果:在10次迭代中平均176秒/次下一步是什么?Spark贡献者目前正在开发额外的LDA算法:在线变分Bayes(一种快速的近似算法)和Gibbs抽样(一种较慢但有时更精确的算法)。我们还添加了一些辅助基础设施,如标记器,用于自动数据准备和更多的预测功能。要开始使用LDA,请立即下载Spark 1.3!要查看示例并了解API详细信息,请查看MLlib文档。致谢LDA的开发是许多Spark贡献者之间的合作:约瑟夫•K•布拉德利、约瑟夫•冈萨雷斯、大卫•霍尔、李国强、孟祥瑞、罗德里格斯、瓦莱里、尹旭森。额外资源通过以下概述了解有关主题模型和LDA的更多信息:主题模型概述:D.Blei和J.Lafferty。"主题模型",摘自A.Srivastava和M.Sahami,编辑,文本挖掘:分类,聚类和应用。Chapman&Hall/CRC数据挖掘和知识发现系列,2009年。关于LDA的维基百科,有数学细节从这些研究论文中获得深入的背景:LDA原稿布莱,吴和乔丹。"潜在的狄利克雷特分配",JMLR,2003年。应用:文本文档分析Pritchard等人利用多位点基因型数据推断群体结构〉《遗传学》155:945-9592000。应用:群体遗传学分析这篇论文清楚地解释了几种算法,包括EM:Asuncion、Welling、Smyth和Teh关于主题模型的平滑和推理〉,UAI,2009。免费试用Databricks。今天就开始吧