本文是自己的学习笔记,很多内容与参考文献相同,如有侵权即刻删除

EM算法基本思想

首先根据己经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。

EM算法问题描述

有100个男生和100个女生的身高,但是不知道这200个数据中哪个是男生的身高,哪个是女生的身高,即抽取得到的每个样本都不知道是从哪个分布中抽取的。这时候需要估计样本的分布和模型的参数。

EM算法流程


(1)初始化参数:先初始化男生身高的正态分布的参数
(2)计算每一个人更可能属于男生分布或者女生分布;
(3)通过分为男生的n个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布。
(4)这时候两个分布的概率也变了,然后重复步骤(1)至(3),直到参数不发生变化为止。
当样本分布已知时,求样本的模型参数θ, 极大化模型分布的对数似然函数如下:θ^=argmax∑i=1nlogp(xi;θ)\widehat{\theta}=argmax\sum_{i=1}^n{log{p(x_i;\theta)}}θ=argmaxi=1∑n​logp(xi​;θ)其中x=(x1,x2,...xn)x=(x_1,x_2,...x_n)x=(x1​,x2​,...xn​)为n个样本的观测数据
当样本分布未知时即可认为在原分布上存在一些未知分布的观测样本,此时目标函数变为:θ^=argmax∑i=1nlogp(xi;θ)=argmax∑i=1nlog∑zip(xi;zi;θ)\widehat{\theta}=argmax\sum_{i=1}^n{log{p(x_i;\theta)}}=argmax\sum_{i=1}^n{log{\sum_{z_i}}p(x_i;z_i;\theta)}θ=argmaxi=1∑n​logp(xi​;θ)=argmaxi=1∑n​logzi​∑​p(xi​;zi​;θ)
其中z=(z1,z2,...zn)z=(z_1,z_2,...z_n)z=(z1​,z2​,...zn​)为未观察到的隐含数据。
由于上式无法直接计算,因此使用Jensen不等式进行缩放:
先简述Jensen不等式的定义:
如果函数f是凸函数,X是随机变量,那么E[f(x)]≥f(E[x])E[f(x)]\geq f(E[x])E[f(x)]≥f(E[x])。当且仅当X是常量时,该式取等号。当函数f是凹函数时,E[f(x)]≤f(E[x])E[f(x)] \leq f(E[x])E[f(x)]≤f(E[x])。当且仅当X是常量时,该式取等号。
引入一个未知的新的分布Qi(zi)Q_i(z_i)Qi​(zi​)
∑i=1nlog∑zip(xi;zi;θ)=∑i=1nlog∑ziQi(zi)p(xi;zi;θ)Qi(zi)\sum_{i=1}^n{log{\sum_{z_i}}p(x_i;z_i;\theta)}=\sum_{i=1}^n{log{\sum_{z_i}}Q_i(z_i)\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}}i=1∑n​logzi​∑​p(xi​;zi​;θ)=i=1∑n​logzi​∑​Qi​(zi​)Qi​(zi​)p(xi​;zi​;θ)​
由于p(xi;zi;θ)Qi(zi)\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}Qi​(zi​)p(xi​;zi​;θ)​的期望为∑ziQi(zi)p(xi;zi;θ)Qi(zi)\sum_{z_i}Q_i(z_i)\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}∑zi​​Qi​(zi​)Qi​(zi​)p(xi​;zi​;θ)​,则原式变为∑i=1nlog(E(p(xi;zi;θ)Qi(zi)))\sum_{i=1}^{n}{log(E(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}))}∑i=1n​log(E(Qi​(zi​)p(xi​;zi​;θ)​)),由于log(.)log(.)log(.)的二阶导数小于0,为凹函数,则根据Jensen不等式可得:
∑i=1nlog(E(p(xi;zi;θ)Qi(zi)))≥∑i=1nE(log(p(xi;zi;θ)Qi(zi)))=∑i=1n∑ziQi(zi)log(p(xi;zi;θ)Qi(zi))\sum_{i=1}^{n}{log(E(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}))} \geq \sum_{i=1}^{n}{E(log(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}))}=\sum_{i=1}^{n}{\sum_{z_i}Q_i(z_i)log(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)})}i=1∑n​log(E(Qi​(zi​)p(xi​;zi​;θ)​))≥i=1∑n​E(log(Qi​(zi​)p(xi​;zi​;θ)​))=i=1∑n​zi​∑​Qi​(zi​)log(Qi​(zi​)p(xi​;zi​;θ)​)
当Jensen不等式取等号时,有p(xi;zi;θ)Qi(zi)=c\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}=cQi​(zi​)p(xi​;zi​;θ)​=c,ccc为常数。又因为Qi(zi)Q_i(z_i)Qi​(zi​)是一个分布,所以∑ziQi(zi)=1\sum_{z_i}{Q_i(z_i)}=1∑zi​​Qi​(zi​)=1可得
p(xi;zi;θ)=c×Qi(zi)p(x_i;z_i;\theta)=c \times Q_i(z_i)p(xi​;zi​;θ)=c×Qi​(zi​)
两边同时对变量z求和得
∑zip(xi;zi;θ)=c∑ziQi(zi)=c\sum_{z_i}{p(x_i;z_i;\theta)}=c\sum_{z_i}{Q_i(z_i)}=czi​∑​p(xi​;zi​;θ)=czi​∑​Qi​(zi​)=c Qi(zi)=p(xi;zi;θ)∑zip(xi;zi;θ)=p(xi;zi;θ)p(xi;θ)=p(zi∣xi;θ)Q_i(z_i)=\frac{p(x_i;z_i;\theta)}{\sum_{z_i}{p(x_i;z_i;\theta)}}=\frac{p(x_i;z_i;\theta)}{p(x_i;\theta)}=p(z_i|x_i;\theta)Qi​(zi​)=∑zi​​p(xi​;zi​;θ)p(xi​;zi​;θ)​=p(xi​;θ)p(xi​;zi​;θ)​=p(zi​∣xi​;θ)
要使Jensen不等式等号成立(使函数的下界最大)则有Qi(zi)=p(zi∣xi;θ)Q_i(z_i)=p(z_i|x_i;\theta)Qi​(zi​)=p(zi​∣xi​;θ)。当θ\thetaθ已知时,Qi(zi)Q_i(z_i)Qi​(zi​)就变成求一个后验概率。得出Qi(zi)Q_i(z_i)Qi​(zi​)后就可以重新计算其下界:∑i=1n∑ziQi(zi)log(p(xi;zi;θ)Qi(zi))\sum_{i=1}^{n}{\sum_{z_i}Q_i(z_i)log(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)})}i=1∑n​zi​∑​Qi​(zi​)log(Qi​(zi​)p(xi​;zi​;θ)​)
从而更新参数θ\thetaθ,如此迭代直到收敛。
最后插一个例子助于理解EM
-如何感性地理解EM算法

