极大似然估计是利用已知的样本结果,去反推最有可能(最大概率)导致这样结果的参数值,也就是在给定的观测变量下去估计参数值。然而现实中可能存在这样的问题,除了观测变量之外,还存在着未知的隐变量,因为变量未知,因此无法直接通过最大似然估计直接求参数值。EM算法是一种迭代算法,用于含有隐变量的概率模型的极大似然估计,或者说是极大后验概率估计。

1、经典的三硬币模型  

  引入一个例子来说明隐变量存在的问题。假设有3枚硬币,分别记作A,B,C。这些硬币正面出现的概率分别是π,p,q。我们的实验过程如下,先投掷硬币A,根据其结果选出硬币B和硬币C,正面选B,反面选C;然后投掷选出的硬币,此时出现正面记作1,出现反面记作0。在这个例子中我们观察到的变量只是B或者C的结果,而对A的结果并不知道,在这里A的结果也就是我们的隐变量。A的结果对最终的结果是有影响的,因此在估计参数时必须将A的结果考虑进去。

1、EM算法

  我们将观测变量表示为Y = (Y1,Y2,....,Yn),隐变量表示为Z = (Z1,Z2,....,Zn),则观测数据的似然函数可以表示为

  

  在这里P(Y|θ) 是P(Y, Z|θ) 的边缘概率,通过转换后可以表示成右边的形式,我们将其转换成对数形式,这样便于求联合概率

  

  然而对于这样的式子直接根据极大化求θ的值是很困难的,因为这里还存在隐变量Z,在这里引入EM算法,通过迭代求解,假设在第i 次迭代后θ的估计值为θ(i)。我们希望新估计值能是L(θ)增加,通过迭代逐步的达到最大值。为此我们考虑第i+1步迭代后两者的差:

  

  利用Jensen不等式将上述式子展开并得到其下界(对数函数是凹函数):

  

  令

  

  则有

  

  在这里B(θ, θ(i)) 是L(θ) 的一个下界,而且由的表达式可知

  

  因此任何能使得B(θ, θ(i)) 增大的θ,也能使得L(θ) 增大。因此求θ值使得B(θ, θ(i)) 增大就可以转变成求θ使得L(θ) 增大,即求

  

  将上述式子展开可得(在这里去掉常数项,因为常数项不会影响最终的结果)

  

  因此问题就演变成了求Q函数的极大化。EM算法的整体思路就是初始化θ的值为θ(0),然后通过迭代去求得最终的θ值,迭代的终止条件应该是L(θ) 的增加不明显(具体可以设定一个增加值的阀值来控制)。下面的图可以形象的表示EM算法的迭代更新过程

  

  EM算法的具体流程如下:

  输入:观测变量数据Y,隐变量数据Z,联合分布P(Y, Z|θ),条件分布P(Z|Y, θ)

  输出:模型参数θ

  1)选择参数θ的初始值θ(0),开始迭代

  2)E步:记θ(i)次迭代参数为θ的估计值,在第i+1次迭代的E步,计算(基于当前求得的模型参数θ猜测隐变量的期望值,因此E步也称为期望步)

  

  3)M步:求使得Q函数极大化的θ值,确定第i+1次迭代的参数的估计值θ(i+1)

  

  4)重复2, 3步直至收敛

  注意:EM算法是对初始化参数敏感的

