数据挖掘算法08 - EM
EM
EM 的英文是 Expectation Maximization,所以 EM 算法也叫最大期望算法。
例子
- 分菜
- 抛硬币
EM 聚类三步骤
你能从这个例子中看到三个主要的步骤:初始化参数、观察预期、重新估计。首先是先给每个碟子初始化一些菜量,然后再观察预期,这两个步骤实际上就是期望步骤(Expectation)。如果结果存在偏差就需要重新估计参数,这个就是最大化步骤(Maximization)。这两个步骤加起来也就是 EM 算法的过程。
EM 算法的工作原理
说到 EM 算法,我们先来看一个概念“最大似然”,英文是 Maximum Likelihood,Likelihood 代表可能性,所以最大似然也就是最大可能性的意思。
- 什么是最大似然呢?
举个例子,有一男一女两个同学,现在要对他俩进行身高的比较,谁会更高呢?根据我们的经验,相同年龄下男性的平均身高比女性的高一些,所以男同学高的可能性会很大。这里运用的就是最大似然的概念。
- 最大似然估计是什么呢?
它指的就是一件事情已经发生了,然后反推更有可能是什么因素造成的。还是用一男一女比较身高为例,假设有一个人比另一个人高,反推他可能是男性。最大似然估计是一种通过已知结果,估计参数的方法。
- 那么 EM 算法是什么?它和最大似然估计又有什么关系呢?
EM 算法是一种求解最大似然估计的方法,通过观测样本,来找出样本的模型参数。
简单总结下上面的步骤,你能看出 EM 算法中的 E 步骤就是通过旧的参数来计算隐藏变量。然后在 M 步骤中,通过得到的隐藏变量的结果来重新估计参数。直到参数不再发生变化,得到我们想要的结果。
EM 聚类的工作原理
上面你能看到 EM 算法最直接的应用就是求参数估计。如果我们把潜在类别当做隐藏变量,样本看做观察值,就可以把聚类问题转化为参数估计问题。这也就是 EM 聚类的原理。
总结
EM 算法相当于一个框架,你可以采用不同的模型来进行聚类,比如 GMM(高斯混合模型),或者 HMM(隐马尔科夫模型)来进行聚类。GMM 是通过概率密度来进行聚类,聚成的类符合高斯分布(正态分布)。而 HMM 用到了马尔可夫过程,在这个过程中,我们通过状态转移矩阵来计算状态转移的概率。HMM 在自然语言处理和语音识别领域中有广泛的应用。
在 EM 这个框架中,E 步骤相当于是通过初始化的参数来估计隐含变量。M 步骤就是通过隐含变量反推来优化参数。最后通过 EM 步骤的迭代得到模型参数。
通过上面举的炒菜的例子,你可以知道 EM 算法是一个不断观察和调整的过程。
通过求硬币正面概率的例子,你可以理解如何通过初始化参数来求隐含数据的过程,以及再通过求得的隐含数据来优化参数。
通过上面 GMM 图像聚类的例子,你可以知道很多 K-Means 解决不了的问题,EM 聚类是可以解决的。在 EM 框架中,我们将潜在类别当做隐藏变量,样本看做观察值,把聚类问题转化为参数估计问题,最终把样本进行聚类。
EM 聚类的实战,具体使用的是 GMM 高斯混合模型。从整个流程中可以看出,我们需要经过数据加载、数据探索、数据可视化、特征选择、GMM 聚类和结果分析等环节。
聚类和分类不一样,聚类是无监督的学习方式,也就是我们没有实际的结果可以进行比对,所以聚类的结果评估不像分类准确率一样直观,那么有没有聚类结果的评估方式呢?这里我们可以采用 Calinski-Harabaz 指标。
指标分数越高,代表聚类效果越好,也就是相同类中的差异性小,不同类之间的差异性大。当然具体聚类的结果含义,我们需要人工来分析,也就是当这些数据被分成不同的类别之后,具体每个类表代表的含义。
另外聚类算法也可以作为其他数据挖掘算法的预处理阶段,这样我们就可以将数据进行降维了。
思考
用自己的话说一下 EM 算法的原理吗?EM 聚类和 K-Means 聚类的相同和不同之处又有哪些?
想起了一个故事,摘叶子:要找到最大的叶子
- 先心里大概有一个叶子大小的概念(初始化模型)
- 在三分之一的的路程上,观察叶子大小,并修改对大小的评估(观察预期,并修改参数)
- 在三分之二的路程上,验证自己对叶子大小模型的的评估(重复1,2过程)
- 在最后的路程上,选择最大的叶子(重复1.2,直到参数不再改变)
相同点
- EM,KMEANS,都是随机生成预期值,然后经过反复调整,获得最佳结果
- 聚类个数清晰
不同点
- EM是计算概率,KMeans是计算距离
- 计算概率,概率只要不为0,都有可能即样本是每一个类别都有可能
- 计算距离,只有近的票高,才有可能,即样本只能属于一个类别
EM 就好像炒菜,做汤,盐多了放水,味淡了再放盐,直到合适为止。然后,就能得出放盐和水的比例(参数)