PLSA模型简介

knitr::opts_chunk$set(echo = TRUE)

1、文档生成

  对于某一篇特定的文章,其生成过程可以看做如下方式:
1 . 为这篇文章制造一个特定的doc_topic的骰子
2 . 先掷doc_topic骰子,产生一个主题
3 . 找到对应主题的topic_word骰子,投掷产生一个词
4 . 重复步骤2、3直至文档生成

2、符号标记

1 . D D 文档 P(di) P ( d i ) 表示文档 di d i 出现的概率(认为是一个未知定值),共计 M M 篇文档
2 . Z Z 主题(隐含类别) P(zk|di) P ( z k | d i ) 表示文档 di d i 中主题 zk z k 出现的概率,共计 K K 个主题
3 . W W 单词 P(wj|zk) P ( w j | z k ) 表示给定主题 zk z k 出现单词 wj w j 的概率,共计 M M 词汇
4 . n(di,wj) n ( d i , w j ) 表示在文档 di d i 中出现词 wj w j 的个数
5 . tk t k 如果文档 di d i 中出现词 wj w j 是因为 k k 个主题产生的则 tk=1 t k = 1 否则为0,某个文档的同一个词出现多次认为来自同一个主题

3、模型推导

3.1 对某篇文章的某个词

  那么对于第 i i 篇文章,某个词 j j 生成的概率为:

P(wj|di)=k=1KP(wj,zk|di)=k=1KP(wj|zk,di)P(zk|di)=k=1KP(wj|zk)P(zk|di) P ( w j | d i ) = ∑ k = 1 K P ( w j , z k | d i ) = ∑ k = 1 K P ( w j | z k , d i ) ∗ P ( z k | d i ) = ∑ k = 1 K P ( w j | z k ) ∗ P ( z k | d i )

  其中第2步到第三步是因为模型的前提假设认为词的生成只和主题有关。

3.2 求解参数

  最终需要求解的是 P(zk|di) P ( z k | d i ) P(wj|zk) P ( w j | z k ) ,即每个文档的主题分布及每个主题的词分布

3.3 完全数据的对数似然函数

L=logi=1Nj=1M{k=1KP(di,wj,zk)tk}n(di,wj)=ijn(di,wj){ktklog[P(di,wj,zk)]}=ijn(di,wj)log[P(di,wj,zk)] L = log ⁡ ( ∏ i = 1 N ∏ j = 1 M { ∏ k = 1 K P ( d i , w j , z k ) t k } n ( d i , w j ) ) = ∑ i ∑ j n ( d i , w j ) { ∑ k t k log ⁡ [ P ( d i , w j , z k ) ] } = ∑ i ∑ j n ( d i , w j ) log ⁡ [ P ( d i , w j , z k ) ]

有个问题,这样写默认同一篇文档中出个多个相同的词时是来自同一个主题的,找了蛮多资料,似乎没有明确提出这个假设。

3.4 E-Step

  对完全数据的对数似然函数求关于 P(z|w,d,θi) P ( z | w , d , θ i ) 的期望。其中 θi θ i 为第 i i 次参数 P(z|d) P ( z | d ) P(w|z) P ( w | z ) 的估计。即使用EM算法最终求解的也是这两个参数。

E=EZ|W,D,θi[log(P(W,D,Z))]=ijn(di,wj)kP(zk|wj,di,θi)log[P(di,wj,zk)] E = E Z | W , D , θ i [ log ⁡ ( P ( W , D , Z ) ) ] = ∑ i ∑ j n ( d i , w j ) ∑ k P ( z k | w j , d i , θ i ) log ⁡ [ P ( d i , w j , z k ) ]

3.5 M-Step

  求极值需要用到的两个公式:
  公式一:

P(di,wj,zk)=P(zk|di)P(wj|zk,di)P(di)=P(zk|di)P(wj|zk)P(di) P ( d i , w j , z k ) = P ( z k | d i ) P ( w j | z k , d i ) P ( d i ) = P ( z k | d i ) P ( w j | z k ) P ( d i )

    其中 d d w w 独立,所以得到上式。
  公式二:
