读吴恩达算-EM算法笔记
最近感觉对EM算法有一点遗忘,在表述的时候,还是有一点说不清,于是重新去看了这篇<CS229 Lecture notes>笔记. 于是有了这篇小札.
关于Jensen's inequality不等式:

Corollary(推论):
如果函数f(x)为凸函数,那么在 f(x) 上任意两点X1,X2所作割线一定在这两点间的函数图象的上方,即:
其中t表示【x1,x2】的位置
举例子: 当t=1/2 ; 1/2*f(x1) + 1/2*f(x2) >= f( 1/2*x1 + 1/2*x2 );
或者我们直接抽象的表示为: E[f(X)] ≥ f(EX) ,其中E表示期望.
那么这个 Jensen's inequality(Jensen's 不等式在EM算法中起到什么作用呢?)这里我们先不表.
关于极大似然评估(MLE):
假定存在一个样本集 D= {x1,x2,...,Xm },为M个独立分布的样本. 假设似然函数为: 联合概率密度函数P(D ; θ) ,其中(P(D ; θ)这种表示相当于P(D),只是存在未知参数θ)
我们知道了似然函数之后,将样本数据展开:
P(D ; θ) = p(x1,x2,...,Xm;θ) = ∏mi=1 p(xi ; θ)
我们令 L( Z ) = ∏mi=1 p(xi ; θ) ,如果存在θi 使得 L(θ)最大,我们认为θi为θ的极大似然估计量,同时我们认为θi(x1,x2,...,xm)为样本集D的极大似然函数估计量
关于求解极大似然函数:
求使得出现该组样本的概率最大的θ值。
θi = argmax(L(θ)) = argmax( ∏mi=1 p(xi ; θ) );
继续回到上面的公式:
L( θ ) = ∏mi=1 p(xi ; θ); 要使得L(θ)最大,那么对这个公式进一步化解:
等价于: log( L(θ) ) = log( ∏mi=1 p(xi ; θ) ) = ∑m i=1 P(xi ;θ)
(∑m i=1 P(xi ;θ))' = d( ∑m i=1 P(xi ;θ) ) / d(θ) =0 ; 求导 得 θ的解
关于极大似然求解的步骤:
(1)写出似然函数;
(2)对似然函数取对数,并整理;
(3)求导数;
(4)解似然方程。
我们先来看文章给出的这样一个问题:
比如我们有一个训练集合X={ x1 , x2 , .... , Xm};里面包含M个样本. 我们希望将模型p(x,z)的参数与训练集合数据进行拟合,其中的函数-对数似然是:

我们想上面求解极大似然函数一样来求解这个似然函数:
对它进行微分方程,求导 d( L(θ) ) / d( θ ) =0; ? 我们很快就发现无法求解,因为存在新的未知变量Z(隐变量);如何来解释这个隐变量Z呢?
比如这样一个例子:
比如有A,B两个人比赛随机打靶,每个人每次打4枪,当命中九环以内,包括九环,是记录为1,否则记录为0; 但是由于裁判熬夜玩游戏,比赛完成是,收集比赛结果时,搞混了靶纸。于是整理出如下结果:
| 人名 | 结果 |
| 未知 | 1011 |
| 未知 | 0011 |
| 未知 | 1101 |
| 未知 | 0101 |
| 未知 | 1011 |
| 未知 | 0010 |
| 未知 | 1111 |
| 未知 | 1011 |
问A命中九环的概率pa,B命中九环的概率pb?
而这里的隐变量Z就是人名的顺序。
面对这个问题,显然使用极大似然函数去正面扛困难重重,EM算法为这个问题,提供了一个很好的思路:
求解分两步走:
E step 期望阶段:

