【课堂笔记】EM算法

news2025/6/2 4:57:27

文章目录

  • 背景
    • 极大似然估计
    • 隐变量
    • 高斯混合模型
  • EM算法
      • 合理性分析
  • 相关好文章

背景

  EM算法(期望最大化算法,Expectation-Maximization Algorithm)是一种迭代优化算法,用于在含有隐变量的概率模型中估计最大似然参数。
  这是概括性的定义,下面我会解释其中的名词并用具体例子来引入EM算法。

极大似然估计

  先复习一下极大似然函数估计,我们假设数据满足某个分布(例如正态分布 N ( μ , σ 2 ) N(\mu, \sigma^2) N(μ,σ2)),但我们不知道其中的参数( μ , σ \mu, \sigma μ,σ),于是我们需要从已知的数据中去拟合或估计出这些参数。
  进行极大似然估计的一般过程为(以正态分布为例):
(1)确定概率模型
p ( x i ; μ , σ 2 ) = 1 2 π σ 2 exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) p(x_i;\mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp \left( -\frac{(x_i - \mu)^2}{2\sigma^2} \right) p(xi;μ,σ2)=2πσ2 1exp(2σ2(xiμ)2)
(2)确定似然函数,并取负对数得到负对数似然
L ( μ , σ 2 ) = ∏ i = 1 n p ( x i ; μ , σ 2 ) = ∏ i = 1 n 1 2 π σ 2 exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) l ( μ , σ 2 ) = − ln ⁡ L ( μ , σ 2 ) = n 2 ln ⁡ ( 2 π σ 2 ) + 1 2 σ 2 ∑ i = 1 n ( x i − μ ) 2 L(\mu, \sigma^2) = \prod_{i=1}^np(x_i;\mu,\sigma^2)=\prod_{i=1}^n \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x_i - \mu)^2}{2\sigma^2}\right) \\ l(\mu, \sigma^2) = -\ln L(\mu, \sigma^2) = \frac{n}{2} \ln(2\pi\sigma^2) + \frac{1}{2\sigma^2} \sum_{i=1}^n (x_i - \mu)^2 L(μ,σ2)=i=1np(xi;μ,σ2)=i=1n2πσ2 1exp(2σ2(xiμ)2)l(μ,σ2)=lnL(μ,σ2)=2nln(2πσ2)+2σ21i=1n(xiμ)2
(3)计算极值点, θ ^ = ( μ , σ 2 ) \hat{\theta}=(\mu, \sigma^2) θ^=(μ,σ2)是待估计的参数
θ ^ = arg ⁡ min ⁡ μ , σ 2 l ( μ , σ 2 ) \hat{\theta} = \arg\min_{\mu, \sigma^2} l(\mu, \sigma^2) θ^=argμ,σ2minl(μ,σ2)
  如果方程简单,可以解析求解,即导数为0,得到似然方程。
  如果方程复杂,可能需要数值方法(如梯度下降、牛顿法)。

隐变量

  什么是隐变量?考虑以下情景:
  现在有一个蛋糕集,里面有巧克力蛋糕和草莓蛋糕,用 k i = 0 , 1 k_i = 0, 1 ki=0,1来表示。假设它们分别满足分布 N ( μ 1 , σ 1 2 ) N(\mu_1, \sigma_1^2) N(μ1,σ12) N ( μ 2 , σ 2 2 ) N(\mu_2, \sigma_2^2) N(μ2,σ22),然而,我们并不知道某个蛋糕具体是巧克力做的还是草莓做的。换句话说,我们需要估计出所有的 k i k_i ki以及参数 μ 1 , σ 1 , μ 2 , σ 2 \mu_1, \sigma_1, \mu_2, \sigma_2 μ1,σ1,μ2,σ2。这里 k i k_i ki就是隐变量,即无法直接观测的变量。
  这里就产生了一个“鸡生蛋,蛋生鸡”问题:
(1)要想估计模型参数 μ 1 , σ 1 , μ 2 , σ 2 \mu_1, \sigma_1, \mu_2, \sigma_2 μ1,σ1,μ2,σ2,需要知道每个样本的类别 k i k_i ki
(2)要想确认样本的类别 k i k_i ki需要事先知道模型的参数。

