统计学习方法(九)EM算法

2023-11-17

参考博客:https://www.cnblogs.com/bigmoyan/p/4550375.html

https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm

EM:expectation maximization 期望极大算法

用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计

主要分为两部分:求E期望;求M极大。

       输入:选择参数的初值theta,进行迭代。

  E步: 每次迭代改变初值。定义Q函数。Q函数为迭代的期望值。

  M步: 求使E步得到的Q函数最大的theta值。

  最后,重复进行E步和M步。直到最终theta值变化较小,即为收敛为止。

极大似然估计是一种应用很广泛的参数估计方法。例如我手头有一些东北人的身高的数据,又知道身高的概率模型是高斯分布,那么利用极大化似然函数的方法可以估计出高斯分布的两个参数,均值和方差。

然而现在面临的是这种情况,我手上的数据是四川人和东北人的身高合集,然而对于其中具体的每一个数据,并没有标定出它来自“东北人”还是“四川人”,我想如果把这个数据集的概率密度画出来,大约是这个样子:

  

其实这个双峰的概率密度函数是有模型的,称作高斯混合模型(GMM),写作:

  

  这模型很好理解,就是k个高斯模型加权组成,α是各高斯分布的权重,Θ是参数。对GMM模型的参数估计,就要用EM算法。更一般的讲,EM算法适用于带有隐变量的概率模型的估计,什么是隐变量呢?就是观测不到的变量,对于上面四川人和东北人的例子,对每一个身高而言,它来自四川还是东北,就是一个隐变量。

  为什么要用EM,我们来具体考虑一下上面这个问题。如果使用极大似然估计——这是我们最开始最单纯的想法,那么我们需要极大化的似然函数应该是这个:

  

  然而我们并不知道p(x;θ)的表达式,有同学说我知道啊,不就是上面那个混个高斯模型?不就是参数多一点麽。

  仔细想想,GMM里的θ可是由四川人和东北人两部分组成哟,假如你要估计四川人的身高均值,直接用GMM做似然函数,会把四川人和东北人全考虑进去,显然不合适。

  另一个想法是考虑隐变量,如果我们已经知道哪些样本来自四川,哪些样本来自东北,那就好了。用Z=0或Z=1标记样本来自哪个总体,则Z就是隐变量,需要最大化的似然函数就变为:


  然而并没有卵用,因为隐变量确实不知道。要估计一个样本是来自四川还是东北,我们就要有模型参数,要估计模型参数,我们首先要知道一个样本是来自四川或东北的可能性...

  到底是鸡生蛋,还是蛋生鸡?

  不闹了,我们的方法是假设。首先假设一个模型参数θ,然后每个样本来自四川/东北的概率p(zi)就能算出来了,p(xi,zi)=p(xi|zi)p(zi),而x|z=0服从四川人分布,x|z=1服从东北人分布,所以似然函数可以写成含有θ的函数,极大化它我们可以得到一个新的θ。新的θ因为考虑了样本来自哪个分布,会比原来的更能反应数据规律。有了这个更好的θ我们再对每个样本重新计算它来自四川和东北的概率,用更好的θ算出来的概率会更准确,有了更准确的信息,我们可以继续像上面一样估计θ,自然而然这次得到的θ会比上一次更棒,如此蒸蒸日上,直到收敛(参数变动不明显了),理论上,EM算法就说完了。

  然而事情并没有这么简单,上面的思想理论上可行,实践起来不成。主要是因为似然函数有“和的log”这一项,log里面是一个和的形式,一求导这画面不要太美,直接强来你要面对 “两个正态分布的概率密度函数相加”做分母,“两个正态分布分别求导再相加”做分子的分数形式。m个这玩意加起来令它等于0,要求出关于θ的解析解,你对自己的数学水平想的不要太高。

  怎么办?先介绍一个不等式,叫Jensen不等式,是这样说的:

  X是一个随机变量,f(X)是一个凸函数(二阶导数大或等于0),那么有:

  

 

  当且仅当X是常数的时候等号成立

  如果f(X)是凹函数,不等号反向

  关于这个不等式,我既不打算证明,也不打算说明,希望你承认它正确就好。

  半路杀出一个Jensen不等式,要用它解决上面的困境也是应有之义,不然说它做什么。直接最大化似然函数做不到,那么如果我们能找到似然函数的一个的下界一直优化它,并保证每次迭代能够使总的似然函数一直增大,其实也是一样的。怎么说?画个图你就明白了:

  

  横坐标是参数,纵坐标是似然函数,首先我们初始化一个θ1,根据它求似然函数一个紧的下界,也就是图中第一条黑短线,黑短线上的值虽然都小于似然函数的值,但至少有一点可以满足等号(所以称为紧下界),最大化小黑短线我们就hit到至少与似然函数刚好相等的位置,对应的横坐标就是我们的新的θ2,如此进行,只要保证随着θ的更新,每次最大化的小黑短线值都比上次的更大,那么算法收敛,最后就能最大化到似然函数的极大值处。

  构造这个小黑短线,就要靠Jensen不等式。注意我们这里的log函数是个凹函数,所以我们使用的Jensen不等式的凹函数版本。根据Jensen函数,需要把log里面的东西写成一个数学期望的形式,注意到log里的和是关于隐变量Z的和,于是自然而然,这个数学期望一定是和Z有关,如果设Q(z)是Z的分布函数,那么可以这样构造:

 

  

  所以log里其实构造了一个随机变量Y,Y是Z的函数,Y取p/Q的值的概率是Q,这点说的很清楚了。

  构造好数学期望,下一步根据Jensen不等式进行放缩:

  

  有了这一步,我们看一下整个式子:

  

  也就是说我们找到了似然函数的一个下界,那么优化它是否就可以呢?不是的,上面说了必须保证这个下界是紧的,也就是至少有点能使等号成立。由Jensen不等式,等式成立的条件是随机变量是常数,具体到这里,就是:

    

  又因为Q(z)是z的分布函数,所以:

  把C乘过去,可得C就是p(xi,z)对z求和,所以我们终于知道了:

  

  得到Q(z),大功告成,Q(z)就是p(zi|xi),或者写成p(zi),都是一回事,代表第i个数据是来自zi的概率。

  于是EM算法出炉,它是这样做的:

  首先,先假设隐变量z的模型参数θ

  (1)E-Step:根据参数θ计算每个样本属于zi的概率,即这个身高来自四川或东北的概率,这个概率就是Q

  (2)M-Step:根据计算得到的Q,求出含有θ的似然函数的下界并最大化它,得到新的参数θ

  重复(1)和(2)直到收敛,可以看到,从思想上来说,和最开始没什么两样,只不过直接最大化似然函数不好做,曲线救国而已。

  至于为什么这样的迭代会保证似然函数单调不减,即EM算法的收敛性证明。需要额外说明的是,EM算法在一般情况是收敛的,但是不保证收敛到全局最优,即有可能进入局部的最优。EM算法在混合高斯模型,隐马尔科夫模型中都有应用,是著名的数据挖掘十大算法之一。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