2、高斯混合模型(GMM)

  EM算法的一个重要应用场景就是高斯混合模型的参数估计。高斯混合模型就是由多个高斯模型组合在一起的混合模型(可以理解为多个高斯分布函数的线性组合,理论上高斯混合模型是可以拟合任意类型的分布),例如对于下图中的数据集如果用一个高斯模型来描述的话显然是不合理的

  

  对于上图如果我们用两个高斯模型来描述,则如下

  

  然而对于两个高斯模型我们如何将其组合在一起呢,最简单的方式就是通过线性组合的形式来组合,其具体表达式如下:

  

  其中αk是系数,αk ≥ 0,且所有的α总和为1,k表示第k个模型,其中Φ(y|θk) 是高斯分布密度(θk = (μk,σk2)),具体表达式如下

  

  高斯混合模型常用语聚类中(现实中大多数分布都是正态分布,而在聚类中的各个类别可能是分布参数不同的正态分布)。对于高斯模型的应用大致是先随机在这K个模型中任选一个模型(αk是第k个模型被选中的概率,注意在这里的混合模型和集成学习中的模型是不一样的,这里实际应用的只是混合模型中的一个),然后再用这个模型进行预测。而且在用高斯混合模型进行聚类时,混合模型中的模型个数k事实上就是聚类的簇数k。

  用EM算法来估计高斯混合模型的参数,在这里参数θ = (α1,α2,...,αk;θ1,θ2,...,θk),在估计之前我们得预先明确隐变量。先假定观测数据yj(j = 1,2,...,N),具体yj的产生过程如下,首先依照概率αk选择第k个高斯分布模型,然后用这个模型生成观测数据yj。在这里观测数据是已知的,而观测数据具体来自哪个模型是未知的(这就和之前提过的三硬币模型是很相似的,知道模型被选择的概率就好比知道选择B,C硬币的概率,但是却不知道本次预测的结果是由B得出的还是C得出的),因此就引出了我们的隐变量,隐变量的具体表达式如下:

  

  γjk是0-1随机变量,确定了观测变量和隐变量之后,那么完全数据就是

  

  之后就可以用EM算法去估计参数θ,具体流程如下

  1)初始化θ值,开始迭代

  2)E步:依照当前的模型参数,计算

  

  3)M步:计算新一轮迭代的模型参数

  

  4)重复2, 3步直至算法收敛

  其实高斯混合模型和K-means(也可以用EM算法描述)方法很相似,简单来说,K-means的结果是每个数据点被分配到其中某一类中,而高斯混合模型是给出这些点被分配给某一类的概率,可以看作是软聚类(也就是允许两个类之间有重合区域)。高斯混合模型是对初始值敏感的,也就是说如果运气不好,选取的初始值不好,最终的模型结果也不会很好,因此很多时候我们会用K-means做预训练,获得较好的结果,然后再用高斯混合模型进行训练进一步优化预测结果(高斯混合模型也是要给出聚类的簇数K值,在初始化参数时给出的)具体的做法就是:先用K-means粗略的估计出簇心,然后将簇心作为高斯混合模型的初始均值(μ值),然后再去估计高斯混合模型中的参数。

