参考:https://blog.csdn.net/eternity1118_/article/details/51516497
一、简介
-
之前介绍过K-Means聚类,尽管这个算法很常用,但可能会遇到像聚类重叠,或聚类的形状不是圆形等问题。今天来学习一个新的聚类算法,叫EM聚类,这个算法本质上来说跟K-Means很像,但比K-Means全面更深入的描述一个聚类,因为除了利用均值(质心),还有方差(为了得到椭圆聚类),以及权重(聚类的size)。
-
为了更好地学习EM,先来举个例子:假设我们从一所高中里随机抽取了500个同学的鞋码数据,现在我们要在不知道任何信息的情况下对这500个数据进行分类,哪个是来自男生,哪个是来自女生;对于任何一堆数据我们都可以用高斯分布来拟合,基于这样一个假设,我们假定男生和女生的鞋码均满足不同参数下的高斯分布,并且给定一个初始的参数值(均值和方差),根据这个已知参数的高斯分布可以粗略地将每一个数据都划分到指定类(属于男生或女生);另外由于男生的鞋码普遍比女生大,一般在39到44之间,那么均值大略就是42左右,所以如果有一个数据是41,那么我们就更大可能地将其分到男生,基于此判别,我们就得到了500个数据的初始分类,然后根据极大似然的求解方法,利用这些属于男生分类的鞋码数据重新估计男生鞋码的高斯分布的参数,同样的方法重新估计出女生鞋码的高斯分布的参数;接着在男生和女生的鞋码分布被重新估计之后,归属于这两个分布的概率也随之会发生变化,那么我们就继续更新,这样多次迭代,直到两类的分布参数变化甚小停止迭代更新。
二、EM中用到的相关概念
2.1 边缘概率分布
2.2 Jensen(詹森)不等式
三、EM(期望最大化)基本原理
- 设样本数据(x1,x2,…,xn)间互相独立,每个样本对应的类别zi未知,我们的目的是确定样本所属类别使得p(xi;zi)最大化,则其似然函数为:
取对数:
(1)
- 定义类别变量zi满足某一分布Qi,并且该分布(离散分布)满足以下条件:
(2)
- 因此,利用上述提到的詹森不等式对公式(1)变形得到:
- 因为:
其实就是
的期望,所以由詹森不等式可推导出如下:
(3)
- 到这里,可能会有人疑惑了,詹森不等式里明明是≤,为什么这里却变成了≥呢?很简单,这是因为詹森不等式是对凸函数而言的,但是我们这里的对数函数很明显它是一个凹函数啊,所以不等式符号要颠倒。
- 至此,通过公式(3)的求解我们得到了似然函数l(theta)的下界,如果theta已知,那么似然函数l(theta)的值就取决于两个概率Qi(zi)、p(xi;zi),因此可以通过调整Qi(zi)\、p(xi;zi)的值,使公式(3)由不等式变成等式,这样来逼近似然函数l(theta)的值。根据詹森不等式可以知道,当且仅当X为常量时,不等式取等号,于是有:
(4)
其中C是常量,对于一系列不同的zi值,进行求和得到:
- 又因为分母上为1(根据公式(2)),所以有:
代入公式(4),并且引入条件概率公式可得:
- 上式给出了关于类别的分布,剩下的工作就是对似然函数l(theta)进行最大化了:
四、小结
-
与K-Means不同的是,EM(期望最大化)聚类并不计算距离,而是计算概率(并且明显要比K-Means复杂的多),用一个给定的多元高斯概率分布模型来估计出一个数据点属于一个聚类的概率,即将每一个聚类看作是一个高斯模型;
同样主要由两步交替进行:
E-step:对于每一个数据点,我们要计算其属于其中每个聚类的概率作为权重:如果一个点很大可能属于一个聚类,就将对应的概率设置为接近1的值,对于那种可能会出现一个点属于2个或多个聚类的情况,就需要建立一个对聚类的概率分布,所以EM算法有一个特性,就是没有严格要求一个点必须要属于一个聚类,这一特性被称为“软聚类(soft clustering)”。
M-step:这一步骤主要是利用上一步计算的权重来估计每个聚类的有关参数(均值、方差):每一个数据点以E-step中的概率作权重,然后与K-means一样计算每一个聚类的均值和方差,进而求取聚类的总体概率或极大似然。
-
这样通过E-step和M-step的不断交替来增加总的对数似然直到收敛,而且最大值也有可能陷入局部最优,所以需要多次迭代。