统计学习:EM算法及其在高斯混合模型(GMM)中的应用

1. EM算法的基本思想

我们在应用中所面对的数据有时是缺损的/观测不完全的[1][2]。我们将数据分为:

  • 可观测数据,用Y表示;
  • 缺失数据,用Z表示;
  • 完全数据,用X=(Y,Z)表示。

我们尝试直接对可观测数据做极大似然估计:

L(θ|Y)=P(Y|θ)

但是这样的似然函数可能非常复杂。我们发现完全数据的似然,即

L(θ|Y,Z)=P(Y,Z|θ)

估计的难度要小得多。

除此之外对条件概率分布P(Z|Y,θ)进行估计的难度也要小得多。

EM算法的基本思想是通过P(Y,Z|θ)P(Z|Y,θ)这两个容易进行估计的分布来估计P(Y|θ)

事实上,在应用中缺失数据Z常常并不是真实存在,而是人为造出来的(为了方便概率分布的估计)。我们此时将缺失数据Z称为隐含数据(latent data)。

2. EM算法框架与解释

2.1 算法框架

EM算法不是单指一个算法,而是指一种算法设计思想,它是一类算法的框架。它通过迭代求对数似然函数logL(θ|Y)=logP(Y|θ)的极大似然估计。每次迭代包含两步:E步,求期望;M步,求极大化。下面是EM算法的描述:

线性可分支持向量机学习算法

2.2 算法推导

那为什么EM算法的E步会求 ZlogP(Y,Z|θ)P(Z|Y,θ(t))这样一个期望呢?

我们知道,可观测数据Y是给定的,我们原本想对logP(Y|θ)做极大似然估计。而我们可以进一步得到

logP(Y|θ)=logZP(Y,Z|θ)P(Z|θ)=logZP(Y,Z|θ)q(Z)q(Z)P(Z|θ)Zlog[P(Y,Z|θ)q(Z)q(Z)]P(Z|θ)logJensen)

其中q(Z)为不等于0的关于Z的某个分布。不等式可以看做是一个找下界的过程。

在我们这个情境下设q(Z)=P(Z|Y,θ(t)),就得到了下界为

Zlog[P(Y,Z|θ)P(Z|Y,θ(t))P(Z|Y,θ(t))]P(Z|θ)

log函数内的部分展开为

Z(logP(Y,Z|θ)P(Z|Y,θ(t)))logP(Z|Y,θ(t)))P(Z|θ)

P(Z|Y,θ(t))相对于θ是常数不用管,而前一项ZlogP(Y,Z|θ)P(Z|Y,θ(t))就是我们的Q函数。

因此我们可以说Q函数在每次迭代中去逼近logP(Y|θ)的下界。多次迭代极大化Q函数就能起到极大化logP(Y|θ)的效果。

EM算法不断逼近函数下界的过程可以形象化解释为下图:

线性可分支持向量机学习算法

3. EM算法在高斯混合模型(GMM)中的应用

3.1 模型背景

在高斯混合聚类模型中,我们假设d维样本空间中的观测数据样本点y服从高斯混合分布[3][4]

p(y|Θ)=k=1Kαkϕ(y|uk,Σk)

其中ϕ(y|uk,Σk)为多元高斯分布

ϕ(y|uk,Σk)=1(2π)d2|Σ|12e12(yu)TΣ1(yu)

且有αk>0k=1Kαk=1

高斯混合分布可以形象化地由下图表示:

线性可分支持向量机学习算法

我们假设样本的生成过程由高斯混合分布给出:首先,选择高斯混合成分,其中αk为选择第k个混合成分的概率;然后根据选择的混合成分的概率密度函数进行采样,从而生成相应的样本。

3.2 高斯混合聚类算法推导

我们令随机变量Ci{1,2,...,K}表示样本yi的高斯混合成分。而这个Ci也就对应了我们打算将样本yi聚为第几类,它的取值就是我们的聚类算法要求的。我们的模型需要按照贝叶斯定理估计Ci的后验分布

p(Ci=k|yi)=p(Ci=k)p(yi|Ci=k)p(yi|Θ)=αkϕ(y|uk,Σk)k=1Kαkϕ(y|uk,Σk)

则我们按照以下法则确定样本yi被划分为的簇标记ci:

ci=argmaxk{1,2...,K}p(Ci=k|yi)

我们前面提到按照贝叶斯定理估计概率分布p(Ci=k|yi),但我们需要先确定数据生成分布p(yi|Θ)中的参数Θ={(αk,uk,Σk)|1kK},这时就可以套用我们前面的EM算法了。

我们设yi为可观测数据,zi=(zi1,zi2,...,ziK)T(one-hot向量,表示样本i的聚类结果)为未观测数据,x=(yi,zi)为完全数据。

按照EM算法的流程走:

(1) E步,即写出Q函数

Q(Θ|Θ(t))=Ez[log p(y,z|Θ)|y,Θ(t)]

我么需要先写出完全数据的对数似然函数:

log p(y,z|Θ)=logi=1Np(yi,zi|Θ)=logk=1Ki=1N[αkϕ(yi|μk,Σk)]zik=log(kKαknki=1Nϕ(yi|μk,Σk)zik)=k=1K(nklogαk+i=1Nziklogϕ(yi|μk,Σk))

然后按照Q函数的定义求条件期望得:

Q(Θ|Θ(t))=Ez[k=1K(nklogαk+i=1Nziklogϕ(yi|μk,Σk))|y,Θ(t)]=k=1K(i=1NE(zik|y,Θ(t))logαk+i=1NE(zik|y,Θ(t))logϕ(yi|μk,Σk))

这里E(zik|y,Θ(t))就等于我们前面用贝叶斯定理求的 p(Ci=k|yi),我们将其简写为z^ik。进一步将Q
函数写为:

Q(Θ|Θ(t))=k=1K[i=1Nz^iklogαk+i=1Nz^ik(log(1(2π)d2)log|Σk|1212(yiμk)TΣk(yiμk))]

(2) M步,求极大化Q函数的新一轮迭代参数

我们只需将上式分别对μkΣk, αk(满足k=1Kαk=1)求偏导并令其等于0,可得到:

μk(t+1)=i=1Nz^ikyii=1Nz^ikΣk(t+1)=i=1Nz^ik(yiμk)(yiμk)Ti=1Nz^ikαk(t+1)=i=1Nz^ikN

3.3 高斯混合聚类算法描述

算法描述如下所示:

线性可分支持向量机学习算法

引用

  • [1] 李航. 统计学习方法(第2版)[M]. 清华大学出版社, 2019.
  • [2] 周志华. 机器学习[M]. 清华大学出版社, 2016.
  • [3] Calder K. Statistical inference[J]. New York: Holt, 1953.
  • [4] 张志华《统计机器学习》在线视频36-EM算法1: https://www.bilibili.com/video/BV1rW411N7tD?p=36
posted @   orion-orion  阅读(855)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 易语言 —— 开山篇
· 实操Deepseek接入个人知识库
· Trae初体验
点击右上角即可分享
微信分享提示