当前位置: 首页 > news >正文

西瓜书机器学习——第八章EM算法

在这里插入图片描述

系列文章目录


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前置知识
    • 一、背景知识:隐变量与EM算法的应用
          • 1. 隐变量(Latent Variable)
          • **2. EM算法的用途**
    • 二、EM算法的思想与流程
          • 1. 核心思想:`两步迭代优化`
          • **2. 算法流程**
        • **三、数学原理:Jensen不等式与下界优化**
          • **1. 边缘似然的困境**
          • **2. Jensen不等式的应用**
        • **四、EM vs 梯度下降:为什么选择坐标下降?**
        • **五、总结**


前置知识

完全可以以K-means为例子来理解


一、背景知识:隐变量与EM算法的应用

1. 隐变量(Latent Variable)

定义:隐变量是数据中无法直接观测但影响观测数据分布的变量。
示例
◦ 在混合高斯模型(GMM)中,每个样本属于哪个高斯分布是未知的隐变量。
◦ 在文本主题模型中,每篇文档的主题分布是隐变量。
核心作用:因此,需要通过对隐变量建模复杂数据分布,解决“不完全数据”的参数估计问题。

2. EM算法的用途

核心功能:在存在隐变量数据缺失时,估计模型参数。

(事实上的分布参数与隐变量分布相互耦合)我们的核心目的是要估计分布参数

典型场景
• 聚类分析(如K-Means、GMM)。
• 隐马尔可夫模型(HMM)的参数学习。
• 主题模型(如LDA)。
• 数据补全(如缺失属性值的估计)。


二、EM算法的思想与流程

实际上是通过交替优化 (Q(Z)) 和 (\theta),避开直接求解复杂耦合问题。

1. 核心思想:两步迭代优化

EM算法通过交替执行以下两步,逐步逼近参数的最优解:
E步(Expectation):基于当前分布参数估计隐变量的分布(计算后验概率)。 固定分布参数,估计隐变量
M步(Maximization):基于隐变量的分布更新分布参数,最大化对数似然的下界。 固定隐变量,最大化对数似然下界来更新分布参数

直观类比:K-Means与EM的关系
隐变量:样本所属的类别(簇标签)。
参数:簇中心(类中心)。
迭代过程

  1. E步:将样本分配到最近的簇(固定簇中心,估计隐变量)。
  2. M步:重新计算簇中心(固定隐变量,更新参数)。
2. 算法流程
步骤说明
输入观测数据 X X X,隐变量 Z Z Z,联合分布 P ( X , Z ∣ θ ) P(X,Z|\theta) P(X,Zθ),初始参数 θ ( 0 ) \theta^{(0)} θ(0)
迭代直至收敛
E步计算隐变量的后验概率:
Q ( Z ) = P ( Z ∣ X , θ ( t ) ) Q(Z) = P(Z|X, \theta^{(t)}) Q(Z)=P(ZX,θ(t))
M步更新参数:
θ ( t + 1 ) = arg ⁡ max ⁡ θ ∑ Z Q ( Z ) ln ⁡ P ( X , Z ∣ θ ) \theta^{(t+1)} = \arg\max_\theta \sum_Z Q(Z) \ln P(X,Z|\theta) θ(t+1)=argmaxθZQ(Z)lnP(X,Zθ)
输出参数 θ \theta θ 和隐变量分布 Q ( Z ) Q(Z) Q(Z)

三、数学原理:Jensen不等式与下界优化
1. 边缘似然的困境

• 目标函数为对数边缘似然:
L ( θ ) = ln ⁡ P ( X ∥ θ ) = ln ⁡ ∑ Z P ( X , Z ∥ θ ) L(\theta) = \ln P(X\|\theta) = \ln \sum_Z P(X,Z\|\theta) L(θ)=lnP(Xθ)=lnZP(X,Zθ)
• 直接优化困难:对隐变量 Z Z Z 求和的对数难以求导。

2. Jensen不等式的应用

• 引入隐变量的分布 Q ( Z ) Q(Z) Q(Z),构造下界:
L ( θ ) ≥ ∑ Z Q ( Z ) ln ⁡ P ( X , Z ∥ θ ) Q ( Z ) L(\theta) \geq \sum_Z Q(Z) \ln \frac{P(X,Z\|\theta)}{Q(Z)} L(θ)ZQ(Z)lnQ(Z)P(X,Zθ)
E步固定 θ \theta θ,选择 Q ( Z ) = P ( Z ∥ X , θ ( t ) ) Q(Z) = P(Z\|X, \theta^{(t)}) Q(Z)=P(ZX,θ(t)),使下界紧贴 L ( θ ) L(\theta) L(θ)
M步固定 Q ( Z ) Q(Z) Q(Z),优化 θ \theta θ以提升下界,从而推高 L ( θ ) L(\theta) L(θ)

