LDA是带有隐变量的生成模型,狄利克雷分布的参数和
是生成模型的参数,所有文章的所有词w们是观测值X,每篇文章的主题分布
和每个主题的词分布
是隐变量。
LDA贝叶斯网络的那张经典图的解释:每个主题的词分布,全局只采样一次,之后就固定住了;同理每篇文章的主题分布也只采样一次;生成一个词的时候,先根据主题分布采样得到该词的主题,再根据该主题的词分布采样得到该词;
词分布和主题分布的先验分布(2个都是狄利克雷分布)---采样--->词分布和主题分布(2个都是多项式分布)---主题采样-->得到主题--词采样-->得到词。
已知和
和所有文章所有词w,如何求隐变量
们和
们:吉布斯采样法。
吉布斯采样法:1. 和
和所有其他词词面w和主题z都确定,且当前词的词面w也确定,只有当前词的主题z[i]不确定,求z[i]属于各个主题的分布; 2.按这个该词的主题分布采样得到该词的主题;3.当前词滑动到下一个,跳转到1
吉布斯采样公式推导:
1. 对所有的主题k求p(z[i]=k | ,
,all w, all z except z[i]) , 根据条件概率公式,正比于p(
,
,all w, all z)/p(
,
,all w, all z except z[i]);
2. 再次根据条件概率公式,分子等于p(all w | ,
, all z)*p(all z|
,
),分母也同理拆成2部分乘积;
3. 两部分其实是类似得求解;以p(all w | ,
, all z)为例,先根据主题k的独立性,拆成p(w
主题k |
,
, all z
主题k)连乘K次;
4. 求解p(w主题k |
, all z
主题k), 对所有词分布
[k]积分,等于
p(w|
,z)p(
|
)d
5. p(|
)写成狄利克雷分布的式子(V个项概率连乘),p(w|
,z)写成V个项连乘;这里的V是词典大小(vocabulary size),不是文章长度;前V个项和后V个项合并到V个项连乘,类似后验概率的狄利克雷分布,最终式子得到
(n[k]+
)/
(
是狄利克雷分布的积分和,也是归一化项)
6. 把5的结果带入到3, 得到K个式子连乘;
7. 把6的结果类比得到p(all z|,
),两者带入到2和1,消去分子分母相同的项,再把
展开成
,再把
展开成广义n!,得到最终结果;
8. 最终结果,直观来看,就是在不计算当前词i的前提下(设词i的值为t),本文章内主题k的频率*主题k里词t的频率;( 其实就是不计算词i的[m][k]*
[k][t] ); 跟普通的频率相比,增加了
和
做"伪计数"
吉布斯采样很多轮迭代,结束之后,p([m] |
,z[m]), 使用贝叶斯公式,正比于p(z[m] |
[m])*p(
[m] |
), 等于狄利克雷后验分布Dir(n[m]+
), n[m]是第m篇文章每个主题的词频形成的向量;同理p(
[k] |
,z[k], w[k])=Dir(n[k]+
)
最后,取得主题分布[m]取狄利克雷分布Dir(n[m]+
)的数学期望即可,即
[m][k]=(n[m][k]+
[k]) / k个分子之和;
[m]同理;
LDA的评价标准:极大似然法,p(w|model)=所有词w[i]的p(w[i] | model)连乘, p(w[i] | model)=所有主题k的p(w[i] | k)*p(k | model)之和;类似先写成NMF的矩阵相乘形式,求出所有单词w[i]的似然概率,然后连乘起来;也就是[m]乘以
矩阵的第t列(t是w[i]的词id)
也可以用TF-IDF值,代替“词频”,输入LDA来做;
NMF矩阵分解,只有拟合,没有和
生成主题分布和词分布这说;
LDA适合长文本;pLSA适合短文本;