先假定,即初始化A,B命中的概率pa0=0.2 , pb0=0.5;
求出8次打靶中,该次打靶的结果是A,B的可能性即概率:
第一次打靶:如果是A的打靶结果: 0.2*0.8*0.2*0.2=0.0064
如果是B的打靶结果: 0.5^4 =0.0625
| 第i次打靶 | A | B |
| 1 | 0.0064 | 0.0625 |
| 2 | 0.0256 | 0.0625 |
| 3 | 0.0064 | 0.0625 |
| 4 | 0.0256 | 0.0625 |
| 5 | 0.0064 | 0.0625 |
| 6 | 0.1024 | 0.0625 |
| 7 | 0.0016 | 0.0625 |
| 8 | 0.0064 | 0.0625 |
如此,我们依据极大似然函数,来确定每一轮是谁打的
1轮: P(A1)<P(B1),
由上面这个表,我们在假定的前提下,计算出了A或者B的出现每轮打靶结果的概率;我们可以依据这个结果,进一步计算第i次是A,B打靶的相对概率
求出8次打靶中,该次打靶的结果是A,B的相对可能性即概率:
第一次打靶:如果是A的打靶结果: 0.0064/(0.0064 + 0.0625) =0.0928
如果是B的打靶结果: 0.0625/(0.0064 + 0.0625) =0.9072
| 第i次打靶 | A | B |
| 1 | 0.0928 | 0.9072 |
| 2 | 0.290 | 0.710 |
| 3 | 0.0928 | 0.9072 |
| 4 | 0.290 | 0.710 |
| 5 | 0.0928 | 0.9072 |
| 6 | 0.620 | 0.380 |
| 7 | 0.0249 | 0.9751 |
| 8 | 0.0928 | 0.9072 |
我们先假定A,B命中的概率pa1,pb1,然后去推到它们比赛的顺序,再依据比赛的顺序,来计算A,B命中的概率Pa2,pb2. 当pa2,pb2和pa1,pb2结果相差时较大时,
将pa2,pb2代入,继续推到它们的比赛顺序,计算A,B命中的概率
读吴恩达算-EM算法笔记的更多相关文章
- 吴恩达(Andrew Ng)——机器学习笔记1
之前经学长推荐,开始在B站上看Andrew Ng的机器学习课程.其实已经看了1/3了吧,今天把学习笔记补上吧. 吴恩达老师的Machine learning课程共有113节(B站上的版本https:/ ...
- 吴恩达机器学习CS229课程笔记学习
监督学习(supervised learning) 假设我们有一个数据集(dataset),给出居住面积和房价的关系如下: 我们以居住面积为横坐标,房价为纵坐标,组成数据点,如(2104, 400), ...
- Coursera 吴恩达 深度学习 学习笔记
神经网络和深度学习 Week 1-2 神经网络基础 Week 3 浅层神经网络 Week 4 深层神经网络 改善深层神经网络 Week 1 深度学习的实用层面 Week 2 优化算法 Week 3 超 ...
- 吴恩达Machine Learning学习笔记(四)--BP神经网络
解决复杂非线性问题 BP神经网络 模型表示 theta->weights sigmoid->activation function input_layer->hidden_layer ...
- 吴恩达Machine Learning学习笔记(一)
机器学习的定义 A computer program is said to learn from experience E with respect to some class of tasks T ...
- 吴恩达Machine Learning学习笔记(三)--逻辑回归+正则化
分类任务 原始方法:通过将线性回归的输出映射到0-1,设定阈值来实现分类任务 改进方法:原始方法的效果在实际应用中表现不好,因为分类任务通常不是线性函数,因此提出了逻辑回归 逻辑回归 假设表示--引入 ...
- 吴恩达Machine Learning学习笔记(二)--多变量线性回归
回归任务 多变量线性回归 公式 h为假设,theta为模型参数(代表了特征的权重),x为特征的值 参数更新 梯度下降算法 影响梯度下降算法的因素 (1)加速梯度下降:通过让每一个输入值大致在相同的范围 ...
- 吴恩达《机器学习》课程笔记——第六章:Matlab/Octave教程
上一篇 ※※※※※※※※ [回到目录] ※※※※※※※※ 下一篇 这一章的内容比较简单,主要是MATLAB的一些基础教程,如果之前没有学过matlab建议直接找一本相关书籍,边做边学,matl ...
- 笔记:《机器学习训练秘籍》——吴恩达deeplearningai微信公众号推送文章
说明 该文为笔者在微信公众号:吴恩达deeplearningai 所推送<机器学习训练秘籍>系列文章的学习笔记,公众号二维码如下,1到15课课程链接点这里 该系列文章主要是吴恩达先生在机器 ...
随机推荐
- 实现Java简单继承
面向对象练习-简单继承 一.完成教师类的创建 说明: id 代表身份证号 name 表示姓名 birth 表示出生日期 title 表示职称(讲师,副教授,教授等) 二.完成学生类的创建 说明: ma ...
- NSL:SOFM神经网络实现预测哪个样本与哪个样本处在同一层,从而科学规避我国煤矿突水灾难—Jason niu
load water_data.mat attributes = mapminmax(attributes); P_train = attributes(:,1:35); T_train = clas ...
- hdu 2553 n皇后问题【DFS递归解法】
<题目链接> 题目大意: Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45 ...
- springboot2 redis
本项目使用jar包: <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...
- Spring使用笔记(一)Spring简介
Spring简介 Spring丰富的功能的底层都依赖于它的两个核心特性: 1.依赖注入(dependency injection, DI): 每个对象负责管理与自己协作的对象(即它所依赖的对象)的引用 ...
- Max Factor 2710 最大的合数的质数因子
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2710 思路:用类似“埃氏筛法”求素数的方法 只是不在把合数标记为1 而是标记为他是因子数. 最后比较大小即 ...
- (Android系统目录结构)/mnt/sdcard 和 sdcard 的区别
mnt/是Unix/Linux系统下外部设备的专用目录,Linux默认挂载外部设备都会挂载到这个目录;如将SD卡挂载后,会生成目录:/mnt/sdcard/. shell@aeon6735m_65c_ ...
- [蓝点ZigBee] Zstack 之点亮LED灯 ZigBee/CC2530 视频资料
LED点灯实验,主要是依据Zstack 现有程序修改LED相关驱动,适配到我们自己的开发板上,我们开发板共有4个LED灯,其中一个是电源指示灯,剩余3个都是GPIO控制的LED灯,有LED 灯连接方式 ...
- 潭州课堂25班:Ph201805201 django 项目 第二十五课 文章多级评论前后台实现 (课堂笔记)
添加新闻评论功能 1.分析 业务处理流程: 判断前端传的新闻id是否为空,是否为整数.是否不存在 判断评论的内容是否为空 判断是否有父评论,父评论的id是否与新闻id匹配 判断用户是否登录 保存新闻评 ...
- 什么是C++
1.到底什么是C++ C++是一门面向对象的程序设计语言. 关键词:程序设计语言,面向对象 程序设计语言是用来书写计算机程序的语言,更形象的说,程序设计语言是用来和计算机“交流的语言.” 面向对象(o ...