为什么要转最大化对数似然为最大化对数似然下界

  • Jensen不等式
    对于凸函数 f ( x ) f(x) f(x),有:
    f ( E [ x ] ) ≤ E [ f ( x ) ] f\left( \mathbb{E}[x] \right) \leq \mathbb{E}[f(x)] f(E[x])E[f(x)]
    • 对于凹函数 (f(x))(如对数函数 (\ln(x))),有:
    f ( E [ x ] ) ≥ E [ f ( x ) ] f\left( \mathbb{E}[x] \right) \geq \mathbb{E}[f(x)] f(E[x])E[f(x)]
  • 构造下界函数
    引入隐变量的分布 Q ( Z ) Q(Z) Q(Z)(需满足 ∑ Z Q ( Z ) = 1 \sum_Z Q(Z) = 1 ZQ(Z)=1),将边缘似然 L ( θ ) L(\theta) L(θ) 转换为期望形式:
    L ( θ ) = ln ⁡ ∑ Z Q ( Z ) ⋅ P ( X , Z ∣ θ ) Q ( Z ) L(\theta) = \ln \sum_Z Q(Z) \cdot \frac{P(X,Z|\theta)}{Q(Z)} L(θ)=lnZQ(Z)Q(Z)P(X,Zθ)
    根据 Jensen不等式(应用于凹函数 ln ⁡ ( x ) \ln(x) ln(x)):
    ln ⁡ ∑ Z Q ( Z ) ⋅ P ( X , Z ∣ θ ) Q ( Z ) ≥ ∑ Z Q ( Z ) ⋅ ln ⁡ P ( X , Z ∣ θ ) Q ( Z ) \ln \sum_Z Q(Z) \cdot \frac{P(X,Z|\theta)}{Q(Z)} \geq \sum_Z Q(Z) \cdot \ln \frac{P(X,Z|\theta)}{Q(Z)} lnZQ(Z)Q(Z)P(X,Zθ)ZQ(Z)lnQ(Z)P(X,Zθ)
    记下界函数为:
    J ( θ , Q ) = ∑ Z Q ( Z ) ⋅ ln ⁡ P ( X , Z ∣ θ ) Q ( Z ) J(\theta, Q) = \sum_Z Q(Z) \cdot \ln \frac{P(X,Z|\theta)}{Q(Z)} J(θ,Q)=ZQ(Z)lnQ(Z)P(X,Zθ)
    L ( θ ) ≥ J ( θ , Q ) L(\theta) \geq J(\theta, Q) L(θ)J(θ,Q)最大化 J ( θ , Q ) J(\theta, Q) J(θ,Q) 即可提升 L ( θ ) L(\theta) L(θ)

四、EM vs 梯度下降:为什么选择坐标下降?
方法优化策略优势场景
梯度下降同时对 (\theta) 和隐变量求导,同步更新。适用于目标函数光滑且可导的简单问题。
坐标下降交替优化 (\theta) 和隐变量(分E步和M步)。处理非凸问题、隐变量耦合的复杂目标函数(如EM)。

关键原因当目标函数存在隐变量耦合时,直接求导不可行,而分步优化(固定一个变量,优化另一个)简化计算。


五、总结

隐变量:EM通过建模隐变量解决不完全数据问题。
两步走:E步计算隐变量期望,M步最大化似然下界。
数学本质:通过Jensen不等式构造可优化的下界,分步逼近最优解。
应用场景:聚类、主题模型、缺失数据补全等需隐变量建模的任务。

每次迭代中,E步让下界紧贴当前似然值,M步提升下界(从而推高似然值)。通过这种交替优化的策略,EM算法成为处理隐变量问题的经典工具,兼具理论严谨性与实践可行性。

相关文章:

  • 【密码学——基础理论与应用】李子臣编著 第五章 序列密码 课后习题
  • spring.factories文件作用详解,@SpringBootApplication启动过程与其关联
  • SpringCloud-快速通关(二)
  • Scrapy结合Selenium实现搜索点击爬虫的最佳实践
  • 一站式Windows下Docker开启MySQL并链接本地Navicat(附乱码解决方案)
  • Docker学习笔记-docker安装、删除
  • 单片机任意普通IO引脚使用定时器扩展外部中断的巧妙方法
  • 如何撤回刚提交的 commit
  • 在交换机上划分VLAN并配置IP地址的完整指南
  • C数据结构--顺序表
  • 【Linux】41.网络基础(2.3)
  • SQL 查询中 ORDER BY 的执行顺序
  • 30学Java第十天——类加载的过程
  • **searchProperties 是什么,python中**是什么:解包字典的操作符
  • camx的xml解析
  • 【跳坑日记】Jetson 6.2 编译cuda-sample报错:No CMAKE_CUDA_COMPILER could be found
  • java android持久化数据
  • c#内存泄露的原因和解决办法
  • 全新电脑如何快速安装nvm,npm,pnpm
  • 批量将文件夹名称、文件夹路径提取到 Excel 清单
  • 默茨首访聚焦欧洲,欲推欧洲防务自主
  • 匈牙利史专家阚思静逝世,享年87岁
  • 印控克什米尔地区再次传出爆炸声
  • 中国证监会印发2025年度立法工作计划
  • 代理销售保险存在误导行为,农业银行重庆市分行相关负责人被罚款0.1万元
  • 国家主席习近平同普京总统出席签字和合作文本交换仪式