概率潜在语义分析,是一种利用概率生成模型对文本集合进行话题分析的无监督学习方法。模型的最大特点是用隐变量表示话题,整个模型表示文本生成话题,话题生成单词,从而得到单词-文本共现数据的过程。
P(d)表示生成文本d的概率,P(z|d)表示文本d生成话题z的概率,P(w|z)表示话题z生成单词w的概率。
生成模型通过以下步骤生成文本-单词共现数据:
(1)依据概率分布P(d),从文本集合中随机选取一个文本d,共生成N个文本;针对每个文本,执行以下操作;
(2)在文本d给定条件下,依据条件概率分布P(z|d),从话题集合随机选取一个话题z,共生成L个话题
(3)在话题z给定条件下,依据条件概率分布P(w|z),从单词集合中随机选取一个单词w。
生成模型中,单词变量w与文本变量d是观测变量,话题变量z是隐变量。也就是说模型生成的是单词-话题-文本三元组集合,但观测到的是单词-文本二元组,观测数据表示为单词-文本矩阵T的形式。
生成模型定义:
P ( w , d ) = P ( d ) P ( w ∣ d ) = P ( d ) Σ P ( z ∣ d ) P ( w ∣ z ) P(w,d)=P(d)P(w|d)=P(d)\Sigma P(z|d)P(w|z) P(w,d)=P(d)P(w∣d)=P(d)ΣP(z∣d)P(w∣z)
生成模型假设在话题z给定条件下,单词w与文本d条件独立
P ( w , z ∣ d ) = P ( z ∣ d ) P ( w ∣ z ) P(w,z|d)=P(z|d)P(w|z) P(w,z∣d)=P(z∣d)P(w∣z)
共现模型定义:
P ( w , d ) = Σ P ( z ) P ( w ∣ z ) P ( d ∣ z ) P(w,d)=\Sigma P(z)P(w|z)P(d|z) P(w,d)=ΣP(z)P(w∣z)P(d∣z)
共现模型假设在话题z给定条件下,w和d条件独立
P ( w , d ∣ z ) = P ( w ∣ z ) P ( d ∣ z ) P(w,d|z)=P(w|z)P(d|z) P(w,d∣z)=P(w∣z)P(d∣z)
生成模型刻画共现数据生成过程,共现模型描述贡献数据拥有的模型,生成模型中单词变量w与文本变量d是非对称的,共现模型中w与d是对称的,所以前者为非对称模型,后者为对称模型。
共现模型矩阵乘积:
X = U Σ V T X=U\Sigma V^T X=UΣVT
X = [ P ( w , d ) ] M ∗ N X=[P(w,d)]_{M*N} X=[P(w,d)]M∗N
U = [ P ( w ∣ z ) ] M ∗ K U=[P(w|z)]_{M*K} U=[P(w∣z)]M∗K
Σ = [ P ( z ) ] K ∗ K \Sigma=[P(z)]_{K*K} Σ=[P(z)]K∗K
V = [ P ( d ∣ z ) ] N ∗ K V=[P(d|z)]_{N*K} V=[P(d∣z)]N∗K
模型是含有隐变量的算法,学习通常使用EM算法。
输入:单词集合W,文本集合D,话题集合Z,共现数据{n(wi,dj)}
输出:P(wi|zk),P(zk|dj)
(1)设置P(wi|zk),P(zk|dj)初始值
(2)迭代执行以下E步,M步,直到收敛
E步:
P ( z k ∣ w i , d j ) = P ( w i ∣ z k ) P ( z k ∣ d j ) ∑ k = 1 K P ( w i ∣ z k ) P ( z k ∣ d j ) P(z_k|w_i,d_j)=\frac{P(w_i|z_k)P(z_k|d_j)}{\sum_{k=1}^K{P(w_i|z_k)P(z_k|d_j)}} P(zk∣wi,dj)=∑k=1KP(wi∣zk)P(zk∣dj)P(wi∣zk)P(zk∣dj)
M步:
P ( w i ∣ z k ) = ∑ j = 1 N n ( w i , d j ) P ( z k ∣ w i , d j ) ∑ m = 1 M ∑ j = 1 N n ( w m , d j ) P ( z k ∣ w m , d j ) P(w_i|z_k)=\frac{\sum_{j=1}^N{n(w_i,d_j)P(z_k|w_i,d_j)}}{\sum_{m=1}^M\sum_{j=1}^N{n(w_m,d_j)P(z_k|w_m,d_j)}} P(wi∣zk)=∑m=1M∑j=1Nn(wm,dj)P(zk∣wm,dj)∑j=1Nn(wi,dj)P(zk∣wi,dj)
P ( z k ∣ d j ) = ∑ i = 1 M n ( w i , d j ) P ( z k ∣ w i , d j ) n ( d j ) P(z_k|d_j)=\frac{\sum_{i=1}^M{n(w_i,d_j)P(z_k|w_i,d_j)}}{n(d_j)} P(zk∣dj)=n(dj)∑i=1Mn(wi,dj)P(zk∣wi,dj)