P(zk|wj,di)=P(zk,wj,di)P(wj,di)=P(wj|zk)P(zk|di)kP(zk,wj,di)=P(wj|zk)P(zk|di)kP(wj|zk)P(zk|di) P ( z k | w j , d i ) = P ( z k , w j , d i ) P ( w j , d i ) = P ( w j | z k ) ∗ P ( z k | d i ) ∑ k P ( z k , w j , d i ) = P ( w j | z k ) ∗ P ( z k | d i ) ∑ k P ( w j | z k ) ∗ P ( z k | d i )

  对目标函数 E E 求极值:
  化简:
E=ijn(di,wj)kP(zk|wj,di,θi)log[P(di,wj,zk)]=ijn(di,wj)kP(zk|wj,di,θi)log[P(zk|di)P(wj|zk)P(di)]=ijn(di,wj)kP(zk|wj,di,θi)log[P(zk|di)P(wj|zk)]+ijn(di,wj)kP(zk|wj,di,θi)log[P(di)] E = ∑ i ∑ j n ( d i , w j ) ∑ k P ( z k | w j , d i , θ i ) log ⁡ [ P ( d i , w j , z k ) ] = ∑ i ∑ j n ( d i , w j ) ∑ k P ( z k | w j , d i , θ i ) log ⁡ [ P ( z k | d i ) P ( w j | z k ) P ( d i ) ] = ∑ i ∑ j n ( d i , w j ) ∑ k P ( z k | w j , d i , θ i ) log ⁡ [ P ( z k | d i ) P ( w j | z k ) ] + ∑ i ∑ j n ( d i , w j ) ∑ k P ( z k | w j , d i , θ i ) log ⁡ [ P ( d i ) ]

  此时认为 P(di) P ( d i ) 是定值且与 k k 无关,那么:
ijn(di,wj)kP(zk|wj,di,θi)log[P(di)]=ijn(di,wj)log[P(di)]kP(zk|wj,di,θi)=ijn(di,wj)log[P(di)]1=ijn(di,wj)log[P(di)] ∑ i ∑ j n ( d i , w j ) ∑ k P ( z k | w j , d i , θ i ) log ⁡ [ P ( d i ) ] = ∑ i ∑ j n ( d i , w j ) ∗ log ⁡ [ P ( d i ) ] ∑ k P ( z k | w j , d i , θ i ) = ∑ i ∑ j n ( d i , w j ) ∗ log ⁡ [ P ( d i ) ] ∗ 1 = ∑ i ∑ j n ( d i , w j ) ∗ log ⁡ [ P ( d i ) ]

  所以:
