PLSI

PLSI

未知类C={c1, c2,,,,ck}

token W={w1, w2, ,,, wm}

doc    D={d1, d2, ,,, dn}

 

1)选择文档d的概率是p(d)

2)文档d时, 为类z的概率是p(z|d)

3)类z中包含w的概率是 p(w|z)

 

P(w,d) =P(c)P(d | c)P(w | c) = P(d)P(c | d)P(w | c)
 c c

 

 

 

EM

1)E: 在当前参数估计值的情况下, 基于潜在变量的先验概率计算后验概率

2)M: 利用得到的后验值, 重新计算各参数的似然值。 最大化似然值,重新得到新的参数估计值

如下图:

z是潜在变量

p(w|z), p(d|z), p(z)是参数

 

 

=============================================================================

转载 http://www.cnblogs.com/25-to-life/archive/2011/03/05/1971492.html

磨了我一个星期, 断断续续的看, 断断续续的想。 早上上厕所的时候,终于想通了。或许是对英文理解能力差吧, 发觉其实挺简单的。

LSA对于许多搞IR和NLP的来说应该不陌生吧,LSA用SVD降维,然后来根据word distribution,来分类文档

而LSA的劣势在于,没有比较好的统计基础,这个和当前流行趋势是不相符的。

所以PLSA,用概率模型来做文档分类,或者词聚类。等

要求你有个word dictionary.假设为SETWord ={w1,w2,w3..}

事前定义好的几个分类,例如: SetTopic = {t1, t2, t3...}

最后是一个分类未知的杂合文档集, SetDoc = {d1,d2,d3...}

可以试想,一个作者在写关于某个文档时候的思路

1. 确定要写的一个topic, P(t)

2. 选择一系列的词,这些词要和当前topic t相关的,所以为P(w|t).

3. 用这些词组成一个文档, P(d|w)。

这个是顺德思路。

那么当我们已经得到一堆文档的情况下。我们要反过来想,这个就是PLSI的三步走

1. 在文档集中挑选一篇文档d的概率, P(d)

2. 这篇文档描述内容是关于topic-t的概率: P(t|d)

3. 这个topic中,包含了文档当前内容w的概率: P(w|t)

当然, 可以明显看出最后一条原本应该是:P(w|t,d),而这就是PLSI的假设:文档中字和具体某个文档无关。所以P(w|t,d)==》P(w|t)

那么由于是无监督学习分类过程

p(d,w) = p(d)p(w|d)

p(w|d) = ∑p(w|t)p(t|d) (t∈T)

合并两个方程式,得

p(d,w) = p(d)*∑p(w|t)p(t|d) = ∑p(w|t)p(t|d)p(d)

p(t|d)p(d) = p(t,d) = p(d|t)p(t)

再得p(d,w) = p(d)*∑p(w|t)p(t|d) = ∑p(w|t)p(d|t)p(t) (t∈T)

我们要去求的结果是p(w|t)和p(d|t)..

