最大化期望算法(EM)详解

2023-11-11

我们知道最大似然估计的根本目的是根据抽样的到的样本(即数据),反推出最有可能的分布参数(即模型),这是一个非常典型的机器学习的思想。所以在很多领域最大似然估计有着极为广泛的应用。然而,如果已知的数据中含有某些无法观测的隐藏变量时,直接使用最大似然估计是不足以解决问题的。这个时候就要依靠最大化期望(EM)算法了。

简单的说,EM算法是在依赖于无法观测的隐藏变量的概率模型中,寻找参数最大似然估计或者最大后验估计的算法。

1. 最大似然估计

最大似然其实基本的原理非常简单,假设我们手里现在有一个样本,这个样本服从某种分布,而分布有参数,可如果我现在不知道这个样本分布的具体参数是多少,我们就想要通过抽样得到的样本进行分析,从而估计出一个较准确的相关参数。

以上,这种通过抽样结果反推分布参数的方法就是“最大似然估计”。现在简单思考一下怎么去估计:已知的一个抽样结果和可能的分布(比如说高斯分布),那我就像小学生解方程那样呗,先设出分布的参数(比如高斯分布中就是设出 σ σ μ μ ),然后我计算得到现在这个抽样数据的概率函数,令这个概率最大,看此时相关参数的取值。

这个思路很容易理解,能使得概率最大的参数一定是“最可能”的那个,这里的“最可能”也就是最大似然估计中“最大似然”的真正含义。

只是这么说可能有点抽象,看一个具体的例子。设产品有合格、不合格两类,未知的是不合格品的概率 p p ,显然这是一个典型的两点分布 b(1,p) b ( 1 , p ) 。我们用随机变量 X X 表示是否合格, X=0 X = 0 表示合格, X=1 X = 1 表示不合格。如果现在得到了一组抽样数据 (x1,x2,,xn) ( x 1 , x 2 , … , x n ) ,那么不难写出抽样得到这组数据的概率:

f(X1=x1,X2=x2,,Xn=xn;p)=i=1npxi(1p)1xi(1) (1) f ( X 1 = x 1 , X 2 = x 2 , … , X n = x n ; p ) = ∏ i = 1 n p x i ( 1 − p ) 1 − x i

我们把上面这个联合概率叫做样本的似然函数,一般把它两侧同时取对数(记为对数似然函数 L(θ) L ( θ ) )。 L(θ) L ( θ ) 关于 p p 的求偏导数,令偏导数为0,即可求得使得 L(p) L ( p ) 最大的 p p 值。

L(p)p=0p^=i=1nxi/n(2) (2) L ( p ) p = 0 p ^ = i = 1 n x i / n

其中,求得的 p p 值称为 p p 的最大似然估计,为示区分,用 p^ p ^ 表示。

其他分布可能计算过程更加复杂,然而基本的步骤与这个例子是一致的。我们总结一下:设总体的概率函数为 p(x;θ) p ( x ; θ ) θ θ 为一个未知的参数,现已知来自总体的一个样本 x1,x2,,xn x 1 , x 2 , … , x n 那么求取 θ θ 的最大似然估计的步骤如下:

  1. 写出似然函数 L(θ) L ( θ ) ,它实际上就是样本的联合概率函数

    L(θ)=p(x1;θ)p(x2;θ)p(xn;θ)(3) (3) L ( θ ) = p ( x 1 ; θ ) ⋅ p ( x 2 ; θ ) ⋅ … p ( x n ; θ )

  2. 对似然函数求取对数,并整理

    ln(L(θ))=lnp(x1;θ)++lnp(xn;θ)(4) (4) ln ⁡ ( L ( θ ) ) = ln ⁡ p ( x 1 ; θ ) + ⋯ + ln ⁡ p ( x n ; θ )

  3. 关于参数 θ θ 求偏导,并令偏导数为0,解得参数 θ^ θ ^ ,这就是参数 θ θ 的最大似然估计

    L(θ)θ=0θ^=(5) (5) ∂ L ( θ ) ∂ θ = 0 ⇒ θ ^ = …

