机器学习之期望最大算法
导读
EM算法,全称Expectation Maximization Algorithm,期望最大算法是一种迭代算法,用于含有隐变量(Hidden Variable)的概率参数模型的最大似然估计或极大后验概率估计。
思想
EM 算法的核心思想非常简单,分为两步:Expection-Step
和Maximization-Step
。E-Step主要通过观察数据和现有模型来估计参数,然后用这个估计的参数值来计算似然函数的期望值;而M-Step是寻找似然函数最大化时对应的参数。由于算法会保证在每次迭代之后似然函数都会增加,所以函数最终会收敛。
算法流程
输入:观察数据x=(x(1),x(2),…,x(m)x = (x^{(1)}, x^{(2)},\dots,x^{(m)}x=(x(1),x(2),…,x(m),联合分布p(x,z∣θ)p(x,z|\theta)p(x,z∣θ),条件分布p(z|x,\theta),极大值迭代次数J。
- 随机初始化模型参数θ\thetaθ的初值θ(0)\theta^{(0)}θ(0);
- for j from 1 to J:
- E步:计算联合分布的条件概率期望:
Qi(z(i)):=P(z(i)∣x(i),θ)Q_{i}(z^{(i)}) := P(z^{(i)}|x^{(i)},\theta) Qi(z(i)):=P(z(i)∣x(i),θ) - M步:极大化L(θ)L(\theta)L(θ),得到θ\thetaθ:
θ:=argmaxθ∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)∣θ)\theta := argmax_{\theta} \sum_{i=1}^{m}\sum_{z^{(i)}} Q_{i}(z^{(i)}) log P(x^{(i)}, z^{(i)}|\theta) θ:=argmaxθi=1∑mz(i)∑Qi(z(i))logP(x(i),z(i)∣θ)
- E步:计算联合分布的条件概率期望:
重复E、M步骤直到θ\thetaθ收敛
例子
假设有两枚硬币 A 和 B,他们的随机抛掷的结果如下图所示:
我们很容易计算出两枚硬币抛出正面的概率(即概率分布),硬币A正面的概率为:
θA=2430=0.8\theta_{A} = \frac{24}{30} = 0.8 θA=3024=0.8
硬币B正面的概率为:
θB=920=0.45\theta_{B} = \frac{9}{20} = 0.45 θB=209=0.45
现在我们加入隐变量,抹去每轮投掷的硬币标记:
coin | Statistics |
---|---|
Coin* | 5H, 5T |
Coin* | 9H, 1T |
Coin* | 8H, 2T |
Coin* | 4H, 6T |
Coin* | 7H, 3T |
现在我们不知道每次投的硬币是哪一个,我们想求一下这5次投的硬币序列:Z={z1,z2,z3,z4,z5}Z = \{z_{1},z_{2},z_{3},z_{4},z_{5}\}Z={z1,z2,z3,z4,z5}
碰到这种情况,我们该如何估计θA\theta_{A}θA和θB\theta_{B}θB的值?
我们多了一个隐变量Z={z1,z2,z3,z4,z5}Z = \{z_{1},z_{2},z_{3},z_{4},z_{5}\}Z={z1,z2,z3,z4,z5},代表每一轮所使用的硬币,我们需要知道每一轮抛掷所使用的硬币这样才能估计θA\theta_{A}θA和θB\theta_{B}θB的值,但是估计隐变量Z我们又需要知道θA\theta_{A}θA和θB\theta_{B}θB的值,才能用极大似然估计法去估计出 Z。这就陷入了一个鸡生蛋和蛋生鸡
的问题。
其解决方法就是先随机初始化θA\theta_{A}θA和θB\theta_{B}θB,然后用去估计 Z, 然后基于 Z 按照最大似然概率去估计新的θA\theta_{A}θA和θB\theta_{B}θB,循环至收敛。
计算
E步:初始化θ^A(0)=0.60\hat{\theta}_{A}^{(0)} = 0.60θ^A(0)=0.60和θ^B(0)=0.50\hat{\theta}_{B}^{(0)} = 0.50θ^B(0)=0.50,并计算每个实验中选择的硬币是A还是B的概率,例如第一轮的结果:“H T T T H H T H T H”,即5H 5T,当选择硬币A时抛出这个结果的概率为:
P(z=A∣y1,θ)=P(z=A,y1∣θ)P(z=A,y1∣θ)+P(z=B,y1∣θ)=(0.6)5×(0.4)5(0.6)5×(0.4)5+(0.5)5×(0.5)5=0.45P(z=A|y_{1},\theta) = \frac{P(z = A,y_{1}|\theta)}{P(z = A,y_{1}|\theta) + P(z = B,y_{1}|\theta)} = \frac{(0.6)^{5} \times (0.4)^{5}}{(0.6)^{5} \times (0.4)^{5} + (0.5)^{5} \times (0.5)^{5}} = 0.45 P(z=A∣y1,θ)=P(z=A,y1∣θ)+P(z=B,y1∣θ)P(z=A,y1∣θ)=(0.6)5×(0.4)5+(0.5)5×(0.5)5(0.6)5×(0.4)5=0.45
当选择硬币B时抛出这个结果的概率为:
P(z=B∣y1,θ)=1−P(z=A∣y1,θ)=0.55P(z=B|y_{1},\theta) = 1 - P(z=A|y_{1},\theta) = 0.55 P(z=B∣y1,θ)=1−P(z=A∣y1,θ)=0.55
按这种方法计算5次投掷使用硬币A和硬币B的概率分别为:
M步:
结合上面计算出的硬币A和硬币B的概率和50次投掷结果,我们利用期望分别求出硬币A和硬币B对投掷结果的贡献。例如第一轮的结果:“H T T T H H T H T H”,即5H 5T,硬币A对此的贡献为,正面:0.45×5=2.250.45 \times 5 = 2.250.45×5=2.25(5代表正面是5次);反面:0.45×5=2.750.45 \times 5 = 2.750.45×5=2.75(5代表反面是5次);第二轮结果:“H H H H T H H H H H”,即9H 1T,硬币A对此的贡献为:正面:0.8×9=2.250.8 \times 9 = 2.250.8×9=2.25(9代表正面是9次);反面:0.8×1=2.750.8 \times 1 = 2.750.8×1=2.75(1代表反面是1次),以此类推。于是我们可以得到:
把硬币A对这5次投掷正反面的贡献都计算出来之后求和:
正面贡献:21.3反面贡献:8.6正面贡献:21.3\\ 反面贡献:8.6 正面贡献:21.3反面贡献:8.6
更新θA\theta_{A}θA:
θ^A(1)=21.321.3+8.6=0.71\hat{\theta}_{A}^{(1)} = \frac{21.3}{21.3 + 8.6} = 0.71 θ^A(1)=21.3+8.621.3=0.71
同理更新θB\theta_{B}θB:
θ^B(1)=11.711.7+8.4=0.58\hat{\theta}_{B}^{(1)} = \frac{11.7}{11.7 + 8.4} = 0.58 θ^B(1)=11.7+8.411.7=0.58
至此重新估计出了参数值。如此反复迭代,我们就可以算出最终的参数值。
上述讲解对应下图:
总结
- 参数
$ \theta $
(Model Parameters):中心点的坐标$ \theta = \{\mu_{1},\mu_{2}...\mu_{k}\} $
- 参数
$ \gamma $
(Latent Variables):隐含状态参量,即每 个点属于哪个类别
损失函数(最小化目标minimize):
l(θ)=∑i=1n∑k=1kγik∣∣xi−μk∣∣22l(\theta) = \sum_{i=1}^{n} \sum_{k=1}^{k} \gamma_{ik}||x_{i} - \mu_{k}||_{2}^{2} l(θ)=i=1∑nk=1∑kγik∣∣xi−μk∣∣22
计算过程(参照EM算法,交替优化):
- E-step:随机初始化中心点(固定中心点θ\thetaθ), 找出每个点属于哪个类别,即找出距离每个点最近的中心点,并把该点标记为那个类别,得到γ\gammaγ
- M-step:更新参数θ\thetaθ,即更新隐含状态中心点,对于所有类别属于kkk的点来说,计算它们的中心,得到了那个类别的中心点μk\mu_{k}μk
- E-step和M-step循环
机器学习之期望最大算法相关推荐
- 机器学习之期望最大化算法(Expectation Maximization, EM)
文章目录 期望最大化算法(Expectation Maximization, EM) 1. 基本内容 2. 从三硬币模型 2.1 问题提出 2.2 解决方案 2.3 换个角度 3. 到高斯混合模型(G ...
- EM算法:期望最大算法,原来你是这么得灵性,很多机器学习的参数都是通过EM算法求解的
EM算法:期望最大算法,原来你是这么得灵性,很多机器学习的参数都是通过EM算法求解的 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联 ...
- gmm中隐变量是什么的_机器学习-隐变量模型和期望最大算法
目录 1 隐变量模型 1.1 隐变量模型意义 1.2 高斯混合模型 GMM 1.3 其他模型(应用) 2 期望最大算法(EM) 2.1 EM算法意义 2.2 EM算法推导 2.3 EM算法 2.4 E ...
- EM算法(Expectation Maximization)期望最大化算法
原文:EM(期望最大化)算法初步认识 - 大数据和AI躺过的坑 - 博客园 https://www.cnblogs.com/zlslch/p/6965374.html 机器学习十大算法之一:EM算法( ...
- 基于Spark的机器学习实践 (九) - 聚类算法
0 相关源码 1 k-平均算法(k-means clustering)概述 1.1 回顾无监督学习 ◆ 分类.回归都属于监督学习 ◆ 无监督学习是不需要用户去指定标签的 ◆ 而我们看到的分类.回归算法 ...
- 机器学习系列之EM算法
机器学习系列之EM算法 我讲EM算法的大概流程主要三部分:需要的预备知识.EM算法详解和对EM算法的改进. 一.EM算法的预备知识 1.极大似然估计 (1)举例说明:经典问题--学生身高问题 我们需要 ...
- 北京内推 | 联想研究院机器学习团队招聘因果推理算法研究实习生
合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 联想研究院 联想研究院创立于 1999 年,是联想集团的公司级技术研发机构 ...
- 机器学习定义及常用算法
转载自:http://www.cnblogs.com/shishanyuan/p/4747761.html?utm_source=tuicool 1 . 机器学习概念 1.1 机器学习的定义 在维 ...
- NLP --- 隐马尔可夫HMM(EM算法(期望最大化算法))
期望最大化 (Expectation Maximization) 算法最初是由 Ceppellini[2] 等人 1950 年在讨论基因频率的估计的时候提出的.后来又被 Hartley[3] 和Bau ...
最新文章
- Ubuntu14.04 64位上配置终端显示git分支名称
- 《精通Python设计模式》学习结构型之享元模式
- How can ifm help the SME WELL?
- visual studio code python插件下载_visual studio code 的必装推荐插件plugin, vscode, vsc
- 四种连接数据库的方法(DriverManager、DataSource子类、DBCP、c3p0)
- uWSGI 和 nginx 的区别?
- JAVA框架Struts2 结果页配置
- 收藏 : 50个Excel逆天功能,一秒变“表哥”
- Android mock for循环,Android单元测试(五):依赖注入,将mock方便的用起来
- pcre安装_Nginx | Nginx的介绍和安装
- Windows 下 Composer 与 Laravel 4 的安装
- 帝国CMS 二级联动 基于optionTree插件
- Linux宝库名人轶事栏目 | 人生若只如初见,我与开源圈
- python xlsxwriter生成图片保存_Python xlsxwriter库 图表Demo
- 苹果MAC系统读写NTFS格式u盘硬盘方法
- isalpha isdigit isalnum isupper 检测字母或数字函数
- module() takes at most 2 arguments (3 given)
- 【JAVA小游戏】炸飞机
- 线程中的setDaemon方法
- CommandArgument属性 绑定参数
热门文章
- Python+opencv实图片定位
- 物业维修报修小程序毕业设计毕设作品开题报告答辩PPT
- 用eclipse连接数据库捕获java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数据。
- 女朋友问的那些问题—log.info在测试环境正常打印,上了生产就废?
- 2022年工业机器人的5大应用行业
- STC89C52引脚
- 有符号类型和无符号类型
- Hyperspectral imagery dataset
- 全方位解读TS501微型数采仪的功能及用法
- 服务器退出安全狗服云,安全狗服云远程重启服务器的方法分享