EM算法直观认识
Expectation Maximization, 字面翻译为, "最大期望".
我个人其实一直都不太理解EM算法, 从我个人的渊源来看, 之前数理统计里面的参数估计, 也是没有太理解. 但困难总是要面对, 必须啃下它, 因其真的不太直观, 所以先举个经典的栗子.
栗子-硬币正面概率
理想我是上帝
假设咱有两个硬币, 分别为 coin A 和 coin B
同样假设我们上帝, 知道做实验是用的哪个硬币 的情况下, 扔的结果如下: (H 表正面, T表反面)
- B: H T T T H H T H T H
- A: H H H H T H H H H H
- A: H T H H H H H T H H
- B: H T H T T T H H T T
- A: T H H H T H H H T H
用 Maximum likelihood (极大似然), 这里就是用样本去估计总体呀, 对应结果如下:
| 知道是哪个币 | coin A | coin B |
|---|---|---|
| B | 5正, 5反 | |
| A | 9正, 1反 | |
| A | 8正, 2反 | |
| B | 4正, 6反 | |
| A | 7正, 3反 |
站在上帝视角, 已经知道每次实验是使用谁(硬币A, B), 因此很容易统计得到:
\(\hat \theta_A = \frac {9+8+7}{24 + 6} = \frac {24}{30} = 0.8\)
同样易知:
$\hat \theta_B = \frac {5 + 4 }{9+11} = \frac {9}{20} =0.45 $
此刻就可以发现, coin A 有问题, 正面朝上的概率竟达到 0.8, 这不可能.
现实我是凡人
还是刚刚那个扔硬币的结果, 没有上帝视角,不知道是用的哪个硬币
- ? : H T T T H H T H T H
- ? : H H H H T H H H H H
- ? : H T H H H H H T H H
- ? : H T H T T T H H T T
- ? : T H H H T H H H T H
这时候要计算 硬币 A, B 的正面朝上的概率, 即引出了 EM算法.
假设1: 不同硬币,对于每一个结果是 H 或 T 也是有一个概率, so, 先假设 A, B 正面朝上概率:
\(\hat \theta_A^{(0)} = 0.6\)
\(\hat \theta^{(0)}_B = 0.5\)
假设2: 对于每次试验的结果, 是来自不同硬币也有一个概率, (和要为1的哦) \(Q_i(z = A) = 0.6, \ Q_i(z = B) = 0.4\)
于是就可得到试验结果 (E-step):
- (0.45A, 0.55B) : H T T T H H T H T H
- (0.80A, 0.20B) : H H H H T H H H H H
- (0.73A, 0.27B) : H T H H H H H T H H
- (0.35B, 0.65B) : H T H T T T H H T T
- (0.65A, 0.35B) : T H H H T H H H T H
| 预估是A,B的概率下 | coin A | coin B |
|---|---|---|
| 5正5反 => A: (5 * 0.45, 5 * 0.45); B: (5 * 0.55, 5 * 0.55) | 2.2正; 2.2反 | 2.8正; 2.8反 |
| 9正1反 => A: (9 * 0.80, 1 * 0.80); B: (9 * 0.20, 1 * 0.20) | 7.2正; 0.8反 | 1.8正, 0.2反 |
| 8正2反 => A: (8 * 0.73, 2 * 0.73); B: (8 * 0.27, 2 * 0.27) | 5.9正; 1.5反 | 2.1正; 0.5反 |
| 4正6反 => A: (4 * 0.35, 6 * 0.35); B: (4 * 0.65, 6 * 0.65) | 1.4正; 2.1反 | 2.6正; 3.9反 |
| 7正3反 => A: (7 * 0.65, 3 * 0.65); B: (7 * 0.35, 3 * 0.35) | 4.5正; 1.9反 | 2.5正; 1.1反 |
| 合计 | 21.3正; 8.6反 | 11.7正; 8.4反 |
此时, 则是相当于更新了一次估计值:
\(\hat \theta_A ^{(1)}= \frac {21.3}{21.3 + 8.6} = 0.71\)
同理,
\(\hat \theta_B ^{(1)}= \frac {11.7}{11.7 + 8.4} = 0.58\)
这样, 其实又影响了 E-step:
- (0.45A, 0.55B) -> maybe (0.48A, 0.52B)
- (0.80A, 0.20B) -> maybe (0.71A, 0.29B)
- (0.73A, 0.27B) -> maybe (0.68A, 0.32B)
- (0.35B, 0.65B) -> maybe (0.42A, 0.58B)
- (0.65A, 0.35B) -> maybe (0.73A, 0.27B)
这样, 其实也影响了每次的结果, 从而又更新了估计参数, 然后就一直循环, 直到收敛退出.....,
假设是第20次, 收敛啦, 得到A, B 正面朝上 的最终预测概率:
\(\hat \theta_B ^{(20)}= 0.82\)
\(\hat \theta_B ^{(20)}= 048\)
为啥一定收敛, 本文后面会证明一波的, 老铁们, 先稳住
发现: 这样得到的结果, 跟上帝视角, 是差不多的, EM近似模拟出了真实参数, 一个字, 稳!
其实也发现了, EM所完成的核心任务, 就是跟咱大一的统计学里面学的, 根据样本分布, 来估计总体的分布参数.用处其实还是很大的, 在市场研究领域, 比如估计两种产品的分布...
EM 核心步骤
E-step: Compute a distribution on the labels of the points, using current parameters.
M-step: Update parameters using current guess of label distribution.
其实都不用翻译, 字面意思, 一看就懂了,对吧, 结合前面扔硬币的栗子. 好吧...嗯, 还是再举个统计的栗子吧.
case1-高斯分布参数
假设有一堆观测点, 假设已经知道, 有A, B两个类别, 分别为不同的高斯分布 , 对应每个点, 属于分别两个不同的高斯分布的概率是怎样的?
E-step: 确定(初始化) 每个点, 分别属于 A, B 这两个高斯分布的概率分别是多少 (一 一对应的哦)
M-step: 在 E-step 已经算出每个点的属于哪个分布的概率下, 更新一次估计参数的值.
这样其实, 参数值的改变, 也同时影响了 E-step .....
参考上面扔硬币的栗子
反复这样的 E->M->E->M... 直到收敛
case2-类梯度上升的方式
上升, 下降都一样哈, 只是求解有些像而已, 不影响.
回归在大二学的数理统计时, 在知道样本观测数据的前提下, 要求总体的参数分布 参数估计, 通常的方法就是极大似然法.
贝斯理论 vs 古典概率派: 贝派认为, 总体的参数,不是一个固定值, 是满足某种概率模型分布的随机变量.
通常是, 构造一个似然函数, 假设是 \(L(\theta) = log \ P(x: \theta)\) , 当然, 似然函数不一定是凸函数
凸函数(convex): 最大的优点是, 有一个全局最优解
log: 是在求解的时候, 方便乘法变加法, 不想再解释了, 再重复我自己都要吐了
假设呢, 则不同的状态 t 下, 估计出来的参数分别为:
\(\theta ^{(t)}, \theta ^{(t+1)}, \theta ^{(t+2)}, \theta ^{(t+3)},\theta ^{(t+n)} ...\)
对于每个状态呢, 同时构造一个convex 函数, 假设是 \(g(\theta)\), 希望在 \(L(\theta) 在 \theta ^{(t)}\) 这个点的 极小值 和 \(g(\theta)\) 在这个点的极大值是 重合的. 在这个前提下, 可以求关于 \(g(\theta)\) 的最优化.
.... 重复这个过程即可, 最后收敛, 跟梯度上升其实差不多的思想.
如上就是EM算法的直观认识了, 下篇就正式推导一波~
EM算法直观认识的更多相关文章
- 机器学习:EM算法
EM算法 各类估计 最大似然估计 Maximum Likelihood Estimation,最大似然估计,即利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值的计算过程. 直白来讲,就 ...
- EM算法的直观描述
解决含有隐变量的问题有三种方法,其中第三种方法就是通常所说的em算法.下面以统计学习方法中给出的三硬币问题为例来分别描述这三种方法.(a,b,c三硬币抛出来为正的概率分别为pai,p,q,每轮抛硬币先 ...
- EM算法(1):K-means 算法
目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(1) : K-means算法 1. 简介 K-mean ...
- 猪猪的机器学习笔记(十四)EM算法
EM算法 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十次次课在线笔记.EM算法全称为Expectation Maximization Algorithm,既最大 ...
- EM算法原理总结
EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等.本文就对 ...
- 从极大似然函数到EM算法
最近看斯坦福大学的机器学习课程,空下来总结一下参数估计相关的算法知识. 一.极大似然估计: 大学概率论课程都有讲到参数估计的两种基本方法:极大似然估计.矩估计.两种方法都是利用样本信息尽量准确的去描述 ...
- EM算法(Expectation Maximization Algorithm)初探
1. 通过一个简单的例子直观上理解EM的核心思想 0x1: 问题背景 假设现在有两枚硬币Coin_a和Coin_b,随机抛掷后正面朝上/反面朝上的概率分别是 Coin_a:P1:-P1 Coin_b: ...
- 机器学习之EM算法(五)
摘要 EM算法全称为Expectation Maximization Algorithm,既最大期望算法.它是一种迭代的算法,用于含有隐变量的概率参数模型的最大似然估计和极大后验概率估计.EM算法经常 ...
- 记录:EM 算法估计混合高斯模型参数
当概率模型依赖于无法观测的隐性变量时,使用普通的极大似然估计法无法估计出概率模型中参数.此时需要利用优化的极大似然估计:EM算法. 在这里我只是想要使用这个EM算法估计混合高斯模型中的参数.由于直观原 ...
随机推荐
- python踩坑系列之导入包时下划红线及报错“No module named”问题
python踩坑系列之导入包时下划红线及报错“No module named”问题 使用pycharm编写Python时,自己写了一个包(commontool),在同级另一个路径下(fileshand ...
- windows防火墙失效
在某些情况下,我们希望阻止某款软件联网,比如防止软件更新. 通常来说使用windows自带的防火墙是可以阻止软件联网的,但在我的电脑上它却失效了,无法起到阻止软件联网的作用. 我的操作系统: OS 名 ...
- 【转】Restful架构详解
1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的 ...
- jmeter录制移动端脚本
jmeter录制脚本有两种方式,一种借助外部工具badbody,一种是本身的功能,使用代理服务器,介绍下如何使用代理服务器录制脚本.我一般在测app或者移动端H5页面时才会录制,所以此文也针对移动端. ...
- Paper | Residual Dense Network for Image Super-Resolution
目录 Residual dense block & network 和DenseNet的不同 摘要和结论 发表在2018年CVPR. 摘要和结论都在强调方法的优势.我们还是先从RDN的结构看起 ...
- 逐行剖析Vue源码(一)——写在最前面
1. 前言 博主作为一名前端开发,日常开发的技术栈是Vue,并且用Vue开发也有一年多了,对其用法也较为熟练了,但是对各种用法和各种api使用都是只知其然而不知其所以然,因此,有时候在排查bug的时候 ...
- C++ 基于rapidjson对json字符串的进行序列化与反序列化
json字符串的解析以封装在我们开发过程中经常见到, 尤其在socket通信上面, 在一次项目中碰到json字符串的进行解析, 而公司有没有封装好的库, 于是就自己基于开源的库进行了一次封装, 接下是 ...
- 在macOS苹果电脑上安装Azure DevOps Server(TFS)代理
1. 概述 MacOS是一套运行于苹果Macintosh系列电脑上的操作系统,是首个在商用领域成功的图形用户界面操作系统.Iphone应用软件的开发人员,都使用运行macOS的电脑或mini盒子进行软 ...
- 海边拾贝-B-优秀博客/网站
记下若干优秀博客,方便后期检索.会不定期更新: 优秀的程序员,从使用Github开始:https://help.github.com/en/github/managing-your-work-on-g ...
- web.xml引入 xml (tomcat 7.0.52) 以上版本报错
原文地址:https://blog.csdn.net/sdmxdzb/article/details/47728017?locationNum=11 今天在搞工作流,tomcat7.0.57 总是报错 ...