2. 隐藏变量

上面介绍了最大似然估计,可上面的做法仅适用于不存在隐藏变量的概率模型。什么是隐藏变量呢,我们看这样一个例子。假设现在班上有男女同学若干,同学们的身高是服从正态分布的,当然了,男生身高分布的参数与女生身高分布的参数是不一样的。现在如果给你一个同学的身高,你很难确定这个同学是男是女。如果这个时候抽取样本,让你做上面的最大似然估计,那么就需要做以下两步操作了:

  • 估计一下样本中的每个同学是男生还是女生;
  • 估计男生和女生的身高分布的参数;

第二步就是上面说的最大似然估计,难点在第一步,你还得先猜测男女才行。用更抽象的语言,可以这样描述:属于多个类别的样本混在了一起,不同类别样本的参数不同,现在的任务是从总体中抽样,再通过抽样数据估计每个类别的分布参数。这个描述就是所谓的“在依赖于无法观测的隐藏变量的概率模型中,寻找参数最大似然估计”,隐藏变量在此处就是样本的类别(比如上例中的男女)。这个时候EM算法就派上用场了。

3. EM算法的基本思想

直观考虑这种隐藏变量的问题,你会发现它很麻烦,因为它使得人们陷入了一种两难的境地:我只有知道了哪些样本是属于同一个类别的,才能根据最大似然函数估计这个类别样本的分布参数;同样,我只有知道了不同类别样本的分布参数,才有可能判断现某个样本到底属于哪个类别的可能性更大。

也就是说,你不确定,我就确定不了;而我不确定,你也确定不了。那怎么办?我们可以先让其中一方随便确定一个值,然后用根据这个值看看对方如何变化,再根据对方的变化调整己方,这样你根据我调整,我再根据你调整,循环往复,最终双方都几乎不变了(也就是收敛了),那就可以确定相关的值了。百度百科上有一个形象的例子,我抄过来,大家可以理解一下:

“比如说食堂的大师傅炒了一份菜,要等分成两份给两个人吃,显然没有必要拿来天平一点的精确的去称分量,最简单的办法是先随意的把菜分到两个碗中,然后观察是否一样多,把比较多的那一份取出一点放到另一个碗中,这个过程一直迭代地执行下去,直到大家看不出两个碗所容纳的菜有什么分量上的不同为止。”

EM的求解思路就是我上面所描述的这样。(1)我们先根据经验为每个类别(即隐藏变量)赋予一个初始分布,这相当于是假定了分布参数。然后根据分布的参数可以求取每个数据元组的隐藏变量的期望(相当于实施了归类操作);(2)再根据归类结果计算分布参数(向量)的最大似然值,然后根据这个最大似然值在反过来重新计算每个元组的隐藏变量的期望。这样循环往复,最终如果隐藏变量的期望与参数的最大似然值趋于稳定了,EM算法就算是执行完毕了。

这么说可能有点抽象,我那上面那个男女生身高的例子再说一遍:(1)首先,我们根据经验,估计男生的身高分布为 (1.7,0.1) ( 1.7 , 0.1 ) ,女生的为 (1.55,0.1) ( 1.55 , 0.1 ) ,当然这就是瞎猜的,不一定准。然后你就可以根据参数可以求出每个数据(身高值)应该是男生的还是女生的,这个分类结果就是隐藏变量的期望;(2)这时,写出最大似然函数,根据“已知”的每个数据的隐藏变量求出参数列表的最大似然值,反过来再执行(1)步,反复迭代,直到收敛。

综上,我们也就能理解为什么EM算法要叫“最大化期望”算法了,它是由两步组成,第一步是E步,就是求期望;第二步是M步,就是最大化:

  • E步(Expectation):根据当前的参数值,计算样本隐藏变量的期望;
  • M步(Maximum):根据当前样本的隐藏变量,求解参数的最大似然估计;

