一、高斯混合模型定义
高斯混合模型具有如下概率分布形式:
P(y|θ)=K∑k=1αkϕ(y|θk) (9.24)
其中,α是系数,αk⩾0,K∑k=1αk=1;ϕ(y|θk)是高斯分布,θk=(μk,σ2k),
ϕ(y|θk)=1√2πσkexp(−(y−μk)22σ2k) (9.25)
为第k个高斯分布。
二、确定模型的对数似然函数
设想观测数据yj,j=1,2,⋯,N是这样产生的:首先依概率αk选择第k个高斯分布模型ϕ(y|θk);然后依第k个分模型的概率分布ϕ(y|θk)生成观测数据yj。反映观测数据yj来自第k个分模型的数据是未知的,k=1,2,⋯,K,以隐变量γjk表示,其定义如下:
γjk=1, if yj from ϕkγjk=0, else (9.27)
γjk是0-1随机变量。
模型的对数似然函数为
logP(y|θ)=logN∏j=1[K∑k=1αkϕ(yj|θk)]=N∑j=1logK∑k=1αkϕ(yj|θk) (9.28)
由于该式子包含累和的对数的形式,直接用极大似然法处理很困难,在这里采用EM算法进行参数求解。
三、EM算法的E步:确定Q函数
Q(θ,θ(i))=∑ZP(Z|Y,θ(i))logP(Y,Z|θ)=K∑k=1N∑j=1P(γjk|yj,θ(i))logαkϕ(yj|θk)
由于P(γjk|yj,θ(i))表示在观测数据和该次迭代参数的条件下,数据yj来自高斯分布k的概率,因此易得
P(γjk|yj,θ(i))=α(i)kϕ(yj|θ(i)k)K∑k=1α(i)kϕ(yj|θ(i)k)=^γjk
^γjk表示分模型k对观测数据j的响应度, 所以
Q(θ,θ(i))=K∑k=1{N∑j=1^γjklogαk+N∑j=1^γjk[log(1√(2π))−logσk−12σ2k(yj−μk)2]}=K∑k=1nklogαk+K∑k=1N∑j=1^γjk[log(1√2π)−logσk−12σ2k(yj−μk)2] (9.29)
其中nk=∑Nj=1^γjk。
四、EM算法的M步
迭代的M步是求函数Q(θ,θ(i))对θ的极大值,即求新一轮迭代的模型参数:
θ(i+1)=argmaxQ(θ,θ(i))
用^μk,^σ2k及^αk,k=1,2,⋯,K,表示θ(i+1)的各参数。求^μk,^σ2k只需将式(9.29)分别对^μk,^σ2k求偏导数并令其为0,即可得到;求^αk是在K∑k=1αk=1条件下求偏导数并令其为0得到的。结果如下:
^μk=N∑j=1^γjkyjN∑j=1^γjk (9.30)
^σ2k=N∑j=1^γjk(yj−μk)2N∑j=1^γjk (9.31)
^αk=N∑j=1^γjkN (9.32)
重复以上计算,直到对数似然函数值不再有明显的变化为止。
实际计算中M步只需计算^γjk,E步计算出相应参数即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?