机器学习算法总结(六)——EM算法与高斯混合模型
极大似然估计是利用已知的样本结果,去反推最有可能(最大概率)导致这样结果的参数值,也就是在给定的观测变量下去估计参数值。然而现实中可能存在这样的问题,除了观测变量之外,还存在着未知的隐变量,因为变量未知,因此无法直接通过最大似然估计直接求参数值。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算法与高斯混合模型的更多相关文章
- 【机器学习】GMM和EM算法
机器学习算法-GMM和EM算法 目录 机器学习算法-GMM和EM算法 1. GMM模型 2. GMM模型参数求解 2.1 参数的求解 2.2 参数和的求解 3. GMM算法的实现 3.1 gmm类的定 ...
- opencv3中的机器学习算法之:EM算法
不同于其它的机器学习模型,EM算法是一种非监督的学习算法,它的输入数据事先不需要进行标注.相反,该算法从给定的样本集中,能计算出高斯混和参数的最大似然估计.也能得到每个样本对应的标注值,类似于kmea ...
- EM算法及其应用: K-means 与 高斯混合模型
EM算法及其应用(一) EM算法及其应用(二): K-means 与 高斯混合模型 上一篇阐述了EM算法的主要原理,这一篇来看其两大应用 -- K-means 与 高斯混合模型,主要由EM算法的观点出 ...
- 机器学习笔记—混合高斯和 EM 算法
本文介绍密度估计的 EM(Expectation-Maximization,期望最大). 假设有 {x(1),...,x(m)},因为是无监督学习算法,所以没有 y(i). 我们通过指定联合分布 p( ...
- 机器学习(七)EM算法、GMM
一.GMM算法 EM算法实在是难以介绍清楚,因此我们用EM算法的一个特例GMM算法作为引入. 1.GMM算法问题描述 GMM模型称为混合高斯分布,顾名思义,它是由几组分别符合不同参数的高斯分布的数据混 ...
- 斯坦福机器学习视频笔记 Week9 异常检测和高斯混合模型 Anomaly Detection
异常检测,广泛用于欺诈检测(例如“此信用卡被盗?”). 给定大量的数据点,我们有时可能想要找出哪些与平均值有显着差异. 例如,在制造中,我们可能想要检测缺陷或异常. 我们展示了如何使用高斯分布来建模数 ...
- SIGAI机器学习第二十三集 高斯混合模型与EM算法
讲授高斯混合模型的基本概念,训练算法面临的问题,EM算法的核心思想,算法的实现,实际应用. 大纲: 高斯混合模型简介实际例子训练算法面临的困难EM算法应用-视频背景建模总结 高斯混合模型简写GMM,期 ...
- 猪猪的机器学习笔记(十四)EM算法
EM算法 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十次次课在线笔记.EM算法全称为Expectation Maximization Algorithm,既最大 ...
- 机器学习之EM算法(五)
摘要 EM算法全称为Expectation Maximization Algorithm,既最大期望算法.它是一种迭代的算法,用于含有隐变量的概率参数模型的最大似然估计和极大后验概率估计.EM算法经常 ...
随机推荐
- Runnable和Callable接口辨析
突然发现和启动一个线程有关的有三函数,run(), call(), start(),有点小乱,所以特别梳理一下 首先说一下start(),这个是最好说的,感觉start()和run()这俩名字是真的有 ...
- 一个优秀的SEOer必须掌握的三大标配技术
首先,认识网页代码是基础 这里所讲的网页代码是指HTML代码,并不是指复杂的PHP模板技术.一般的培训机构总是提倡学SEO不用学网页代码,只要会购买域名空间搭建网站就行,因为现在的网站模板太丰富了,对 ...
- PHP7.27: Cookie and Session
<?php // 有的浏览器不支持Cookie,这要考虑的 $cFile="count.txt"; $acctime=time(); if(file_exists($cFil ...
- 微信小程序-查询快递
1.新建快速启动项目 2.在设置里面勾选不校验合法域名,以防编译报错 3.在app.json中改一下窗口表现:app.json—"navigationBarTitleText": ...
- phpcms配置列表页以及获得文章发布时间
<div class="moocConDetail"> {pc:content action="lists" catid="11" ...
- 从发布订阅模式到redux(一)
最近在学习的过程中,学习了一些关于redux的一些知识,学之前用redux,虽然会用但是实现的原理就不是特别清楚,天天沉迷于搬砖 总是这木搬砖也不是个事啊,就准备开始深入了解一些原理性的东西 首先在看 ...
- 获取请求的ip工具类
package com.example.util; import javax.servlet.http.HttpServletRequest; /** * get remote msg * 获取访问的 ...
- iOS---------如何搭建ipv6环境
第一步:首先打开共享 第二步:点击互联网共享,然后按option键.会出现创建NAT64网络 第三步:点击Wi-Fi共享,设置网络名称,频段:11.安全性:WPA2个人级.密码设置8位就可以了.然后在 ...
- Scrollview嵌套Recyclerview嵌套滑动冲突,导致滑动时会出现卡顿的现象
recyclerView.setLayoutManager(new GridLayoutManager(mContext,2){ @Override public boolean canScrollV ...
- 「Android」消息驱动Looper和Handler类分析
Android系统中的消息驱动工作原理: 1.有一个消息队列,可以往这个消息队列中投递消息; 2.有一个消息循环,不断的从消息队列中取得消息,然后处理. 工作流程: 1.事件源将待处理的消息加入到消息 ...