主题模型

  • LSA

潜在语义分析(Latent Semantic Analysis, LSA),也叫做Latent Semantic Indexing, LSI. 是一种常用的简单的主题模型。LSA是基于奇异值分解(SVD)的方 法得到文本主题的一种方式。

我们输入的有m个文本,每个文本有n个词。而Aij则对应第i个文本的第j个词的特征值。k是我们假设的主题数,一般要比文本数少。SVD分解后,Uil对 应第i个文本和第l个主题的相关度。Vjm对应第j个词和第m个词义的相关度。Σlm对应第l个主题和第m个词义的相关度。通过SVD矩阵分解我们可以得到文本、词与主题、语义之间的相关性,但是这个 时候计算出来的内容存在负数,我们比较难解释,所以我们可以对LSI得到文本 主题矩阵使用余弦相似度计算文本的相似度的计算。除非数据规模比较小,而且希望快速的粗粒度的找出一些主题分布关系,否则我 们一般不会使用LSA主题模型。

优点:原理简单,一次SVD分解即可得到主题模型,可以同时解决词义的问题。

缺点:SVD分解的计算非常耗时,对于高维度矩阵做SVD分解非常困难; 主题模型数量的选取对于结果的影响非常大,很难选择合适的k值;LSA模型不是概率模型,缺乏统计基础,结果难以直观的解释。

  • pLSA
主题分布和词分布确定后,以一定的概率()分别选取具体的主题和词项,生成好文档。而后根据生成好的文档反推其主题分布、词分布时,最终用EM算法(极大似然估计思想)求解出了两个未知但固定的参数的值:(由转换而来)和(由转换而来)。我们认为主题分布(各个主题在文档中出现的概率分布)和词分布(各个词语在某个主题下出现的概率分布)是唯一确定的,即文档d产生主题z的概率,主题z产生单词w的概率都是两个固定的值,最终用EM算法(极大似然估计思想)求解出了两个未知但固定的参数的值
举个文档d产生主题z的例子。给定一篇文档d,主题分布是一定的,比如{ P(zi|d), i = 1,2,3 }可能就是{0.4,0.5,0.1},表示z1、z2、z3,这3个主题被文档d选中的概率都是个固定的值:P(z1|d) = 0.4、P(z2|d) = 0.5、P(z3|d) = 0.1,如下图所示:



  • LDA

隐含狄利克雷分布(Latent Dirichlet Allocation, LDA)是一种基于贝叶斯算法模 型,利用先验分布对数据进行似然估计并最终得到后验分布的一种方式。LDA是 一种比较常用的主题模型。

LDA假设文档主题是多项分布,多项分布的参数(先验分布)是服从Dirichlet分布, 其实LDA是一种三层的贝叶斯模型。

LDA详细解释:

        1、共有M篇文档,每个文档有Nm个单词,一共涉及到K个主题;每篇文档都有各自的主题,主题分布是多项式分布,该多项式分布的参数服从Dirichlet分布,该Dirichlet分布的参数为α;每个主题都有各自的词分布,词分布为为多项式分布,该多项式分布的参数服从 Dirichlet分布,该Dirichlet分布的参数为η;对于某篇文档d中的第n个词,首先从该文档的主题分布中采用一个主题,然后 再这个主题对应的词分布中采用一个词,不断重复该操作,直到m篇文档全部完 成上述过程。

        2、词汇表中共有V个term(不可重复); 语料库中共有m篇文档d1,d2,..,dm;对于文档di,是由Ni个word组成的(word可重复);语 料库共有K个主题T1,T2,...,Tk;α和η是先验分布(Dirichlet分布)的参数; θ是每篇文档的主题分布,是一个K维的向量; 对于第i篇文档di,在主题分布θi下,可以确定一个具体的主题zij=k β是每个主题的词分布,是一个V维的向量; 由zij选择βzij(单词概率),表示由词分布βzij确定term,即可得到最终的观测值wij。

3、

综上,LDA真的只是pLSA的贝叶斯版本,文档生成后,两者都要根据文档去推断其主题分布和词语分布,只是用的参数推断方法不同,在pLSA中用极大似然估计的思想去推断两未知的固定参数,而LDA则把这两参数弄成随机变量,且加入dirichlet先验。