参考文献:
-EM算法详解
-EM算法原理总结
-EM算法学习(Expectation Maximization Algorithm)

EM算法(学习笔记)相关推荐

  1. EM算法学习笔记与三硬币模型推导

    最近接触了pLSA模型,由于该模型中引入了主题作为隐变量,所以需要使用期望最大化(Expectation Maximization)算法求解. 本文简述了以下内容: 为什么需要EM算法 EM算法的推导 ...

  2. 大顶堆删除最大值_算法学习笔记(47): 二叉堆

    堆(Heap)是一类数据结构,它们拥有树状结构,且能够保证父节点比子节点大(或小).当根节点保存堆中最大值时,称为大根堆:反之,则称为小根堆. 二叉堆(Binary Heap)是最简单.常用的堆,是一 ...

  3. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

  4. 数据结构与算法学习笔记之 从0编号的数组

    数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...

  5. 输出dag的所有拓扑排序序列_算法学习笔记(53): 拓扑排序

    拓扑排序是对DAG(有向无环图)上的节点进行排序,使得对于每一条有向边 , 都在 之前出现.简单地说,是在不破坏节点 先后顺序的前提下,把DAG拉成一条链.如果以游戏中的科技树(虽然名字带树,其实常常 ...

  6. 算法学习笔记:对指定金额计算最少钞票数

    算法学习笔记:对指定金额计算最少钞票数 一.引出问题 财务人员给员工发工资时经常遇到这样一个问题,即根据每个人的工资额(以元作为单位)计算出各种面值的钞票的张数,且要求总张数最少.例如,某职工工资为3 ...

  7. matlab中x从0到5不含0,关于MATLAB的数学建模算法学习笔记

    关于MATLAB的数学建模算法学习笔记 目录 线性规划中应用: (3) 非线性规划: (3) 指派问题;投资问题:(0-1问题) (3) 1)应用fmincon命令语句 (3) 2)应用指令函数:bi ...

  8. 机器学习篇01:在线学习的支持向量机算法学习笔记

    在线学习的支持向量机算法学习笔记 oisvm算法实现说明 oisvm算法实现说明 % 本程序是用于实现基于在线学习的调制信号识别的程序 % % % 第一步:调制信号的生成 % 首先是7个信号:2ASK ...

  9. 数据结构与算法学习笔记之 提高读取性能的链表(上)

    数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...

最新文章

  1. ffmpeg + opencv 把摄像头画面保存为mp4文件
  2. COGS 2769. mk去撸串
  3. python中figsize什么意思_matplotlib 设置图形大小时 figsize 与 dpi 的关系
  4. 部署Rsync服务器-差异化数据同步
  5. 父亲节用计算机给惊喜,2015父亲节的惊喜作文:给爸爸特殊的礼物
  6. java中Protobuf的使用实例
  7. C++使用数组实现queue之一(附完整源码)
  8. nodejs模块导入导出
  9. visual paradigm 表示选择关系_知识获取的新挑战—远程监督关系抽取
  10. 探讨继承与实现(二)
  11. 海归计算机专业简历怎么写,海归硕士求职简历该怎么写?
  12. java语言的一些小语法
  13. access h3c交换机光口_华为交换机的配置及:access、trunk、hybird端口详解
  14. [lammps教程]OVITO绘制原子运动轨迹线
  15. catia逆向建模步骤_CATIA逆向教程- 逆向步骤
  16. 4.re包学习(正则表达式)
  17. Matlab二元函数图像绘制
  18. 上海市政府颁布智能汽车牌照,蔚来汽车成首批获此资格企业
  19. Keras实例教程(1)
  20. 红外线探测报警器的简单设计

热门文章

  1. 美股三连跌,蔚来汽车与趣头条周三暴跌约20%
  2. 老毛子固件padavan挂载USB摄像头躺过的坑
  3. 两个增序链表查找是否有公共节点
  4. 小白学雷达系列之脉冲雷达基本组成(一)
  5. android 实现一个图片的闪烁
  6. Android/ios 如何识别app下载来源追踪
  7. Intel AX201 WIFI 和蓝牙驱动配置
  8. 搜索引擎优化SEO和SEM有什么不一样
  9. Lindows来了,Windows咋办?
  10. Excel 计算重复项中的唯一值的方法