机器学习算法总结(六)——EM算法与高斯混合模型的更多相关文章

  1. 【机器学习】GMM和EM算法

    机器学习算法-GMM和EM算法 目录 机器学习算法-GMM和EM算法 1. GMM模型 2. GMM模型参数求解 2.1 参数的求解 2.2 参数和的求解 3. GMM算法的实现 3.1 gmm类的定 ...

  2. opencv3中的机器学习算法之:EM算法

    不同于其它的机器学习模型,EM算法是一种非监督的学习算法,它的输入数据事先不需要进行标注.相反,该算法从给定的样本集中,能计算出高斯混和参数的最大似然估计.也能得到每个样本对应的标注值,类似于kmea ...

  3. EM算法及其应用: K-means 与 高斯混合模型

    EM算法及其应用(一) EM算法及其应用(二): K-means 与 高斯混合模型 上一篇阐述了EM算法的主要原理,这一篇来看其两大应用 -- K-means 与 高斯混合模型,主要由EM算法的观点出 ...

  4. 机器学习笔记—混合高斯和 EM 算法

    本文介绍密度估计的 EM(Expectation-Maximization,期望最大). 假设有 {x(1),...,x(m)},因为是无监督学习算法,所以没有 y(i). 我们通过指定联合分布 p( ...

  5. 机器学习(七)EM算法、GMM

    一.GMM算法 EM算法实在是难以介绍清楚,因此我们用EM算法的一个特例GMM算法作为引入. 1.GMM算法问题描述 GMM模型称为混合高斯分布,顾名思义,它是由几组分别符合不同参数的高斯分布的数据混 ...

  6. 斯坦福机器学习视频笔记 Week9 异常检测和高斯混合模型 Anomaly Detection

    异常检测,广泛用于欺诈检测(例如“此信用卡被盗?”). 给定大量的数据点,我们有时可能想要找出哪些与平均值有显着差异. 例如,在制造中,我们可能想要检测缺陷或异常. 我们展示了如何使用高斯分布来建模数 ...

  7. SIGAI机器学习第二十三集 高斯混合模型与EM算法

    讲授高斯混合模型的基本概念,训练算法面临的问题,EM算法的核心思想,算法的实现,实际应用. 大纲: 高斯混合模型简介实际例子训练算法面临的困难EM算法应用-视频背景建模总结 高斯混合模型简写GMM,期 ...

  8. 猪猪的机器学习笔记(十四)EM算法

    EM算法 作者:樱花猪   摘要: 本文为七月算法(julyedu.com)12月机器学习第十次次课在线笔记.EM算法全称为Expectation Maximization Algorithm,既最大 ...

  9. 机器学习之EM算法(五)

    摘要 EM算法全称为Expectation Maximization Algorithm,既最大期望算法.它是一种迭代的算法,用于含有隐变量的概率参数模型的最大似然估计和极大后验概率估计.EM算法经常 ...

随机推荐

  1. 类修饰符为abstract与final

    类修饰符为abstract:这个类可以被继承,因此可以通过子类来产生实例. 类修饰符为final:这个类不能被继承. 类修饰符不能同时为abstract.final:编译器会提示: 非法的修饰符组合: ...

  2. 带你了解源码中的 ThreadLocal

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 这次想来讲讲 ThreadLocal 这个很神奇的东西,最开始接触到这个是看了主席的<开发艺术探索>,后来是在研究 Vi ...

  3. SQL 读取XML到Datatable

    DECLARE @hdoc INT --XML 数据格式 --------------------------------------------------------- ) SET @doc = ...

  4. 年会抽奖 抽奖系统 抽奖软件 C# Winform

    年会抽奖软件: Q.Q 358189777 C#.  数据库Access: 1.系统启动,自动全屏展示. 2.背景随心切换. 3.快捷键方便自如: F1:弹出设置界面 F2:查询人员名单.中奖名单 F ...

  5. 判断浏览器的名称,区分360的ie和谷歌内核

    function getBrowserInfo() { var ua = navigator.userAgent.toLocaleLowerCase(); var browserType = null ...

  6. VMWAR-workstatuon : 安装win10、server 2008 r2、server 2012 r2

    最新版的VMWAR 不是很文档,建议大家还是下载稳定版,截止当前最新版的为15,用了,有点问题. 换成14~ 可以了.(15创建虚拟机安装vmware tools 怎么都安装不了). 关于创建虚拟机, ...

  7. 洛谷P3178 [HAOI2015]树上操作

    题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 ...

  8. 2018-05-09 5分钟入门CTS-尝鲜中文版TypeScript

    知乎原链 本文为中文代码示例之5分钟入门TypeScript的CTS版本. CTS作者是@htwx(github). 它实现了关键词和标准库的所有命名汉化. 本文并未使用附带的vscode相关插件(包 ...

  9. SAP MM 销售订单库存与普通库存之间相互转换过账后对于EBEWH以及MBEWH表的更新

    SAP MM 销售订单库存与普通库存之间相互转换过账后对于EBEWH以及MBEWH表的更新 1,DEMO数据 物料号:1300009995 工厂:2160 销售订单号/item号:0010097627 ...

  10. spring boot mybatis 打成可执行jar包后启动UnsatisfiedDependencyException异常

    我的spring boot + mybatis项目在idea里面执行正常,但发布测试环境打成可执行jar包后就启动失败,提示错误如下: [ ERROR] [2018-08-30 17:23:48] o ...