零
K 类个数, M term个数, N doc个数。
一
qmk是term m在类k中出现的概率。
16.14式的左边含义就是在模型未知参数theta的情况下, 类k中包含文档d的概率
右边就是d内的所有term出现在类k中的概率连乘积, 与d内未出现的term的补(1-q)的连乘积
二
和16.14式不同的是, 无wk了。
那么16.15左式的含义就是, 在该模型未知参数下, 文档d出现在该模型下的概率。
Alpha k是每个类的先验概率。
上式右边就是文档d出现在类k的概率, 然后加权求和
三
最大化步, 重新评估模型参数qmk, alpha k
r(nk) 是文档dn 率属于 类k的概率
I(tm, dn), 如果term m在文档dn中出现则为1, 否则为0.
那么这里的qmk, 即term m在类k中出现的概率, 实际上就是个加权值(加权的DF)。 分母是类k中所有文档的概率之和, 分子是类k中包含了term m的文档的概率之和。
alpha k是先验概率, 表示类k的大小。 那么就是 所有文档率属于类k的概率之和除以文档总数
四
期望步, 计算rnk的极大似然值
分子是文档dn在类k中的概率乘以类k的先验概率。 (式16.14)
分母是文档dn在所有类中的概率乘以对应类的先验概率 得到的和。(式16.15)
因此, 文档dn出现在类k中的概率理所当然就是两者之商。
EM算法对initial seeds的要求更严格。 一般使用k-means算法得到k个centroid,从而得到先验概率alpha k以及 qmk。
EM算法是generalized k-means。
K-means是硬的分类方法, 每个doc只能属于一个类; EM是软的分类方法, 每个doc在不同的类中都有一定的概率
具体算法见 weak, em http://blog.csdn.net/aalbertini/archive/2010/08/11/5804318.aspx
初始化
已知k个质心、以及每类中的样本数以及具体样本, 因此可以得到:
m_priors, k个先验概率, 表示每个类的先验大小
m_num_clusters, 类个数k。 一般是输入。
m_model[K][M], 每个类中每个属性的概率, 就是上式中qmk的转置形式
m_weights[N][K], 每个文档在每个类中的概率, 就是16.14/16.15得到的矩阵。 初始值应该为硬分类的结果, 即其中每行只有1个1, 其他都为0。 就是上式中的rnk
M step
根据 m_priors, m_weights 重新计算m_model
E step
根据 m_priors, m_model 重新计算 m_weights。 当达到退出条件时结束