EM聚类算法

当无法通过差异最大化“额头”可能性时,EM算法是有用的数据建模工具。聚类是该算法的主要任务之一。本文提供了用于聚类的EM算法的一般结论。


任务


很多点 X={xi,i1..N}必须被分成K群集。


解决思路


我们组成了集群中点分布的概率模型。我们找到模型参数,可以观察到这些参数X最大值。使用这些参数,我们将能够确定最可能的点属于哪个群集。x


资料模型


我们介绍了本课程中使用的一系列符号


p(x)是观察一个点的概率x


p(X)=i=1Np(xi)-观察集合的概率X


pj(x)=φ(x;θj)-概率满足点x集群中的 xj此分布通过参数(或参数向量)进行参数化θj个体为集群j


wj是聚类的概率j,即 随机选择的点属于聚类的概率j随机选择的点恰好是指一个簇,因此j=1Kwj=1


从上面的定义可以得出: p(x)=j=1Kwjpj(x)=j=1Kwjφ(x;θj), .. .


, X:


p(X)=i=1N(j=1Kwjφ(xi;θj))



wθ, , :


w,θ=argmax p(X)=argmax logp(X)=argmaxw,θi=1Nlog(j=1Kwjφ(xi;θj))


. j=1Kwj=1(, TensorFlow PyTorch).


:


L :=   log p(X)
while log p(X)  :
     L  log p(X)
    w, theta = argmax L

, logp(X), . L:


  1. L: "" , logp(X).
  2. wθ, L.

, "" , .


L


:


logp(X)=i=1Nlog(j=1Kwjφ(xi;θj))


. gixi:


gi(j)p( j| i)


:


i=1Nlog(j=1Kwjφ(xi;θj))=i=1Nlog(j=1Kgi(j)gi(j)wjφ(xi;θj))


. :


log(iqixi)iqilogxi


, qi1.


gi(j): j=1Kgi(j)=1. :


i=1Nlog(j=1Kgi(j)gi(j)wjφ(xi;θj))i=1Nj=1Kgi(j)log(wjφ(xi;θj)gi(j))


:


L(g,w,θ)i=1Nj=1Kgi(j)log(wjφ(xi;θj)gi(j))


L(E-)


L(g,w,θ)logp(X). wθ, Lg.


logp(X)L, , :


logp(X)L(g,w,θ)=i=1Nlogp(xi)i=1Nj=1Kgi(j)log(wjφ(xi;θj)gi(j))=


=i=1N(logp(xi)j=1Kgi(j)j=1Kgi(j)logwjφ(xi;θj)gi(j))=i=1Nj=1Kgi(j)logp(xi)gi(j)wjφ(xi;θj)


, j:


p(j|xi)=φ(xi;θj)wjp(xi)


:


i=1Nj=1Kgi(j)logp(xi)gi(j)wjφ(xi;θj)=i=1Nj=1Kgi(j)loggi(j)p(j|xi)=i=1NEgigip(j|xi)


: . - ( KL-) "" .


, logp(X)L— KL-:


logp(X)L(g,w,θ)=i=1NKL(gi||p(j|xi))


KL- , , — KL- . : KL- , — . gi(j)p(j|xi):


gi(j)=p(j|xi)=wjφ(xi;θj)p(xi)


gi(j)Llogp(X).


L(M-)


: . :


  • g;
  • wθ.

L:


L(g,θ)=i=1N(j=1Kgi(j)logwjp(xi;θj)gi(j))=


=i=1Nj=1Kgi(j)log(wjp(xi;θj))i=1Nj=1Kgi(j)loggi(j)


第二项与参数无关 wθ,因此,我们将仅进一步优化第一个术语:


w,θ=argmaxw,θi=1Nj=1Kgi(j)log(wjφ(xi;θj))


我们将乘积对数分解为对数之和,得到:


w=argmaxwi=1Nj=1Kgi(j)logwj,   j=1wj=1


θj=argmaxi=1Ngi(j)logφ(xi;θj)


第一个问题通过拉格朗日乘数法解决。结果:


wj=1Ni=1Ngi(j)


第二个问题的解决方案取决于集群分布的特定类型 φ(xi;θj)如您所见,对于其解决方案,您不再需要以对数的符号处理总和,因此,例如,对于高斯分布,该解决方案可以解析地编写。



我们发现了用于聚类的EM算法迭代的本质,并了解了它们的公式是如何以一般方式导出的。


All Articles