码迷,mamicode.com
首页 > 其他好文 > 详细

主题模型之概率潜在语义分析(Probabilistic Latent Semantic Analysis)

时间:2015-09-17 09:54:46      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:

上一篇总结了潜在语义分析(Latent Semantic Analysis, LSA),LSA主要使用了线性代数中奇异值分解的方法,但是并没有严格的概率推导,由于文本文档的维度往往很高,如果在主题聚类中单纯的使用奇异值分解计算复杂度会很高,使用概率推导可以使用一些优化迭代算法来求解。

Thomas Hofmann 于1998年根据似然原理定义了生成模型并由此提出了概率潜在语义分析模型(Probabilistic Latent Semantic Analysis),简称PLSA。

PLSA属于概率图模型中的生成模型,相关的模型还有语言模型中的一元模型(Unigram Model)、混合一元模型(Mixture of Unigrams Model)等。

首先对文集进行设定。假设文集的词典中共有V个词,词典向量为技术分享,假设词是独立同分布的(一袋子词),即技术分享,一篇文章可以表示为技术分享,其中技术分享表示第i个词在当前文档中出现的次数。

技术分享

 

一元模型中假设每篇文档的词都独立遵从于多项式分布,即假设词典中第i个词技术分享在文档中出现的次数遵从多项式分布,即技术分享。打个比方来说假设我们有一个V面的骰子,骰子第i面向上的概率为技术分享,每掷一次骰子得到一个词,掷M次后便得到一篇由M个词组成的文档技术分享(文档的词之间是独立同分布的)。根据多项式分布可以知道文档技术分享的概率为

技术分享

下图中图(a)便是一元语言模型的概率图模型,而图(b)中是PLSA的概率图模型。

 技术分享

PLSA模型中与一元模型中假设词遵从多项式分布不同,PLSA模型中引入了潜层变量技术分享作为主题变量,即假设当前文集由K个主题构成。设技术分享为文集中的第m篇文档,技术分享表示第t个主题,技术分享为第i个词。技术分享为所有文档的概率分布,技术分享是文档技术分享的概率,技术分享为文档技术分享对应的主题的分布,技术分享为主题技术分享对应的词的分布。

PLSA模型的生成过程如下:

  1. 根据概率技术分享选择一篇文档技术分享
  2. 根据概率技术分享选择一个潜性主题技术分享,并且技术分享
  3. 根据概率技术分享生成一个词技术分享,并且技术分享

当然每个模型都对文集有一定的假设,PLSA做了如下的假设:

  1. 并元技术分享的每一对共现是独立的
  2. 当已知潜性变量技术分享的时候,变量技术分享和变量技术分享是条件独立的。

PLSA最初是根据视面模型(Aspect Model)提出的,假设1与一元模型中的“一袋子词”的假设相似,假设2与PLSA定义的图模型的生成关系有关,PLSA的图模型类似于X->Z->Y这种模式,在贝叶斯网络中被称为间接因果影响(“Indirect Causal Effect”)。举个例子来说,X表示你口袋里有没有2块钱,Z表示你能不能买一只笔,Y表示你能不能参加考试。假如不知道你能不能买一支笔(Z),那么你口袋里有没有2块钱(X)将影响到你能不能参加考试(Y)。但是假如你已经知道你是否可以买一只笔(Z),则你口袋里有没有2块钱(X)就影响不到你能不能参加考试了(Y)。即已知变量Z,变量X和Y是独立的。

PLSA最终是要求得每个并元技术分享对应主题的概率,即技术分享。下面我们来推导公式。PLSA使用极大似然估计(MLE)。

首先求解隐变量z的对数似然函数技术分享

技术分享

由于PLSA模型的假设1,所以有:

技术分享

其中技术分享表示第n篇文档中的第m个词出现的次数。

又由于在已知变量z的情况下d和w是独立的,可得:

技术分享

PLSA使用EM算法求解极大似然,EM算法是一种机器学习中非常常用的迭代近似算法。一般用来求解得到极大似然或极大后验的参数值。E步指的是在当前参数的情况下隐变量的后验概率(Expectation),M步指的是求解得到极大似然或极大后验的参数值(Maximization)。

首先计算上面似然函数的期望值:

技术分享

上式有两个限制条件:

技术分享

技术分享

根据拉格朗日乘数法进行极值推导,分别对两个约束设定两个参数技术分享技术分享

技术分享

在上式中分别对变量技术分享技术分享求偏导得到:

技术分享

技术分享

与之前的限制条件联立得到:

技术分享

技术分享

于是便得到了M步求最大化的等式。

PLSA的EM步骤便可以化简如下:

E步:计算变量z的后验概率技术分享

M步:计算技术分享技术分享

PLSA的问题便是在变量中含有文档d这个变量,在模型上受限使其很难应用到其他文档上去。之后David Blei提出的LDA(Latent Dirichlet Allocation)便是给文集设定了两个超参来省略掉文档这个固定变量。

PLSA的实现C++代码:【还未上传】

https://blog-potatolife.rhcloud.com/?p=147

主题模型之概率潜在语义分析(Probabilistic Latent Semantic Analysis)

标签:

原文地址:http://www.cnblogs.com/chenying99/p/4815266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!