当无法通过差异最大化“额头”可能性时,EM算法是有用的数据建模工具。聚类是该算法的主要任务之一。本文提供了用于聚类的EM算法的一般结论。
任务
很多点 必须被分成群集。
解决思路
我们组成了集群中点分布的概率模型。我们找到模型参数,可以观察到这些参数最大值。使用这些参数,我们将能够确定最可能的点属于哪个群集。。
资料模型
我们介绍了本课程中使用的一系列符号。
是观察一个点的概率。
-观察集合的概率。
-概率满足点集群中的 x。此分布通过参数(或参数向量)进行参数化个体为集群。
是聚类的概率,即 随机选择的点属于聚类的概率。随机选择的点恰好是指一个簇,因此。
从上面的定义可以得出: , .. .
, :
, , :
. (, TensorFlow PyTorch).
:
L := log p(X)
while log p(X) :
L log p(X)
w, theta = argmax L
, , . :
- : "" , .
- , .
, "" , .
:
. :
:
. :
, .
: . :
:
(E-)
. , .
, , :
, :
:
: . - ( KL-) "" .
, — KL-:
KL- , , — KL- . : KL- , — . :
.
(M-)
: . :
:
第二项与参数无关 和 ,因此,我们将仅进一步优化第一个术语:
我们将乘积对数分解为对数之和,得到:
第一个问题通过拉格朗日乘数法解决。结果:
第二个问题的解决方案取决于集群分布的特定类型 。如您所见,对于其解决方案,您不再需要以对数的符号处理总和,因此,例如,对于高斯分布,该解决方案可以解析地编写。
总
我们发现了用于聚类的EM算法迭代的本质,并了解了它们的公式是如何以一般方式导出的。