MATLAB实现高斯混合分布的EM算法及二维时概率密度曲面置信椭圆绘制
Posted slandarer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB实现高斯混合分布的EM算法及二维时概率密度曲面置信椭圆绘制相关的知识,希望对你有一定的参考价值。
具体EM算法并不打算介绍太多,详细公式及证明可以参考文末链接的参考内容
EM算法
1 定义分量数目
K
K
K,对每个分量
k
k
k设置
π
k
,
μ
k
,
Σ
k
\\pi_k,\\boldsymbol\\mu_k,\\boldsymbol\\Sigma_k
πk,μk,Σk的初始值。
2 E step
根据当前的
π
k
,
μ
k
,
Σ
k
\\pi_k,\\boldsymbol\\mu_k,\\boldsymbol\\Sigma_k
πk,μk,Σk计算后验概率
γ
(
z
n
k
)
\\gamma(z_nk)
γ(znk)。
γ
(
z
n
k
)
=
π
k
N
(
x
n
∣
μ
n
,
Σ
n
)
∑
j
=
1
K
π
j
N
(
x
n
∣
μ
j
,
Σ
j
)
\\gamma\\left(z_n k\\right)=\\frac\\pi_k \\mathcalN\\left(\\boldsymbolx_n \\mid \\boldsymbol\\mu_n, \\boldsymbol\\Sigma_n\\right)\\sum_j=1^K \\pi_j \\mathcalN\\left(\\boldsymbolx_n \\mid \\boldsymbol\\mu_j, \\boldsymbol\\Sigma_j\\right)
γ(znk)=∑j=1KπjN(xn∣μj,Σj)πkN(xn∣μn,Σn)
3 M step
根据 E step 中计算的
γ
(
z
n
k
)
\\gamma(z_nk)
γ(znk)再计算新的
π
k
,
μ
k
,
Σ
k
\\pi_k,\\boldsymbol\\mu_k,\\boldsymbol\\Sigma_k
πk,μk,Σk:
μ
k
n
e
w
=
1
N
k
∑
n
=
1
N
γ
(
z
n
k
)
x
n
Σ
k
n
e
w
=
1
N
k
∑
n
=
1
N
γ
(
z
n
k
)
(
x
n
−
μ
k
n
e
w
)
(
x
n
−
μ
k
n
e
w
)
T
π
k
n
e
w
=
N
k
N
\\beginaligned \\boldsymbol\\mu_k^n e w &=\\frac1N_k \\sum_n=1^N \\gamma\\left(z_n k\\right) \\boldsymbolx_n \\\\ \\boldsymbol\\Sigma_k^n e w &=\\frac1N_k \\sum_n=1^N \\gamma\\left(z_n k\\right)\\left(\\boldsymbolx_n-\\boldsymbol\\mu_k^n e w\\right)\\left(\\boldsymbolx_n-\\boldsymbol\\mu_k^n e w\\right)^T \\\\ \\pi_k^n e w &=\\fracN_kN \\endaligned
μknewΣknewπknew=Nk1n=1∑Nγ(znk)xn=Nk1n=1∑Nγ(znk)(xn−μknew)(xn−μknew)T=NNk
其中:
N
k
=
∑
n
=
1
N
γ
(
z
n
k
)
N_k=\\sum_n=1^N \\gamma\\left(z_n k\\right)
Nk=n=1∑Nγ(znk)
4 检查参数是否收敛或对数似然函数是否收敛,若不收敛,则返回第2步。
对数似然函数:
ln
p
(
x
∣
π
,
μ
,
Σ
)
=
∑
n
=
1
N
ln
∑
k
=
1
K
π
k
N
(
x
k
∣
μ
k
,
Σ
k
)
\\ln p(\\boldsymbolx \\mid \\boldsymbol\\pi, \\boldsymbol\\mu, \\boldsymbol\\Sigma)=\\sum_n=1^N \\ln \\left\\\\sum_k=1^K \\pi_k \\mathcalN\\left(\\boldsymbolx_k \\mid \\boldsymbol\\mu_k, \\boldsymbol\\Sigma_k\\right)\\right\\
lnp(x∣π,μ,Σ)=n=1∑Nlnk=1∑KπkN(xk∣μk,Σk)
EM算法MATLAB实现(附带详细注释)
此EM算法代码利用大量矩阵运算,和反复转置,减小了中间变量的大小,显著提高效率。
function [Mu,Sigma,Pi,Class]=gaussKMeans(pntSet,K,initM)
% @author:slandarer
% ================================================高斯混合模型(GMM)及EM算法的初步理解