做者:樱花猪算法
摘要:网络
本文为七月算法(julyedu.com)12月机器学习第十五次课在线笔记。主题模型是对文字隐含主题进行建模的方法。它克服了传统信息检索中文档类似度计算方法的缺点,而且可以在海量互联网数据中自动寻找出文字间的语义主题。主题模型在天然语言和基于文本的搜索上都起到很是大的做用。机器学习
引言:函数
两篇文档是否相关每每不仅决定于字面上的词语重复,还取决于文字背后的语义关联。对语义关联的挖掘,可让咱们的搜索更加智能化。而主题模型则是用于解决这个方法的很是经典的模型。主题模型是对文字隐含主题进行建模的方法。它克服了传统信息检索中文档类似度计算方法的缺点,而且可以在海量互联网数据中自动寻找出文字间的语义主题。学习
主题模型的主要思想就是经过对文档的统计分析找到对应的主题,再有主题来找到在这个主题下会产生词语的几率。在操做中,文档和词都是已知条件而主题模型则是隐变量,基于这一点咱们可以很好的利用EM算法特性。文章介绍了pLSA和LDA两种方法,经过课程可以更加实际的了解主题模型的应用。spa
预备知识:3d
1、预备概念orm
一、函数:blog
函数是阶乘在实数上的推广:ci
二、Beta分布
Beta分布的几率密度:
其中系数B为:
Gamma函数能够当作阶乘的实数域推广:
Bata分布的指望:
朴素贝叶斯的分析能够胜任许多文本分类问题。
可是朴素贝叶斯的分析没法解决语料中一词多义和多词一义的问题——它更像是词法分析,而非语义分析。
o若是使用词向量做为文档的特征,一词多义和多词一义会形成计算文档间类似度的不许确性。
o能够经过增长“主题”的方式,必定程度的解决上述问题:
n一个词可能被映射到多个主题中o——一词多义
n多个词可能被映射到某个主题的几率很高o——多词一义
基于几率统计的pLSA模型(probabilistic Latent Semantic Analysis,几率隐语义分析),增长了主题模型,造成简单的贝叶斯网络,可使用EM算法学习模型参数。
D表明文档,Z表明主题(隐含类别),W表明单词;
P(di)表示文档di的出现几率,
P(zk|di)表示文档di中主题zk出现的几率,
P(wj|zk)表示给定主题zk的前提下单词wj出现的几率。
每一个文档在全部主题上服从多项分布;每一个主题在全部词项上服从多项分布。
整个文档的生成过程是这样的:
以P(di)的几率选中文档di;
以P(zk|di)的几率选中主题zk;
以P(wj|zk)的几率产生一个单词wj。
观察数据为(di,wj)对,主题zk是隐含变量。
(di,wj)的联合分布为:
而对应了两组多项分布,而计算每一个文档的主题分布,就是该模型的任务目标。
pLSA模型算法:
观察数据为(di,wj)对,主题zk是隐含变量。
目标函数(极大似然估计):
未知变量/自变量
使用逐次逼近的办法:(EM算法)
假定P(zk|di)、P(wj|zk)已知,求隐含变量zk的后验几率;(E-step)
在(di,wj,zk)已知的前提下,求关于参数P(zk|di)、P(wj|zk)的似然函数指望极大值,获得最优解P(zk|di)、P(wj|zk),(M-step)
带入上一步,从而循环迭代;
PLSA模型总结
pLSA应用于信息检索、过滤、天然语言处理等领域,pLSA考虑到词分布和主题分布,使用EM算法来学习参数。
opLSA能够看作几率化的矩阵分解。
o虽然推导略显复杂,但最终公式简洁清晰,很符合直观理解;推导过程使用了EM算法,也是学习EM算法的重要素材。
2、LDA模型
pLSA不须要先验信息便可完成自学习——这是它的优点。若是在特定的要求下,须要有先验知识的影响呢?LDA模型
LDA模型:是一个三层结构的贝叶斯模型,须要超参数。
一、共轭先验分布
在贝叶斯几率理论中,若是后验几率P(θ|x)和先验几率p(θ)知足一样的分布律,那么,先验分布和后验分布被叫作共轭分布,同时,先验分布叫作似然函数的共轭先验分布。
经过共轭先验分布咱们可以从
二项分布-->多项分布
Bata分布-->Dirichlet分布
Bata分布:
Dirichlet分布:
简记:
是参数向量,共K个
定义在(K-1)维的单纯形上,其余区域的几率密度为0
对称Dirichlet分布:
,其中
>1时,
的几率增大
<1时,退化为均匀分布
>1时,
的几率增大
三、LDA模型
LDA的解释:
共有m篇文章,一共涉及了K个主题;
每篇文章(长度为Nm)都有各自的主题分布,主题分布是多项分布,该多项分布的参数服从Dirichlet分布,该Dirichlet分布的参数为α;
每一个主题都有各自的词分布,词分布为多项分布,该多项分布的参数服从Dirichlet分布,该Dirichlet分布的参数为β;
o对于某篇文章中的第n个词,首先从该文章的主题分布中采样一个主题,而后在这个主题对应的词分布中采样一个词。不断重复这个随机生成过程,直到m篇文章所有完成上述过程。
字典中共有V个term(不可重复),这些term出如今具体的文章中,就是word——在具体某文章中的word固然是有可能重复的。
语料库中共有m篇文档d1,d2…dm;
对于文档di,由Ni个word组成,可重复;
语料库中共有K个主题T1,T2…Tk;
α和β为先验分布的参数,通常事先给定:如取0.1的对称Dirichlet分布——表示在参数学习结束后,指望每一个文档的主题不会十分集中。
oθ是每篇文档的主题分布
对于第i篇文档di的主题分布是θi=(θi1,θi2…,θiK),是长度为K的向量;
对于第i篇文档di,在主题分布θi下,能够肯定一个具体的主题zij=k,k∈[1,K],
表示第k个主题的词分布,k∈[1,K],对于第k个主题Tk的词分布φk=(φk1,φk2…φkv),是长度为v的向量
由zij选择φzij,表示由词分布φzij肯定term,即获得观测值wij。
图中K为主题个数,M为文档总数,Nm是第m个文档的单词总数。β是每一个Topic下词的多项分布的Dirichlet先验参数,α是每一个文档下Topic的多项分布的Dirichlet先验参数。zmn是第m个文档中第n个词的主题,wmn是m个文档中的第n个词。两个隐含变量θ和φ分别表示第m个文档下的Topic分布和第k个Topic下词的分布,前者是k维(k为Topic总数)向量,后者是v维向量(v为词典中term总数)。
因为在词和文档之间加入的主题的概念,能够较好的解决一词多义和多词一义的问题。
在实践中发现,LDA用于短文档每每效果不明显——这是能够解释的:由于一个词被分配给某个主题的次数和一个主题包括的词数目还没有敛。每每须要经过其余方案“链接”成长文档。
LDA能够和其余算法相结合。首先使用LDA将长度为Ni的文档降维到K维(主题的数目),同时给出每一个主题的几率(主题分布),从而可使用if-idf继续分析或者直接做为文档的特征进入聚类或者标签传播算法——用于社区发现等问题。