4. EM算法的具体步骤

现有样本 x1,x2,,xn x 1 , x 2 , … , x n ,设每个样本的隐藏变量(这里就当做是属于的类别)为 zi z i ,其取值有 m m 种: z(1),,z(m) z ( 1 ) , , z ( m ) 。EM算法的任务是求解不同类别样本的参数的最大似然估计。具体步骤如下:

4.1 写出对数化后的似然函数

假设对数似然函数如下:

lnL(θ)=ln(p(x1;θ)p(x2;θ)p(xn;θ))=i=1nlnp(xi;θ)=i=1nlnj=1mp(x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大化期望算法(EM)详解 的相关文章

  • Java并发编程的相关知识(7)-阻塞队列

    阻塞队列 ArrayBlockingQueue LinkedBlockingQueue ProiorityBlockingQueue DelayQueue SynchronousQueue LinkedTransferQueue Linke
  • PTA练习 Java模拟题 编程题

    7 1 各类字符数 20 分 从键盘输入一个字符串 程序输出该字符串中的大写英文字母数 小写英文字母数以及非英文字母数 输入格式 字符串 输出格式 大写英文字母数 小写英文字母数 非英文字母数 输入样例 在这里给出一组输入 例如 Hello

随机推荐

  • window10安装vim编辑器

    我们在做git操作的时候 很多文字编辑工作会默认打开 Vim 编辑器来进行操作 Vim 是一个高度可配置的文本编辑器 旨在让创建和更改任何类型的文本变得非常高效 大多数 UNIX 系统和 Apple OS X 都将它作为vi包含在内 用惯了
  • pic图片怎么换jpg格式_HEIC格式图片转换成jpg原来这么简单!

    说到HEIC格式不晓得大家熟不熟悉 使用苹果手机的小伙伴肯定很熟悉吧 不知道也没关系 下面我们先来了解下 什么是HEIC格式图片 01 什么是HEIC格式 这是苹果手机上的一种图片格式 ios11系统更新后 利用苹果手机拍摄 原相机 出来的
  • centos系统把.net6 web api部署到docker

    为了搞定docker是怎么部署的 做个笔记 前提条件 准备一个core项目 使用vs自带的docker打包 假如你选择docker支持的时候不小心安装了Docker Desktop 还可以简单的先部署到本地docker中 发布到centos
  • Python-Scrapy安装

    描述 安装爬虫框架Scrapy 基本使用 知识点总结 目录 一 Scrapy安装 1 1 scrapy是什么 1 2 安装环境 1 3 步骤安装 1 4 测试是否安装成功 1 4 第三方库 一 Scrapy安装 1 1 scrapy是什么
  • .NetCore之log4net的使用

    1 首先下载log4ne的包 2 添加配置文件log4net config
  • CodeWhisperer的注册、安装与使用指南。

    CodeWhisperer是一款功能强大的代码编辑器 它支持多种编程语言 并提供了许多有用的编辑和调试功能 下面是使用CodeWhisperer 需要进行注册 安装和使用 下面是详细的指南 一 注册CodeWhisperer 在使用Code
  • [物联网方案-3]:井下作业需要检测气体类型与常见的传感器

    井下作业的主要职业危险是缺氧窒息 一氧化碳 硫化氢中毒和可燃气爆炸 其中最常见的现象是硫化氢中毒 复合式四合一气体检测仪能及时检测出井内有毒有害气体的浓度 并能自动报警 1 一氧化碳中毒 一氧化碳中毒 呼吸浅而急促 失去知觉时面颊及身上有红
  • TEASER

    本文是对文章 TEASER Fast and Certifiable Point Cloud Registration 的解读 摘要 这篇文章提出了第一个快速且可证明的算法 用于存在大量外点对应的情况下两组3D点的配准 可证明的算法尝试求解
  • Spring Boot 安全的最佳实践

    Spring Boot 安全的最佳实践 在 Web 应用程序中 安全性是至关重要的 恶意攻击者可能会利用您的应用程序中的弱点来获取敏感信息或者窃取用户数据 为了保护您的应用程序和用户数据 您需要遵循一些最佳实践 本文将介绍 Spring B
  • C#简单的制作一个窗体应用

    废话少说下面先看效果 登陆管理员 注册账号和管理账号 修改密码界面 功能界面 功能一 连接中国移动物联网平台检测温湿度 输入wendu可以查询 功能二 查看图片 功能三 读写通知管理员可以写但普通成员只可以读 功能四 计算工具 可以计算三角
  • 一百四十六、Xmanager——Xmanager5连接Xshell7并控制服务器桌面

    一 目的 由于kettle安装在Linux上 Xshell启动后需要Xmanager 而Xmanager7版本受限 没有免费版 所以就用Xmanager5去连接Xshell7 二 Xmanager5安装包来源 一 注册码 注册码 10121
  • Linux——TCP传输可靠性

    TCP传输可靠性的前提条件 重传机制 针对数据包丢失或者出现定时器超时 确认应答 停止等待协议 发送之后等待收到应答 序列号 针对数据包到达接收端主机顺序乱掉 流量控制 针对避免网络拥堵时候 针对高效传输数据包的流动窗口的控制 拥塞控制 针
  • qt中Graphic中 View的坐标和Scene的坐标不匹配的问题

    在QT中使用QGraphicView 和QGraphicsSce 时 会遇到一个这样一个问题 Scene中绘制图的坐标与View显示坐标不符 例如 直接在scene中添加直线 并且设置起点是0 0 但是我们会发现他的起点并不是0 0 如下图
  • 【数据结构入门】队列(Queue)详解(定义、销毁、入队、出队等)

    文章目录 1 前言 1 队列的概念 2 队列的结构 2 队列的实现 链式结构 1 队列的定义 2 队列的初始化 3 队列的销毁 4 入队 尾插 5 出队 头删 6 获取队列元素个数 7 获取队头元素 8 获取队尾元素 9 检查队列是否为空
  • Qt 获取程序所在路径等特殊路径的方法

    目录 经常我们的程序中需要访问一些特殊的路径 比如程序所在的路径 用户目录路径 临时文件夹等 在 Qt 中实现这几个功能所用的方法虽然都不难 但是各不相同 每次用到时还要现去查 很不方便 因此就写了这篇博客 把这几种需求的实现方式总结了一下
  • 2022春招前端最新面试题分享(牧原股份)

    牧原股份 公司及岗位信息 公司 牧原股份 岗位 前端开发工程师 地点 河南 薪资 12k 16k 面试结果 一面后暂时未接到通知 一面HR技术群面 2022 04 19 自我介绍 期望薪资 你认为你为什么值这个钱 JS常用的数据类型 分辨引
  • Spring Boot(一)

    什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架 其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程 该框架使用了特定的方式来进行配置 从而使开发人员不再需要定义样板化的配置 Sp
  • UG10.0安装方法及步骤

    1 右击软件压缩包 选择解压到 UG10 64bit 选项 2 打开破解文件夹下的NX10 0 JAVA X64位exe文件 3 然后点下一步 4 下一步 5 选择安装目录 默认安装在 C Program Files Java jdk18
  • 面试华为,花了2个月才上岸,真的难呀····

    花2个月时间面试一家公司 你们觉得值吗 背景介绍 美本计算机专业 代码能力一般 之前有过两段实习以及一个学校项目经历 第一份实习是大二暑期在深圳的一家互联网公司做前端开发 第二份实习由于大三暑假回国的时间比较短 小于两个月 于是找的实习是在
  • 最大化期望算法(EM)详解

    我们知道最大似然估计的根本目的是根据抽样的到的样本 即数据 反推出最有可能的分布参数 即模型 这是一个非常典型的机器学习的思想 所以在很多领域最大似然估计有着极为广泛的应用 然而 如果已知的数据中含有某些无法观测的隐藏变量时 直接使用最大似