em notes

K 类个数, M term个数, N doc个数。

 

 

 

em notes_第1张图片

qmkterm m在类k中出现的概率。

16.14式的左边含义就是在模型未知参数theta的情况下, k中包含文档d的概率

右边就是d内的所有term出现在类k中的概率连乘积, d内未出现的term的补(1-q)的连乘积

 

 

 

 

em notes_第2张图片

16.14式不同的是, wk了。

那么16.15左式的含义就是, 在该模型未知参数下, 文档d出现在该模型下的概率。

Alpha k是每个类的先验概率。

上式右边就是文档d出现在类k的概率, 然后加权求和

 

 

 

em notes_第3张图片

大化步, 重新评估模型参数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的概率之和除以文档总数

 

 

 

 

em notes_第4张图片

期望步, 计算rnk的极大似然值

分子是文档dn在类k中的概率乘以类k的先验概率。 (式16.14

分母是文档dn在所有类中的概率乘以对应类的先验概率 得到的和。(式16.15

因此, 文档dn出现在类k中的概率理所当然就是两者之商。

 

 

 

EM算法对initial seeds的要求更严格。 一般使用k-means算法得到kcentroid,从而得到先验概率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得到的矩阵。 初始值应该为硬分类的结果, 即其中每行只有11 其他都为0 就是上式中的rnk

 

M step

根据 m_priors, m_weights 重新计算m_model

 

E step

根据 m_priors, m_model 重新计算 m_weights 当达到退出条件时结束

你可能感兴趣的:(算法,文档,2010)