机器学习---EM算法

1. 极大似然估计与EM算法

        极大似然估计是一种常用的参数估计方法,它是以观测值出现的概率最大作为准则。关于极

大似然估计,假设现在已经取到样本值了,这表明取到这一样本的概率L(θ) 比较

大。我们自然不会考虑那些不能使样本出现的θ作为估计值,再者,如果已知当

θ=θ(0)是使L(θ)取很大值,而θ中的其他θ的值使 L(θ)取值很小,自然认为取θ(0)作为未知参数

θ 的估计值较为合理。        

         在极大似然估计中,独立同分布(IID)的数据,  其概率密度函数为

似然函数定义为对数似然函数定义为θ的

极大似然估计为

        极大似然估计存在着问题是:①对于许多具体问题不能构造似然函数解析表达式 ②似然函数

的表达式过于复杂而导致求解方程组非常困难。正是在这种情况下,才提出了EM算法。EM算法主

要用于非完全数据参数估计,它是通过假设隐变量的存在,极大化地简化了似然函数方程,从而解

决了方程求解问题

       计算极大似然估计(maximum likelihood  estimate,MLE),需要求似然函数的极值。如求正态

分布均值和方差的MLE:

观测数据:观测到的随机变量Y的IID样本

缺失数据:未观测到的随机变量Z的值

完整数据:包含观测到的随机变量Y和未观测到的随机变量Z的数据,

        EM算法是一种迭代算法,1977年由Dempster等人总结提出,用于含有隐变量的概率模型参

数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望

(Expectation);M步,求极大(Maximization)。所以这一算法称为期望极大算法。

2. 3硬币模型

       假设有3枚硬币,分别记作A、B、C。这些硬币正面出现的概率概率分别是a、b、c。进行如

下掷硬币试验:先掷A,根据其结果选出硬币B或C,正面选择硬币B,反面选硬币C;然后掷选出

的硬币,掷硬币的结果,出现正面记作1,出现反面记作0;独立地重复n次试验(这里n=10),观测结

果如下:1、1、0、1、0、0、1、0、1、1

假设只能观测到掷硬币的结果,不能观测到掷硬币的过程。问如何估计三硬币正面出现的概率,即

三硬币模型的参数。三硬币模型可以写作:

这里,随机变量y是观测变量,表示一次试验观测的结果是1或0;随机变量z是隐变量,表示未观测

到的掷硬币A的结果,θ=(a,b,c)是模型参数。注意,随机变量y的数据可以观测,随机变量z的数据

不可观测。

将观测数据表示为,未观测数据表示

则观测数据的似然函数为:

即:

考虑求模型参数θ=(a,b,c)的极大似然估计,即:

这个问题没有解析解,只能通过迭代的方法求解。EM算法就是可以用于求解这个问题的一种迭代

算法,下面给出针对以上问题的EM算法:

EM算法首先选取参数的初值,记作:

然后通过下面的步骤迭代计算参数的估计值,直至收敛为止。第i次迭代参数的估计值为:

EM算法的第i+1次迭代如下:

①E步:计算在模型参数下观测数据来自掷硬币B的概率:

计算似然函数的期望:

M步:求似然函数的极大值

计算模型参数的新估计值:

 

进行数字计算:假设模型参数的初始值取为:由E步第一个公式,

对y=0与y=1均有利用迭代公式(新估计值),得到

由E步第一个公式有,j=1,2,3...10,继续迭代得

于是参数模型的极大似然估计:

3. EM算法步骤

        EM算法的实现思路:首先根据已经给出的观测数据,估计出模型参数的值; 然后再依据上⼀

步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前已经观测到的数据重新再

对参数值进行估计;然后反复迭代,直至最后收敛,迭代结束。

EM算法计算流程:

EM算法步骤:

选择模型参数的初值,开始迭代; 

E步:记为第i次迭代参数θ的估计值,在第i+1次迭代的E步,定义Q函数并计算:

这里,Q函数定义为完全数据的对数似然函数在给定观测数据Y和当前的参

下对未观测数据Z的条件概率分布的期望;通过求期望,去掉了完整似然函数中的

变量Z。其实就是用这个缺失数据的期望值来代替缺失的数据,而这个缺失的数据期望值和它的概

率分布有关。那么我们可以通过对似然函数关于缺失数据期望的最大化,来逼近原函数的极大值。

EM算法本质就是含有隐变量的概率模型参数的极大似然估计法。即EM的E步。

M步:求使极大化的θ,确定第i+1次迭代的参数的估计值

重复E、M两步,直到收敛。每次参数更新会增加非完整似然值,反复迭代后,会收敛到似然的局

部最大值。

4. EM算法原理

EM算法是一种解决存在隐含变量优化问题的有效方法。它的具体思想是:既然不能直接最大化参

数似然函数L,我们可以不断地建立参数似然函数L的下界(E步),然后优化下界(M步)。

利用琴生不等式得到似然函数的下界:

