十大算法 —— EM
1、基本介绍
(1)概述:EM算法的全称是期望-最大化算法。该算法是一种通过迭代求解隐含变量的充分统计量和最大化似然函数以达到估计参数的算法。该算法广受关注,不仅是因为其含有隐含变量的似然函数提供解法,更是因为其完备的数学模型得以保证其求解结果的正确性。EM算法是一种迭代优化策略,由于其每次迭代都分为两步,第一步为E(求期望),第二步为M(最大化),所以称为EM算法。EM算法的基本思想是根据已经给出的观测数据估计出模型参数的值,然后依据上一步估计出的参数值估计缺失数据的值,再根据估计的缺失数据的值加上已经观测到的数据重新对参数值进行估计,然后反复迭代,直到收敛。EM算法作为一种数据添加算法,比其他的数据添加算法(如神经网络拟合、添补法、卡尔曼滤波法等)要更简单,且稳定上升的步骤能非常可靠地找到“最优的收敛值”。
(2)优点
[1] 具有简单性和普适性,可看作是一种非梯度优化的方法;
[2] 该算法是自收敛的分类算法,既不需要事先设定类别,也不需要数据的两两比较、合并等操作。
(3)缺点
[1] 对初始值敏感,初始值不同可能得到不同的参数估计值;
[2] 迭代速度比较慢,次数多,容易陷入局部最优;
[3] 当所需要优化的函数不是凸函数时,容易给出局部最佳解,而不是最优解。
(4)未来研究和发展方向:算法在大规模多维数据集上的应用、初始化参数的确定等。
2、算法流程
(1)问题说明
(2)算法步骤(文字描述版)
(3)算法步骤(数学描述版)
3、详细例子
(1)例子一(靠嘴模拟)
(2)例子二(R语言实操)
[1] 代码
library(mclust) # 安装进行EM算法的mclust包
mc<-Mclust(iris[,1:4],3) # 对iris数据集构建EM模型
plot(mc,what="classification",dimens=c(3,4)) # 画出分类的结果
table(iris$Species,mc$classification) # 查看分类混淆矩阵
[2] 结果