E-STEP: p(t|d,w) = p(w|t)p(d|t)p(t)/∑( p(w|t')p(d|t')p(t'))

M-STEP:

p(w|t) = ∑(n(d,w)*p(t|d,w))【 - 对于所有的d都计算】/ ∑(n(d,w)*p(t|d,w))【 - 对于所有的 变d, 定w 都计算】

同理p(d|t) = ∑(n(d,w)*p(t|d,w))【 - 对于所有的w都计算】/ ∑(n(d,w)*p(t|d,w))【 - 对于所有的 定d, 变w都计算】

p(z) = ∑(n(d,w)p(z|w,d)),所有的属于z的时候的统计/∑n(d,w)(所有文档,所有分类综合.

直观而言, PLSI输出是两个matrix 和 一个vector

matrix:

p(w|t) 定义了在topic下的一个词的分布。

p(d|t)定义了各个文档在此topic下的分布。

可惜, 当前课题太bt了, 我想plsi只适合大众的,频繁出现的词聚类效果还好, 对于一些古文等, 就力不从心了,因为没有数据、文档。叹口气,继续。 倒了研二,压力好大好大好大好大,求毕业。

 

 

 

 =====================================================

转自 http://tech.bobgo.net/?tag=plsa

 

1. 引子

Bag-of-Words 模型是NLP和IR领域中的一个基本假设。在这个模型中,一个文档(document)被表示为一组单词(word/term)的无序组合,而忽略了语法或者词序的部分。BOW在传统NLP领域取得了巨大的成功,在计算机视觉领域(Computer Vision)也开始崭露头角,但在实际应用过程中,它却有一些不可避免的缺陷,比如:

  1. 稀疏性(Sparseness): 对于大词典,尤其是包括了生僻字的词典,文档稀疏性不可避免;
  2. 多义词(Polysem): 一词多义在文档中是常见的现象,BOW模型只统计单词出现的次数,而忽略了他们之间的区别;
  3. 同义词(Synonym): 同样的,在不同的文档中,或者在相同的文档中,可以有多个单词表示同一个意思;

从同义词和多义词问题我们可以看到,单词也许不是文档的最基本组成元素,在单词与文档之间还有一层隐含的关系,我们称之为主题(Topic)。我们在写文章时,首先想到的是文章的主题,然后才根据主题选择合适的单词来表达自己的观点。在BOW模型中引入Topic的因素,成为了大家研究的方向,这就是我们要讲的Latent Semantic Analysis (LSA) 和 probabilitistic Latent Semantic Analysis (pLSA),至于更复杂的LDA和众多其他的Topic Models,以后再详细研究。

2. LSA简介

已知一个文档数据集D=/{ d_1,d_2,...,d_N/}及相应的词典W=/{ w_1,w_2,...,w_M/},采用BOW模型假设,我们可以将数据集表示为一个N*W的共生矩阵,N=(n(d_i,w_j))_{i,j},其中,n(d_i,w_j)表示词典中的第j个单词在第i个文档中出现的次数。

LSA的基本思想就是,将document从稀疏的高维Vocabulary空间映射到一个低维的向量空间,我们称之为隐含语义空间(Latent Semantic Space).

如何得到这个低维空间呢,和PCA采用特征值分解的思想类似,作者采用了奇异值分解(Singular Value Decomposition)的方式来求解Latent Semantic Space。标准的SVD可以写为:

 N = U /Sigma V^t


其中,UV均为正交矩阵,有U^t U = V^t V = I/Sigma是包含N所有奇异值的对角矩阵。LSA降维的方式就是只取/Sigma中最大的K个奇异值,而其他置为0,得到/Sigma的近似矩阵/tilde{/Sigma},于是得到了共生矩阵的近似:

 /tilde{N} = U /tilde{/Sigma} V^t


注意到如果我们利用内积来计算文档与文档之间的的相似度,即N的自相关矩阵,可以得到:/tilde{N}/tilde{N}^t = U /tilde{/Sigma}^2 U^t。于是,我们可以把U /tilde{/Sigma}解释为文档样本在Latent Space上的坐标,而V^t则是两个空间之间的变换矩阵。下图形象的展示了LSA的过程:

 

image

由LSA在训练集合上得到的参数,当一个新的文档向量/vec{x}_{test}到来时,我们可以利用下式将其原始term space映射到latent space:

 /tilde{/vec{x}} = /tilde{/Sigma}^{-1} V^t /vec{x}_{test}

 

LSA的优点

  1. 低维空间表示可以刻画同义词,同义词会对应着相同或相似的主题;
  2. 降维可去除部分噪声,是特征更鲁棒;
  3. 充分利用冗余数据;
  4. 无监督/完全自动化;
  5. 与语言无关;

LSA的不足

  1. 没有刻画term出现次数的概率模型;
  2. 无法解决多义词的问题;
  3. SVD的优化目标基于L-2 norm 或者是 Frobenius Norm的,这相当于隐含了对数据的高斯噪声假设。而term出现的次数是非负的,这明显不符合Gaussian假设,而更接近Multi-nomial分布;
  4. 对于count vectors 而言,欧式距离表达是不合适的(重建时会产生负数);
  5. 特征向量的方向没有对应的物理解释;
  6. SVD的计算复杂度很高,而且当有新的文档来到时,若要更新模型需重新训练;
  7. 维数的选择是ad-hoc的;

3. pLSA

类似于LSA的思想,在pLSA中也引入了一个Latent class,但这次要用概率模型的方式来表达LSA的问题,如下图:

image

在这个probabilitistic模型中,我们引入一个Latent variable z_k /in /{ z_1,z_2,...,z_K /},这对应着一个潜在的语义层。于是,完整的模型为:p(d_i)代表文档在数据集中出现的概率;p(w_j|z_k)代表当确定了语义z_k时,相关的term(word)出现的机会分别是多少; p(z_k |d_i) 表示一个文档中语义分布的情况。利用以上这些定义,我们就可以一个生成式模型(generative model),利用它产生新的数据:

  1. 首先根据分布p(d_i)随机抽样选择一个文档d_i;
  2. 选定文档后,根据 p(z_k|d_i) 抽样选择文档表达的语义z_k
  3. 选定语义后,根据p(w_j|z_k)选择文档的用词;

 

image

 

这样,我们得到了一个观测对(d_i, w_j),多次重复这一过程我们就得到了一个类似N的共生矩阵,而潜在的语义z_k在观测值中并没有表现出来。为了刻画(d_i, w_j)的联合分布,我们可得到以下公式:

 p(d_i,w_j)=p(d_i)p(w_j | d_i), p(w_j | d_i)=/sum_{k=1}^{K} p(w_j |z_k) p(z_k |d_i)


用图模型来表示以上公式如Figure3中的(a),而(b)是pLSA模型的另外一种等价形式,公式可写作:

 p(d_i,w_j)=/sum_{k=1}^{K} p(w_j |z_k) p(z_k)p(d_i |z_k)


模型确定好了,已知的数据集N,我们可以利用Maximum Likelihood准则来确定模型的参数,目标函数可写作:

 /mathcal{L} &= /sum_{i=1}^{N}/sum_{j=1}^{M} n(d_i, w_j) /log p(d_i, w_j)// &= /sum_{i=1}^{N} n(d_i) /{/log p(d_i) + /sum_{j=1}^{M} /frac{n(d_i, w_j)}{n(d_i)} /log /sum_{k=1}^{K} p(w_j | z_k) p(z_k | d_i) /}


此目标函数也可以解释为使p(w_j |d_i)/frac{n(d_i, w_j)}{n(d_i)}两个分布之间的K-L Divergence最小,即p(w_j |d_i)更好的刻画共生矩阵的实际分布。

 

EM求解

在似然值/mathcal{L}的表达式中存在对数内部的加运算,所以球pLSA最大似然解的问题没有闭式解,我们只能求助于EM算法,下面我们从最简单的启发式的角度推导出pLSA的求解过程。

既然似然值/mathcal{L}无法直接求解最大值,那么我们转而优化其下界/mathcal{F},并通过迭代不断的将此下界提高,那么最终得到的解即为/mathcal{L}近似最大解, 当然,此过程中寻求的下界/mathcal{F}要求尽量紧确。利用琴生不等式和概率小于1的性质,我们可以得到如下推导:

 /mathcal{L} &= /sum_{i=1}^{N}/sum_{j=1}^{M} n(d_i, w_j) /log p(d_i, w_j)

  

= /sum_{i=1}^{N}/sum_{j=1}^{M} n(d_i, w_j) /log (/sum_{k=1}^{K} p(w_j | z_k)p(z_k) p(d_i | z_k )) /}

      

/ge /sum_{i=1}^{N}/sum_{j=1}^{M} n(d_i, w_j) /sum_{k=1}^{K} /log ( p(w_j | z_k) p(z_k) p(d_i | z_k )) /}

     

> /sum_{i=1}^{N}/sum_{j=1}^{M} n(d_i, w_j) /sum_{k=1}^{K} p(z_k | d_i, w_j)/log ( p(w_j | z_k)p(z_k) p(d_i | z_k )) /}