对于每一个样例i,让Qi表示该样例隐含变量z的某种分布,Qi满足条件:

这个过程可以看作是对L(θ)求了下界。对于的选择有很多种,哪种更好呢?假设θ已经给

定,那么L(θ)的值就决定于。我们可以通过调整这两个概率使下界不断上

升,以逼近L(θ)的真实值,那么什么时候算是调整好了呢?当不等式变成等式时,说明调整后的

概率能够等价L(θ)。根据琴生不等式,等式成立的条件是随机变量取值为常数值,故可得到:

c为常数,不依赖于

由于,那么就有(多个等式分子分母相加不变,这个认为每

个样例的两个概率比值都是c),那么有:

带入前面得到的似然函数下界,可以发现L(θ)的下界函数就是前面定义的

函数。 这一步是E步,建立了L(θ)的下界。

接下来是M步,就是在给定后,调整θ,去极大化L(θ)的下界,那么怎么确保EM收敛

呢?又如何确保每次迭代都能使极大似然估计单调增加呢?下述两个定理表明了利用EM算法所得

到的估计序列具有良好的收敛性,且其收敛到p(θ丨Y)的最大值。

定理1:设P(Y丨θ)为观测数据的似然函数,(i=1,2...)为EM算法得到的参数估计序列,

(i=1,2...)为对应的似然函数序列,则是单调递增的,即

保证了EM算法的每次迭代都使似然函数增大或达到局部极值。

定理2:设为观测数据的对数似然函数(i=1,2...)为EM算法得到的参数估计序列,(i=1,2...)为对应的对数似然序列。

(1)如果P(Y丨θ)有上界,则收敛到某一值

(2)在函数满足一定条件下,由EM算法得到的参数估计序列的收

敛值的稳定点。

保证了EM算法所得到的估计序列具有良好的收敛性,且其收敛到p(θ丨Y)的最大值。

5. EM算法补充

EM算法的另一种理解:坐标上升法

下图的直线式迭代优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐

标轴的,因为每一步只优化一个变量。就像在x-y坐标系中找一个曲线的极值,然而曲线函数不能

直接求导,因此什么梯度下降方法就不适用了。但固定一个变量后,另外一个可以通过求导得到,

因此可以使用坐标上升法,一次固定一个变量,对另外的求极值,最后逐步逼近极值。对应到EM

上,E步:固定θ,优化Q;M步:固定Q,优化θ;交替将极值推向最大。

EM算法的几点说明: 

①参数的初值可以任意选择,但需要注意EM算法对初值是敏感的

②E步求Q函数。Q函数式中Z是未观测数据,Y是观测数据。注意,的第一个变元表

示要极大化的参数,第二个变元表示参数的当前估计值。每次迭代实际在求Q函数及其极大。

③M步求的极大化,得到,完成一次迭代。每次迭代都使似

然函数增大或达到局部极值。

④给出停止迭代的条件,一般是对较小的正数,若满足以下条件,则停止迭代。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/207800.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Centos8】下载 MySQL8 并开启远程连接

本文将记录一下 centos8 下载 mysql8 的安装命令,防止下一次安装的时候还需要查询相关资料。🤣 下载 mysql # 查看是否有 mysql,如果有则需要卸载 yum list installed mysql |grep mysql # or rpm -qa |grep mysql# 查看是否有 mysql 残余文…

YOLOv8创新魔改教程(一)如何进行模块创新

YOLOv8创新魔改教程(一)如何进行模块创新 YOLOv8创新魔改教程 本人研一,最近好多朋友问我要如何修改模型创新模块,就想着不如直接开个专栏歇一歇文章,也算是对自己学习的总结,本专栏以YOLOv8为例&#xf…

【【FPGA 之 MicroBlaze定时器中断实验】】

FPGA 之 MicroBlaze定时器中断实验 AXI Timer 具有 AXI 总线接口,能够产生不同时间周期和占空比的时钟、脉冲产生电路、产生与时间有关的中断和用于电机控制的脉宽调制信号。 AXI Timer IP 核提供了一个 AXI4 Lite 接口用于与处理器通信;它内部有两个可…

在IDEA中,如何修改Jetty的端口号,操作超简单

在IDEA中的jetty配置中的VM options中填入:-Djetty.portxxxx 如下图:

uniapp uview u-input在app(运行在安卓基座上)上不能动态控制type类型(显隐密码)

开发密码显隐功能时&#xff0c;在浏览器h5上功能是没问题的 <view class"login-item-input"><u-input:type"showPassWord ? password : text"style"background: #ecf0f8"placeholder"请输入密码"border"surround&quo…

代码随想录算法训练营第三十六天| 435 无重叠区间 763 划分字母区间 56 合并区间

目录 435 无重叠区间 763 划分字母区间 56 合并区间 435 无重叠区间 将intervals数组按照左端点进行升序排序。 设置变量len标志此时新加入端点后所有区间的位置&#xff0c;将其赋初值为第一对区间的右端点&#xff0c;因为该点是一定可达的。设置变量res来存储需要移除空间…