高斯混合模型

  事实上,我们可以用高斯混合模型来同时表示两个正态分布模型:
p ( x i ∣ μ 1 , σ 1 2 , μ 2 , σ 2 2 , π 0 , π 1 ) = π 0 ⋅ 1 2 π σ 1 2 exp ⁡ ( − ( x i − μ 1 ) 2 2 σ 1 2 ) + π 1 ⋅ 1 2 π σ 2 2 exp ⁡ ( − ( x i − μ 2 ) 2 2 σ 2 2 ) p(x_i | \mu_1, \sigma_1^2, \mu_2, \sigma_2^2, \pi_0, \pi_1) = \pi_0 \cdot \frac{1}{\sqrt{2\pi\sigma_1^2}} \exp\left(-\frac{(x_i - \mu_1)^2}{2\sigma_1^2}\right) + \pi_1 \cdot \frac{1}{\sqrt{2\pi\sigma_2^2}} \exp\left(-\frac{(x_i - \mu_2)^2}{2\sigma_2^2}\right) p(xiμ1,σ12,μ2,σ22,π0,π1)=π02πσ12

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【技能篇】RabbitMQ消息中间件面试专题

1. RabbitMQ 中的 broker 是指什么?cluster 又是指什么? 2. 什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布…

Linux研学-环境搭建

一 概述 1 Linux 概述 Linux系统由内核、Shell、文件系统、应用程序及系统库等关键部分组成。内核作为核心,管理硬件资源与系统服务;Shell提供用户与系统交互的命令行界面,让用户能便捷执行操作;文件系统负责数据的存储、组织与管…

Ubuntu系统下可执行文件在桌面单击运行教程

目录 ​编辑 操作环境:这个可执行文件在原目录下还有它的依赖文件 1,方法1:创建启动脚本 操作步骤​: (1)​​在桌面创建脚本文件​​(如 run_main_improve.sh): ​…

Linux之文件进程间通信信号

Linux之文件&进程间通信&信号 文件文件描述符文件操作重定向缓冲区一切皆文件的理解文件系统磁盘物理结构&块文件系统结构 软硬链接 进程间通信匿名管道命名管道system V共享内存 信号 文件 首先,Linux下一切皆文件。对于大量的文件,自然要…

代码随想录算法训练营 Day61 图论ⅩⅠ Floyd A※ 最短路径算法

图论 题目 97. 小明逛公园 本题是经典的多源最短路问题。 在这之前我们讲解过,dijkstra朴素版、dijkstra堆优化、Bellman算法、Bellman队列优化(SPFA) 都是单源最短路,即只能有一个起点。 而本题是多源最短路,即求多…

改写自己的浏览器插件工具 myChromeTools

1. 起因, 目的: 前面我写过, 自己的一个浏览器插件小工具 最近又增加一个小功能,可以自动滚动页面,尤其是对于那些瀑布流加载的网页。最新的代码都在这里 2. 先看效果 3. 过程: 代码 1, 模拟鼠标自然滚动 // 处理滚动控制逻辑…

python-pptx去除形状默认的阴影

文章目录 效果原理1. 阴影继承机制解析2. XML层操作细节3. 注意事项 扩展应用1. 批量去除阴影2. 复合效果控制 效果 右边这个是直接添加一个形状。可以看到它会默认被赋予一个阴影。 然而,这个东西在特定的场合,其实是我们所不需要的。 那怎么把这个阴…

kuboard自带ETCD存储满了处理方案

一、前言 当运行 ETCD 日志报 Erro: mvcc database space exceeded 时,说明 ETCD 存储不足了(默认 ETCD 存储是 2G),配额会触发告警,然后 Etcd 系统将进入操作受限的维护模式。 通过下面命令可以查看 ETCD 存储使用情…

SpringBoot+tabula+pdfbox解析pdf中的段落和表格数据