这样,我们就把/sum拿到了/log外面来,接下来我们就可以对/mathcal{F}直接求解了。注意这个最大化问题的约束条件是:

/sum p(w|z)=1, /sum p(z)=1, /sum p(d|z)=1


利用拉格朗日法,我们可以得到优化目标:

 /mathcal{F} &=  /sum_{i=1}^{N}/sum_{j=1}^{M} n(d_i, w_j) /sum_{k=1}^{K} p(z_k | d_i, w_j)/log ( p(w_j | z_k)p(z_k) p(d_i | z_k )) /}

           

 + /sum_{k=1}^K /lambda_k [/sum_{i=1}^N p(d_i | z_k) - 1] + /sum_{k=1}^K /mu_k [/sum_{j=1}^M p(w_j | z_k) - 1] + /xi[/sum_{k=1}^K p(z_k)-1]


对此目标函数求导,我们可以得到EM算法中的M-step:

 &p(w_j | z_k) /propto /sum_d n(d_i,w_j) p(z_k|d_i, w_j)

            

p(d_i | z_k) /propto /sum_w n(d_i,w_j) p(z_k|d_i, w_j)

                         

p(z_k) /propto /sum_d /sum_w n(d_i,w_j) p(z_k|d_i, w_j)

  而EM算法中的E-step也就是求已知d_i, w_j时隐含变量z_k的后验概率:

 p(z_k|d_i, w_j)= /frac { p(w_j | z_k) p(z_k) p(d_i | z_k )}{/sum_k' p(w_j | z_k') p(z_k') p(d_i | z_k' )}