redis主从复制模式和哨兵机制

目录 第一章、主从复制模式1.1&#xff09;Redis 主从复制模式介绍1.2&#xff09;Redis 主从复制实现、 第二章、哨兵机制2.1&#xff09;容灾处理之哨兵2.2&#xff09;Sentinel 配置 第一章、主从复制模式 1.1&#xff09;Redis 主从复制模式介绍 ①单点故障&#xff1a;数…

图解java.util.concurrent并发包源码系列——深入理解定时任务线程池ScheduledThreadPoolExecutor

深入理解定时任务线程池ScheduledThreadPoolExecutor ScheduledThreadPoolExecutor作用与用法ScheduledThreadPoolExecutor内部执行流程DelayedWorkQueueScheduledFutureTask源码分析任务提交ScheduledFutureTask的属性和方法delayedExecute(t) 任务执行ScheduledFutureTask.su…

(C++)三数之和--双指针法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 算法原理 双指针法&#xff0c;不一定是说就要使用指针&#xff0c;只是一种形象的说法&#xff0c;在数组中&#xff0c;我们一般将数组下标当做指针。我们首先对数组进行排序&#xff0c;从左向右标定一个下标i&#xff0…

​LeetCode解法汇总2661. 找出叠涂元素

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给你一个下…

迭代器 iterator

一、什么是 iterator? C中&#xff0c;iterator也被称为迭代器&#xff0c;其主要作用就是指向并访问容器中的元素&#xff0c;其像指针但不是指针。 PS&#xff1a; begin()函数返回一个指向容器第一个元素的迭代器&#xff1b;end()函数返回一个指向容器最后一个元素之后位…

scrapy爬虫中间件和下载中间件的使用

一、关于中间件 之前文章说过&#xff0c;scrapy有两种中间件&#xff1a;爬虫中间件和下载中间件&#xff0c;他们的作用时间和位置都不一样&#xff0c;具体区别如下&#xff1a; 爬虫中间件&#xff08;Spider Middleware&#xff09; 作用&#xff1a; 爬虫中间件主要负…

激光SLAM:Faster-Lio 算法编译与测试

激光SLAM&#xff1a;Faster-Lio 算法编译与测试 前言编译测试离线测试在线测试 前言 Faster-LIO是基于FastLIO2开发的。FastLIO2是开源LIO中比较优秀的一个&#xff0c;前端用了增量的kdtree&#xff08;ikd-tree&#xff09;&#xff0c;后端用了迭代ESKF&#xff08;IEKF&a…

YOLOv8优化策略:SENetV2,squeeze和excitation全面升级,效果优于SENet | 2023年11月最新成果

🚀🚀🚀本文改进: SENetV2,squeeze和excitation全面升级,作为注意力机制引入到YOLOv8,放入不同网络位置实现涨点 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.SENetV2 论文:https://arxiv.org/…

FLASK博客系列5——模板之从天而降

我们啰啰嗦嗦讲了4篇&#xff0c;都是在调接口&#xff0c;啥时候能看到漂亮的页面呢&#xff1f;别急&#xff0c;今天我们就来实现。 来我们先来实现一个简单的页面。不多说&#xff0c;上代码。 app.route(/) def index():user {username: clannadhh}return <html>&…

AIGC创作ChatGPT源码+AI绘画(Midjourney绘画)+支持GPT-4-Turbo模型+DALL-E3文生图

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

CentOS 部署 WBO 在线协作白板

1&#xff09;WBO 白板工具介绍 1.1&#xff09;WBO 白板简介 WBO 是一个自由和开源的在线协作白板。它允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用户实时更新&#xff0c;并且状态始终保持。它可以用于许多不同的目的&#xff0c;包括艺术、娱乐、设计和…

012 OpenCV sobel边缘检测

目录 一、环境 二、soble原理介绍 三、源码实验 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、soble原理介绍 Sobel边缘检测是一种广泛应用于图像处理领域的边缘检测算法&#xff0c;它通过计算图像灰度函数在水平方向和垂直…

92基于matlab的引力搜索算法优化支持向量机(GSA-SVM)分类模型

基于matlab的引力搜索算法优化支持向量机&#xff08;GSA-SVM&#xff09;分类模型&#xff0c;以分类精度为优化目标优化SVM算法的参数c和g&#xff0c;输出分类可视化结果及适应度变化曲线。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 92 引力搜索算法…

MySQL:找回root密码

一、情景描述 我们在日常学习中&#xff0c;经常会忘记自己的虚拟机中MySQL的root密码。 这个时候&#xff0c;我们要想办法重置root密码&#xff0c;从而&#xff0c;解决root登陆问题。 二、解决办法 1、修改my.cnf配置文件并重启MySQL 通过修改配置文件&#xff0c;来跳…