一、前言 在日常业务需求中,往往会遇到解析pdf文件中的段落或者表格数据的需求。 常见的做法是使用 pdfbox 来做,但是它只能提取文本数据,没有我们在文件页面上面的那种结构化组织,文本通常是散乱的包含各种换行回车空格等格式&a…

GitHub push失败解决办法-fatal: unable to access ‘https://github.com/xxx

问题描述: 问题解决: 1、首先查找自己电脑的代理地址和端口 windows教程如下: 1、搜索控制面板-打开Internet选项 2、点击局域网设置: 3、如图为地址和端口号 即可获得本机地址和端口号 2、根据上一步获得的本机地址和端口号为…

电商平台 API、数据抓取与爬虫技术的区别及优势分析

一、技术定义与核心原理 电商平台 API(应用程序编程接口) 作为平台官方提供的标准化数据交互通道,API 通过 HTTP 协议实现不同系统间的结构化数据传输。开发者需申请授权(如 API 密钥),按照文档规范调用接口…

单卡4090部署Qwen3-32B-AWQ(4bit量化)-vllm

单卡4090部署Qwen3-32B-AWQ(4bit量化) 模型:Qwen3-32B-AWQ(4bit量化) 显卡:4090 1 张 python版本 python 3.12 推理框架“vllm 重要包的版本 vllm0.9.0创建GPU云主机 这里我使用的是优云智算平台的GPU,使用链接可以看下面的 https://blog.…

漫画Android:Handler机制是怎么实现的?

线程之间通信会用到Handler,比如,在子线程中进行耗时的网络请求任务,子线程在获取到数据后,更新界面的时候就需要用到Handler; 子线程在获取到数据后,不直接去更新 界面,而是把数据通过一个消息…

多部手机连接同一wifi的ip一样吗?如何更改ip

通常情况下,多部手机连接同一个WiFi时,它们的IP地址是各不相同的(在局域网内)。但是,从互联网(外网)的角度看,它们共享同一个公网IP地址。让我详细解释一下,并说明如何更…

飞牛fnNAS的Docker应用之迅雷篇

目录 一、“迅雷”应用安装 二、启动迅雷 三、迅雷账号登录 四、修改“迅雷”下载保存路径 1、下载路径准备 2、停止“迅雷”Docker容器 3、修改存储位置 4、重新启动Docker容器 5、再次“启用”迅雷 五、测试 1、在PC上添加下载任务 2、手机上管理 3、手机添加下…

SQLMesh 用户定义变量详解:从全局到局部的全方位配置指南

SQLMesh 提供了灵活的多层级变量系统,支持从全局配置到模型局部作用域的变量定义。本文将详细介绍 SQLMesh 的四类用户定义变量(global、gateway、blueprint 和 local)以及宏函数的使用方法。 一、变量类型概述 SQLMesh 支持四种用户定义变量…

inviteflood:基于 UDP 的 SIP/SDP 洪水攻击工具!全参数详细教程!Kali Linux教程!

简介 一种通过 UDP/IP 执行 SIP/SDP INVITE 消息泛洪的工具。该工具已在 Linux Red Hat Fedora Core 4 平台(奔腾 IV,2.5 GHz)上测试,但预计该工具可在各种 Linux 发行版上成功构建和执行。 inviteflood 是一款专注于 SIP 协议攻…

Visual Studio 2022 设置自动换行

Visual Studio 2022 设置自动换行 一、在 Visual Studio 菜单栏上,选择 工具>选项二、选择“文本编辑器”>“所有语言”>“常规” 全局设置此选项。 一、在 Visual Studio 菜单栏上,选择 工具>选项 二、选择“文本编辑器”>“所有语言”&…

【Linux网络篇】:简单的TCP网络程序编写以及相关内容的扩展

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 一.简单的TCP网络程序相关接口代码实现服务器单进程版服务器多…

Scratch节日 | 粽子收集

端午节怎么过?当然是收粽子啦!这款 粽子收集 小游戏,让你一秒沉浸节日氛围,轻松收集粽子,收获满满快乐! 🎮 玩法介绍f 开始游戏:点击开始按钮,游戏正式开始!…