max{Lnew}Lnew=ijn(di,wj)kP(zk|wj,di,θi)log[P(zk|di)P(wj|zk)]s.t.j=1MP(wj|zk)=1k=1KP(zk|di)=1 max { L n e w } L n e w = ∑ i ∑ j n ( d i , w j ) ∑ k P ( z k | w j , d i , θ i ) log ⁡ [ P ( z k | d i ) P ( w j | z k ) ] s . t . { ∑ j = 1 M P ( w j | z k ) = 1 ∑ k = 1 K P ( z k | d i ) = 1

  此时, P(zk|wj,di,θi) P ( z k | w j , d i , θ i ) 为一个定值。
  求目标函数的最大值,则要用到 Lagrange L a g r a n g e 乘子法。
Lag=ijn(di,wj)kP(zk|wj,di,θi)log[P(zk|di)P(wj|zk)]++k=1Kτk(1j=1MP(wj|zk))+i=1Nρi(1k=1KP(zk|di)) L a g = ∑ i ∑ j n ( d i , w j ) ∑ k P ( z k | w j , d i , θ i ) log ⁡ [ P ( z k | d i ) P ( w j | z k ) ] + + ∑ k = 1 K τ k ( 1 − ∑ j = 1 M P ( w j | z k ) ) + ∑ i = 1 N ρ i ( 1 − ∑ k = 1 K P ( z k | d i ) )

  求驻点:
LagP(wj|zk)=in(di,wj)P(zk|wj,di,θi)P(wj|zk)τk=0LagP(zk|di)=jn(di,wj)P(zk|wj,di,θi)P(zk|di)ρi=0 ∂ L a g ∂ P ( w j | z k ) = ∑ i n ( d i , w j ) P ( z k | w j , d i , θ i ) P ( w j | z k ) − τ k = 0 ∂ L a g ∂ P ( z k | d i ) = ∑ j n ( d i , w j ) P ( z k | w j , d i , θ i ) P ( z k | d i ) − ρ i = 0

  对于 P(wj|zk) P ( w j | z k ) :
in(di,wj)P(zk|wj,di,θi)=τkP(wj|zk)j=1Min(di,wj)P(zk|wj,di,θi)=j=1MτkP(wj|zk)j=1Min(di,wj)P(zk|wj,di,θi)=τkj=1MP(wj|zk)=τkSo:P(wj|zk)=in(di,wj)P(zk|wj,di,θi)τk=in(di,wj)P(zk|wj,di,θi)j=1Min(di,wj)P(zk|wj,di,θi) ∑ i n ( d i , w j ) P ( z k | w j , d i , θ i ) = τ k P ( w j | z k ) ∑ j = 1 M ∑ i n ( d i , w j ) P ( z k | w j , d i , θ i ) = ∑ j = 1 M τ k P ( w j | z k ) ∑ j = 1 M ∑ i n ( d i , w j ) P ( z k | w j , d i , θ i ) = τ k ∑ j = 1 M P ( w j | z k ) = τ k S o : P ( w j | z k ) = ∑ i n ( d i , w j ) P ( z k | w j , d i , θ i ) τ k = ∑ i n ( d i , w j ) P ( z k | w j , d i , θ i ) ∑ j = 1 M ∑ i n ( d i , w j ) P ( z k | w j , d i , θ i )

  对于 P(zk|di) P ( z k | d i ) :
jn(di,wj)P(zk|wj,di,θi)=ρiP(zk|di)k=1Kjn(di,wj)P(zk|wj,di,θi)=k=1KρiP(zk|di)k=1Kjn(di,wj)P(zk|wj,di,θi)=ρik=1KP(zk|di)=ρiSo:P(zk|di)=jn(di,wj)P(zk|wj,di,θi)ρi=jn(di,wj)P(zk|wj,di,θi)k=1Kjn(di,wj)P(zk|wj,di,θi) ∑ j n ( d i , w j ) P ( z k | w j , d i , θ i ) = ρ i P ( z k | d i ) ∑ k = 1 K ∑ j n ( d i , w j ) P ( z k | w j , d i , θ i ) = ∑ k = 1 K ρ i P ( z k | d i ) ∑ k = 1 K ∑ j n ( d i , w j ) P ( z k | w j , d i , θ i ) = ρ i ∑ k = 1 K P ( z k | d i ) = ρ i S o : P ( z k | d i ) = ∑ j n ( d i , w j ) P ( z k | w j , d i , θ i ) ρ i = ∑ j n ( d i , w j ) P ( z k | w j , d i , θ i ) ∑ k = 1 K ∑ j n ( d i , w j ) P ( z k | w j , d i , θ i )

  而 P(zk|wj,di,θi) P ( z k | w j , d i , θ i ) 用到前面的公式一,此时 P(zk|di) P ( z k | d i ) P(wj|zk) P ( w j | z k ) 均为第 i i 次的迭代值:
P(zk|wj,di,θi)=[P(wj|zk)]i[P(zk|di)]ik[P(wj|zk)]i[P(zk|di)]i P ( z k | w j , d i , θ i ) = [ P ( w j | z k ) ] i ∗ [ P ( z k | d i ) ] i ∑ k ⁡ [ P ( w j | z k ) ] i ∗ [ P ( z k | d i ) ] i

4、Others

  从直观上看,应该还算明了~留个记录,方便复习。

5、Ref

[1] 邹博-小象学院《机器学习》
[2] http://www.xuebuyuan.com/551762.html

          2018-01-17 于杭州

你可能感兴趣的:(★★★机器学习,#,★★分类&回归)