观察可以得到,E-step与M-step互相依赖,可以证明每一步都使得下界/mathcal{F}的期望值提高,通过不断的迭代求解即可最后求得原问题的近似最大似然解。

 

pLSA与LSA的关系

由Figure4可以看到pLSA与LSA之间的对应关系。其中p(z)刻画了Latent Space也即topic space的信息;p(w|z)刻画了topic space与term space之间的关系,对应着LSA中的正交基V;在文档分类是,这两部分也就是我们在模型训练结束需要保存的信息,当一个新的文档的到来时, 我们可以再次利用EM算法得到新的文档与主题的对应关系p(d|z),并由此得到文档在topic空间上的表示 p(z|d)

image

pLSA的优势

  1. 定义了概率模型,而且每个变量以及相应的概率分布和条件概率分布都有明确的物理解释;
  2. 相比于LSA隐含了高斯分布假设,pLSA隐含的Multi-nomial分布假设更符合文本特性;
  3. pLSA的优化目标是是KL-divergence最小,而不是依赖于最小均方误差等准则;
  4. 可以利用各种model selection和complexity control准则来确定topic的维数;

pLSA的不足

  1. 概率模型不够完备:在document层面上没有提供合适的概率模型,使得pLSA并不是完备的生成式模型,而必须在确定document i的情况下才能对模型进行随机抽样;
  2. 随着document和term 个数的增加,pLSA模型也线性增加,变得越来越庞大;
  3. 当一个新的document来到时,没有一个好的方式得到$p(d_i)$;
  4. EM算法需要反复的迭代,需要很大计算量;

针对pLSA的不足,研究者们又提出了各种各样的topic based model, 其中包括大名鼎鼎的Latent Dirichlet Allocation (LDA),在此就不再多说了。

 

 

 

====================================================

转自 http://hi.baidu.com/megachan/blog/item/325a351814ebfe5343a9ad33.html

PLSA是更为先进的方法。他解决了同义词和多义词的问题,利用了强化的期望最大化算法(EM)来训练隐含类(潜在类)。而且相对了LSA,有了坚实的统计学基础。

PLSA的建模——层面模型

层面模型就是关联于潜在类Z的共现表的潜在可变模型。在层面模型中,文档被视为潜在的K个层面的混合。每一个层面就是word对于z(潜在类)的概率分布。

PLSA的建模——数据的共现

对于每一组(w,d)都使之与潜在变量z关联。

PLSA的建模——预测words

已经的是文档的概率,首先要计算潜在类Z根据条件概率D,生成单词W根据条件概率Z。

PLSA的公式:

P(w,d) =∑P(c)P(d | c)P(w | c) = P(d)∑P(c | d)P(w | c)

注:这里的C和上面说的Z是一样的。

公式解析:第一个公式是对称公式,在这个公式中,W和D都是以相同的方式(都用了W和D基于C的条件概率)通过潜在类C处理的。第二个公式是非对称公式。在这个公式中,对于每一个D,先根据D的条件概率计算C,然后根据C的条件概率计算W。事实上,这个公式可以扩展成计算任何一对离散变量的共现。因为我们的W和D是已知的,但是Z是未知的,所以我们的重心放在求Z上。那么如何求Z呢?

PLSA的缺点:

PLSA有时会出现过拟合的现象。所谓过拟合(Overfit),是这样一种现象:一个假设在训练数据上能够获得比其他假设更好的拟合,但是在测试数据集上却不能很好的拟合。此时我们就叫这个假设出现了overfit的现象。出现这种现象的主要原因是训练数据中存在噪音或者训练数据太少。

PLSA与LDA最大的区别就在于,doc--topic这一级,PLSA把这一级的所有变量都看作模型的参数,即有多少文档那么就有多少模型的参数;而LDA引入了一个超参数,对doc--topic这一个层级进行model。这样无论文档有多少,那么最外层模型显露出来的(对于doc--topic)就只有一个超参数。

解决办法,要避免过拟合的问题,PLSA使用了一种广泛应用的最大似然估计的方法,期望最大化。PLSA中训练参数的值会随着文档的数目线性递增。PLSA可以生成其所在数据集的的文档的模型,但却不能生成新文档的模型。

强化的期望最大化算法中引入了控制参数beta。

Beta值起始是1,紧着逐渐减少。引入beta的目的就是为了避免过拟合的问题,在beta中,过拟合和不充分拟合的状态被定义。具体的算法是:

让beta的初始值为1,然后根据待训练数据来测试模型,如果成功,则使用该beta,如果不成功,则收敛。收敛的意思就是使得beta = n*beta, n<1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值