统计学习方法(九)EM算法 的相关文章

随机推荐

  • 八大排序算法之选择排序

    选择排序 选择排序 Selection sort 是一种简单直观的排序算法 它的工作原理是每一次从待排序的数据元素中选出最小 或最大 的一个元素 存放在序列的起始位置 直到全部待排序的数据元素排完 选择排序是不稳定的排序方法 比如序列 5
  • Ubuntu_Crontab

    Ubuntu Crontab BasicUsage 编辑定时任务 crontab e 显示定时任务 crontab l 定时任务不执行的解决方案 首先手动执行定时任务命令 排查是否任务本身是否出问题 没问题的话 去日志中看 crontab日
  • C - C语言实验——求两个整数之中较大者

    Description 输入两个整数 请编程求其中的较大者 Input 在一行中输入用空格隔开的两个整数 例如5 9 Output 输出两个整数之中较大者 输出形式举例 max 9 Sample Input 5 9 Output max 9
  • 编程任务

    任务源自旧版的Brilliant数学讨论问题 2019 09 02我曾经发布过 可惜已经下线 幸活大喵做足备份 该问题看似是概率问题 实则不然 官方给出的解法透露出一个非常重要的数学思维方法 数学语言 为何以及如何构造一个函数 f n 运用
  • 互联网公司MySQL数据库采用读已提交的隔离级别原因

    开始我们的内容 相信大家一定遇到过下面的一个面试场景 面试官 讲讲mysql有几个事务隔离级别 你 读未提交 读已提交 可重复读 串行化四个 默认是可重复读 面试官 为什么mysql选可重复读作为默认的隔离级别 你面露苦色 不知如何回答 面
  • SAR ADC基本原理学习

    今天我们来学习SAR ADC喽 逐次逼近寄存器型模数转换器 Successive Approximation Analog to Digital Converter 是一种常用的A D转换结构 其较低的功耗表现 还不错的转换速率 在有低功耗
  • Shiro错误之No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util

    提示 No SecurityManager accessible to the calling code either bound to the org apache shiro util ThreadContext or as a vm
  • [深度学习] 模型集成方法

    模型集成方法 集成学习 ensemble learning 是机器学习中一类学习算法 值训练多个学习器并将它们组合起来使用的方法 这类算法通常在实践中会取得比单个学习器更好的预测结果 数据层面的集成方法 在训练阶段的数据扩充在测试阶段仍然使
  • ERROR:unable to read the cmd header on the pmi context, Error = -1

    win7 vs2010 MPI 以下仅在单机下做的测试 电脑之前装了MPICH2和Microsoft HPC Pack 2008 SDK 用vs2010链接MPICH2的库编译了一个小程序 在cmd下用mpiexec执行该程序时出现下面问题
  • linux——ifcfg-ens33文件参数解释

    早上在用ifconfig命令的时候得到的IP是192 168 137 132 但是看ifcfg ens33文件里面IP配置的是192 168 137 129 通过请教大神和百度得知 是与ifcfg ens33文件配置有关系 BOOTPROT
  • 2021年蓝桥杯A组省赛-左children右sibling

    CXXX有毛病 左孩子右兄弟 字眼很敏感吗 题目 题目链接 题解 贪心 DFS 以 u u u 为根的子树选择包含节点最多的以 v v v 为根的子树作为最后连接的右兄弟能保证树向下延展的最多 所以重点转换为了计算以
  • 二分特训上------刷题部分----Week4(附带LeetCode特训)

    二分特训上 理论部分 Week4 附带LeetCode特训 小杰312的博客 CSDN博客 如果需要理论 请移步上一篇 注意 我们把 0000001111111模型中 0称呼为左边区间 1称呼为右边区间 答案第一个1在右区间 1111100
  • 模拟器检测

    往期推荐 文件检测 签名验证 资源文件混淆 apk保护策略 Java代码混淆 模拟器检测的就是指通过检测确认软件 手游等不能运行在模拟器上面 比如一个游戏 它能够在模拟器上实现批量刷金币或者是其他功能 但模拟器又无法启动起来 在这种情况下
  • WPF CommunityToolkit.Mvvm

    文章目录 前言 Toolkit Nuget安装 简单使用 SetProperty 通知更新 RealyCommand CanExecute 新功能 代码生成器 ObservableProperty NotifyCanExecuteChang
  • eclipse的下载及安装教程

    第一步 从官网下载eclipse 进行安装 下载链接https www eclipse org downloads packages 根据自己的电脑和需求去选择对应的版本 点击download 进行下载 然后会跳转到一个打赏页面 无需理会
  • You must set CMAKE_CUDA_ARCHITECTURES to e.g. ‘native‘, ‘all-major‘, ‘70‘,

    You must set CMAKE CUDA ARCHITECTURES to e g native all major 70 cmake 报错 CMake Error at CMakeLists txt 255 message You
  • Python并发编程之多线程

    前言 本文介绍并发编程中另一个重要的知识 线程 线程介绍 我们知道一个程序的运行过程是一个进程 在操作系统中每个进程都有一个地址空间 而且每个进程默认有一个控制线程 打个比方 在一个车间中有很多原材料通过流水线加工产品 而线程就是这个车间中
  • 小程序代码体积优化

    微信小程序在发布的时候 对提交的代码有 2 MB 大小的限制 开发之前就需要提前有个心理准备 由于我也是第一次做小程序开发代码大小就超过了2MB 开发者工具都无法预览了 这就很尴尬了 我自己的优化代码积的方式也不多 如果你有更好的方法 可以
  • linux分区满了,如何进行扩容

    图片中可以看到挂载点 的利用率移到100 空间不够 所以要对其进行分区 1 先进入虚拟机设置里增大磁盘空间 注意 将25改成50 以扩大空间 这里一定要写比25大的数 因为他是 增加到 50GB 而不是 增加了25GB 2 下图可以看到 硬
  • 统计学习方法(九)EM算法

    参考博客 https www cnblogs com bigmoyan p 4550375 html https en wikipedia org wiki Expectation E2 80 93maximization algorith