期望最大化(expectation-maximization,E-M)是一种非常强大的算法,应用于数据科学的很多场景中。k-means 是EM算法的一个非常简单并且易于理解的应用,本文先从K均值聚类讲起,然后引出K均值的缺陷,提出了混合高斯模型对K均值聚类进行优化。混合高斯模型也使用了EM算法。
关于EM算法可以参考文章:EM算法详解
K均值聚类
K均值聚类将样本集合划分到 k k k 个子集,构成 k k k 个类,将 n n n 个样本分到 k k k 个类中,使得每个样本到其所属类的中心距离最小。每个样本只能属于一个类。
模型
我们先来约定以下变量的含义:
(1) X = { x ⃗ 1 , x ⃗ 2 , … x ⃗ n } X = \{\vec x_1,\vec x_2,\ldots\vec x_n\} X={x1,x2,…xn} 表示 n n n个样本的集合,每个样本 x ⃗ n \vec x_n xn 是一个维度为m的特征向量。 k k k 均值聚类的目标是将 n n n 个样本分到 k k k 个不同的类(簇)中,这里假设 k < n k<n k<n。
(2) G 1 , G 2 … G k G_1,G_2 \ldots G_k G1,G2…Gk 表示 X X X 的 k k k个类。满足:两个类 G i , G j G_i,G_j Gi,Gj 之间没有交集,所有的样本都在这 k k k 类里。
聚类模型从函数的角度来说,是指存在一个一对一的函数
C
C
C,使得:
l
=
C
(
x
⃗
i
)
l = C (\vec x_i)
l=C(xi)
其中:
l
∈
{
1
,
2
…
k
}
l \in \{1,2\ldots k\}
l∈{1,2…k} 表示每一个类。上式表示样本
x
⃗
i
\vec x_i
xi 属于第
l
l
l个类别。
我们接下来来说说如何确定这个 C C C 来获得最小的损失函数,从而实现最优划分。
策略
(1)损失函数
确定一个模型之前我们先定义模型的损失函数。
首先,采用欧氏距离平方作为样本之间的距离
d
(
x
⃗
i
,
x
⃗
j
)
d(\vec x_i,\vec x_j)
d(xi,xj)
d
(
x
⃗
i
,
x
⃗
j
)
=
∣
∣
x
⃗
i
−
x
⃗
j
∣
∣
2
=
∑
k
=
1
m
(
x
k
i
−
x
k
j
)
2
d(\vec x_i,\vec x_j) =||\vec x_i - \vec x_j||^2= \sum_{k=1}^m(x_{ki} - x_{kj})^2
d(xi,xj)=∣∣xi−xj∣∣2=k=1∑m(xki−xkj)2
其次,定义样本与其所属类的中心之间的距离的总和为损失函数,即
W
(
C
)
=
∑
l
=
1
k
∑
C
(
i
)
=
l
∣
∣
x
⃗
i
−
x
⃗
l
∣
∣
2
W(C) =\sum_{l=1}^k\sum_{C(i)=l} ||\vec x_i - \vec x_l||^2
W(C)=l=1∑kC(i)=l∑∣∣xi−xl∣∣2
其中:
x
⃗
l
=
{
x
⃗
1
l
,
x
⃗
2
l
,
…
x
⃗
m
l
}
\vec x_l = \{\vec x_{1l},\vec x_{2l},\ldots\vec x_{ml}\}
xl={x1l,x2l,…xml} 是第
l
l
l 类的均值中心。
n
l
=
∑
i
=
1
n
I
(
C
(
i
)
=
l
)
n_l=\sum_{i=1}^n I(C(i)=l)
nl=∑i=1nI(C(i)=l),
I
(
C
(
i
)
=
l
)
I(C(i)=l)
I(C(i)=l)是指示函数,第i个样本属于类别
l
l
l时取1,否则取0。W© 衡量了相同类别的样本的相似程度。函数
W
(
C
)
W(C)
W(C) 也称为能量,表示相同类中的样本相似程度。
k 均值聚类问题就是求解最优化问题:
C
∗
=
arg
min
C
W
(
C
)
=
arg
min
C
∑
l
=
1
k
∑
C
(
i
)
=
l
∣
∣
x
⃗
i
−
x
⃗
l
∣
∣
2
C^* = \arg \min_C W(C) =\arg \min_C \sum_{l=1}^k\sum_{C(i)=l} ||\vec x_i - \vec x_l||^2
C∗=argCminW(C)=argCminl=1∑kC(i)=l∑∣∣xi−xl∣∣2
相似的样本被聚到同类时,损失函数最小。
算法流程
k 均值聚类是一个迭代的过程,每次迭代包括两个步骤:
(1)选择k个类的中心
(
m
1
,
m
2
…
,
m
k
)
(m_1,m_2 \ldots,m_k)
(m1,m2…,mk),将样本逐个指派到与其最近的中心类中得到一个暂时的聚类结果,这样使得样本和其所属类中心的距离最小,也即最小化损失函数:
min
C
∑
l
=
1
k
∑
C
(
i
)
=
l
∣
∣
x
⃗
i
−
m
⃗
l
∣
∣
2
\min_C \sum_{l=1}^k\sum_{C(i)=l} ||\vec x_i - \vec m_l||^2
Cminl=1∑kC(i)=l∑∣∣xi−ml∣∣2
(2)更新每个类的样本均值,作为新的中心。
m
l
=
1
n
l
∑
C
(
i
)
=
l
x
⃗
i
,
l
=
1
,
2
…
k
m_l = \frac{1}{n_l}\sum_{C(i)=l} \vec x_i, l=1,2\ldots k
ml=nl1C(i)=l∑xi,l=1,2…k
重复以上两个步骤,直到收敛。
算法特性
(1)以欧氏距离的平方表示样本之间的距离。以样本和其所属类别的中心距离的总和为最优化的目标函数。
(2)初始中心的选择直接影响聚类结果
(3)不能保证得到全局最优解
(4)类别数 k k k 事先指定,而实际应用中最优的 k k k 值时不知道的。需要不断的测试。类别数与类平均直径的关系如下:
一般情况下类别数较小时,类平均直径较大,类别数增大超过某个值以后,平均直径趋于不变。这个值对应的类别数就是最优值。
K均值与EM算法
K均值聚类的过程中蕴含着EM算法的思想。
简单来说,期望最大化方法包含以下步骤:
(1)猜测一些簇中心点
(2)重复直至收敛。
a期望步骤(E-step) :将点分配至离其最近的簇中心点。
b.最大化步骤(M-step) :将簇中心点设置为所有点坐标的平均值。
期望步骤(E-step) 不断更新每个点是属于哪一个簇的期望值,最大化步骤(M-step)计算关于簇中心点的拟合函数值最大化对应坐标,在本例中,通过简单地求每个簇中所有数据点坐标的平均值得到了簇中心点坐标。
K均值聚类的缺陷
如果你的数据长这样,K均值聚类可以实现较好的效果:
但是如果你的数据长这样:
用K均值聚类的结果可能是这样:
不是我们预期的聚类结果。我们想要的聚类效果应该是下面这样的:
这个例子说明: 依靠基于距离模型的K均值聚类不能解决这个问题,K均值聚类忽略了一个问题:即数据来自不同的分布,所以我们在聚类之前应该先考虑数据的分布,在满足数据分布相同的情况下再进行聚类。也就是使用基于分布的模型—高斯混合模型。
高斯混合模型(GMM)
高斯混合模型(Gaussian Mixture Model)模型中的隐变量是不知道数据来源于哪个模型,我们通过EM算法来解决这个问题。
GMM概率图模型
我们先通过GMM的概率图模型来了解一下符合混合高斯模型的数据是如何生成的。
GMM的概率图模型如下:
由概率图模型可知观测数据的产生过程如下:
(1)依概率 α k \alpha _k αk选择第 k k k 个高斯分布模型 ϕ ( y ∣ θ k ) \phi(y|\theta_k) ϕ(y∣θk)
(2)依第 k k k个分模型的概率分布 ϕ ( x ∣ θ k ) \phi(x|\theta_k) ϕ(x∣θk)生成观测数据 x j x_j xj
这个过程会使得数据来自不同的分布。
GMM模型
GMM的数学模型长这样:
P
(
y
∣
θ
)
=
∑
k
=
1
K
α
k
ϕ
(
y
∣
θ
k
)
P(y|\theta)=\sum\limits^{K}_{k=1}\alpha_k\phi(y|\theta_k)
P(y∣θ)=k=1∑Kαkϕ(y∣θk)
其中,
α
k
\alpha_k
αk是系数,
α
k
≥
0
\alpha_k\ge0
αk≥0,
∑
k
=
1
K
α
k
=
1
\sum\limits^{K}_{k=1}\alpha_k=1
k=1∑Kαk=1,
ϕ
(
y
∣
θ
k
)
\phi(y|\theta_k)
ϕ(y∣θk) 是高斯分布密度,
θ
k
=
(
μ
,
σ
2
)
\theta_k=(\mu,\sigma^2)
θk=(μ,σ2)
ϕ
(
y
∣
θ
k
)
=
1
2
π
σ
k
exp
(
−
(
y
−
μ
k
)
2
2
σ
k
2
)
\phi(y|\theta_k)=\frac{1}{\sqrt{2\pi}\sigma_k}\exp\left(-\frac{(y-\mu_k)^2}{2\sigma_k^2}\right)
ϕ(y∣θk)=2πσk1exp(−2σk2(y−μk)2)
上式表示第k个分模型。
从数学模型我们可以看出:GMM是概率分布的加权求和。
由于数据来源于哪个模型,因此我们无法直接用极大似然估计求得模型得最优参数,接下来我们从EM得角度来求解。
GMM的EM算法
已知观测数据
y
1
,
y
2
,
…
,
y
N
y_1, y_2, \dots , y_N
y1,y2,…,yN,由高斯混合模型生成
P
(
y
∣
θ
)
=
∑
k
=
1
K
α
k
ϕ
(
y
∣
θ
k
)
P(y|\theta)=\sum_{k=1}^K\alpha_k\phi(y|\theta_k)
P(y∣θ)=k=1∑Kαkϕ(y∣θk)
其中,
θ
=
(
α
1
,
α
2
,
…
,
α
K
;
θ
1
,
θ
2
,
…
,
θ
K
)
\theta=(\alpha_1,\alpha_2,\dots,\alpha_K;\theta_1,\theta_2,\dots,\theta_K)
θ=(α1,α2,…,αK;θ1,θ2,…,θK)
1、明确隐变量,写出完全数据的对数似然函数。
观测数据 y j , j = 1 , 2 , … , N y_j, j=1,2,\dots,N yj,j=1,2,…,N的产生过程在上述概率图模型中已经说过, 是已知的
但反映观测数据
y
j
y_j
yj来自第
k
k
k个分模型的数据是未知的,
k
=
1
,
2
,
…
,
K
k=1,2,\dots,K
k=1,2,…,K 以**隐变量
γ
j
k
\gamma_{jk}
γjk**表示
注意这里
γ
j
k
\gamma_{jk}
γjk的维度
(
j
×
k
)
(j\times k)
(j×k)
γ
j
k
=
{
1
,
第
j
个
观
测
来
自
第
k
个
分
模
型
0
,
否
则
j
=
1
,
2
,
…
,
N
;
k
=
1
,
2
,
…
,
K
;
γ
j
k
∈
{
0
,
1
}
\gamma_{jk}= \begin{cases} 1, &第j个观测来自第k个分模型\\ 0, &否则 \end{cases}\\ j=1,2,\dots,N; k=1,2,\dots,K; \gamma_{jk}\in\{0,1\}
γjk={1,0,第j个观测来自第k个分模型否则j=1,2,…,N;k=1,2,…,K;γjk∈{0,1}
γ
j
k
\gamma_{jk}
γjk 是一种one-hot 的形式,举例:假设观测数据
y
j
y _j
yj 来源于第2个模型,则:
γ
j
2
=
(
0
,
1
,
0
…
,
0
)
\gamma_{j2} = (0,1,0\ldots,0)
γj2=(0,1,0…,0)
即:除了第二个位置外,其他位置都为0。
有了观测数据
y
i
y_i
yi 和未观测数据
γ
j
k
\gamma_{jk}
γjk ,完全数据如下:
(
y
j
,
γ
j
1
,
γ
j
2
,
…
,
γ
j
K
,
k
=
1
,
2
,
…
,
N
)
(y_j,\gamma_{j1},\gamma_{j2},\dots,\gamma_{jK},k=1,2,\dots,N)
(yj,γj1,γj2,…,γjK,k=1,2,…,N)
所以,完全数据的似然函数:
P
(
y
,
γ
∣
θ
)
=
∏
j
=
1
N
P
(
y
j
,
γ
j
1
,
γ
j
2
,
…
,
γ
j
K
∣
θ
)
=
∏
j
=
1
N
∏
k
=
1
K
[
α
k
ϕ
(
y
j
∣
θ
k
)
]
γ
j
k
=
∏
k
=
1
K
α
k
n
k
∏
j
=
1
N
[
ϕ
(
y
j
∣
θ
k
)
]
γ
j
k
=
∏
k
=
1
K
α
k
n
k
∏
j
=
1
N
[
1
2
π
σ
k
exp
(
−
(
y
j
−
μ
k
)
2
2
σ
k
2
)
]
γ
j
k
\begin{aligned} P(y,\gamma|\theta)=&\prod_{j=1}^NP(y_j,\gamma_{j1},\gamma_{j2},\dots,\gamma_{jK}|\theta)\\ =&\prod_{j=1}^N\prod_{k=1}^K\left[\alpha_k\phi(y_j|\theta_k)\right]^{\gamma_{jk}}\\ =&\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N\left[\phi(y_j|\theta_k)\right]^{\gamma_{jk}}\\ =&\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N\left[\frac{1}{\sqrt{2\pi}\sigma_k}\exp\left(-\frac{(y_j-\mu_k)^2}{2\sigma_k^2}\right)\right]^{\gamma_{jk}}\\ \end{aligned}
P(y,γ∣θ)====j=1∏NP(yj,γj1,γj2,…,γjK∣θ)j=1∏Nk=1∏K[αkϕ(yj∣θk)]γjkk=1∏Kαknkj=1∏N[ϕ(yj∣θk)]γjkk=1∏Kαknkj=1∏N[2πσk1exp(−2σk2(yj−μk)2)]γjk
其中
n
k
=
∑
j
=
1
N
γ
j
k
,
∑
k
=
1
K
n
k
=
N
n_k=\sum_{j=1}^N\gamma_{jk}, \sum_{k=1}^Kn_k=N
nk=∑j=1Nγjk,∑k=1Knk=N
所以完全数据的对数似然函数如下:
log
P
(
y
,
γ
∣
θ
)
=
∏
k
=
1
K
α
k
n
k
∏
j
=
1
N
[
1
2
π
σ
k
exp
(
−
(
y
j
−
μ
k
)
2
2
σ
k
2
)
]
γ
j
k
=
∑
k
=
1
K
{
n
k
log
α
k
+
∑
j
=
1
N
γ
j
k
[
log
(
1
2
π
)
−
log
σ
k
−
1
2
σ
2
(
y
j
−
μ
k
)
2
]
}
\begin{aligned} \log P(y,\gamma|\theta)&=\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N\left[\frac{1}{\sqrt{2\pi}\sigma_k}\exp\left(-\frac{(y_j-\mu_k)^2}{2\sigma_k^2}\right)\right]^{\gamma_{jk}} \\&=\sum_{k=1}^K\left\{n_k\log \alpha_k+\sum_{j=1}^N\gamma_{jk}\left[\log \left(\frac{1}{\sqrt{2\pi}}\right)-\log \sigma_k -\frac{1}{2\sigma^2}(y_j-\mu_k)^2\right]\right\} \end{aligned}
logP(y,γ∣θ)=k=1∏Kαknkj=1∏N[2πσk1exp(−2σk2(yj−μk)2)]γjk=k=1∑K{nklogαk+j=1∑Nγjk[log(2π1)−logσk−2σ21(yj−μk)2]}
我们假设: ∏ j = 1 N [ 1 2 π σ k exp ( − ( y j − μ k ) 2 2 σ k 2 ) ] γ j k = ω k \prod_{j=1}^N\left[\frac{1}{\sqrt{2\pi}\sigma_k}\exp\left(-\frac{(y_j-\mu_k)^2}{2\sigma_k^2}\right)\right]^{\gamma_{jk}} = \omega_k ∏j=1N[2πσk1exp(−2σk2(yj−μk)2)]γjk=ωk
则:
log
P
(
y
,
γ
∣
θ
)
=
l
o
g
∏
k
=
1
K
α
k
n
k
ω
k
=
∑
k
=
1
K
(
n
k
l
o
g
α
k
+
l
o
g
ω
k
)
\begin{aligned}\log P(y,\gamma|\theta) &= log\prod_{k=1}^K\alpha_k^{n_k}\omega_k\\&= \sum_{k=1}^K(n_klog\alpha_k + log\omega_k) \\\end{aligned}
logP(y,γ∣θ)=logk=1∏Kαknkωk=k=1∑K(nklogαk+logωk)
继续求
l
o
g
ω
k
log\omega_k
logωk
l
o
g
ω
k
=
l
o
g
∏
j
=
1
N
[
1
2
π
σ
k
exp
(
−
(
y
j
−
μ
k
)
2
2
σ
k
2
)
]
γ
j
k
=
∑
j
=
1
N
γ
j
k
(
l
o
g
1
2
π
−
l
o
g
σ
k
−
(
y
j
−
μ
k
)
2
2
σ
k
2
)
\begin{aligned}log\omega_k &=log\prod_{j=1}^N\left[\frac{1}{\sqrt{2\pi}\sigma_k}\exp\left(-\frac{(y_j-\mu_k)^2}{2\sigma_k^2}\right)\right]^{\gamma_{jk}} \\&=\sum_{j=1}^N \gamma_{jk}(log \frac{1}{\sqrt{2\pi}}-log\sigma_k - \frac{(y_j-\mu_k)^2}{2\sigma_k^2} )\end{aligned}
logωk=logj=1∏N[2πσk1exp(−2σk2(yj−μk)2)]γjk=j=1∑Nγjk(log2π1−logσk−2σk2(yj−μk)2)
所以:
log
P
(
y
,
γ
∣
θ
)
=
∑
k
=
1
K
{
n
k
log
α
k
+
∑
j
=
1
N
γ
j
k
[
log
(
1
2
π
)
−
log
σ
k
−
1
2
σ
2
(
y
j
−
μ
k
)
2
]
}
\begin{aligned}\log P(y,\gamma|\theta)=\sum_{k=1}^K\left\{n_k\log \alpha_k+\sum_{j=1}^N\gamma_{jk}\left[\log \left(\frac{1}{\sqrt{2\pi}}\right)-\log \sigma_k -\frac{1}{2\sigma^2}(y_j-\mu_k)^2\right]\right\}\end{aligned}
logP(y,γ∣θ)=k=1∑K{nklogαk+j=1∑Nγjk[log(2π1)−logσk−2σ21(yj−μk)2]}
2、EM算法的E步:确定Q函数
把
Q
Q
Q 函数表示成参数形式
Q
(
θ
,
θ
(
i
)
)
=
E
[
log
P
(
y
,
γ
∣
θ
)
∣
y
,
θ
(
i
)
]
=
E
{
∑
k
=
1
K
{
n
k
log
α
k
+
∑
j
=
1
N
γ
j
k
[
log
(
1
2
π
)
−
log
σ
k
−
1
2
σ
2
(
y
j
−
μ
k
)
2
]
}
}
(
1
)
=
∑
k
=
1
K
{
E
{
n
k
log
α
k
+
∑
j
=
1
N
γ
j
k
[
log
(
1
2
π
)
−
log
σ
k
−
1
2
σ
2
(
y
j
−
μ
k
)
2
]
}
}
(
2
)
=
∑
k
=
1
K
{
E
{
∑
j
=
1
N
γ
j
k
log
α
k
+
∑
j
=
1
N
γ
j
k
[
log
(
1
2
π
)
−
log
σ
k
−
1
2
σ
2
(
y
j
−
μ
k
)
2
]
}
}
(
3
)
=
∑
k
=
1
K
{
∑
j
=
1
N
(
E
γ
j
k
)
log
α
k
+
∑
j
=
1
N
(
E
γ
j
k
)
[
log
(
1
2
π
)
−
log
σ
k
−
1
2
σ
2
(
y
j
−
μ
k
)
2
]
}
(
4
)
\begin{aligned}Q(\theta,\theta^{(i)})=&E[\log P(y,\gamma|\theta)|y,\theta^{(i)}]\\=&\color{green}E\color{black}\left\{\sum_{k=1}^K\left\{\color{red}n_k\color{black}\log \alpha_k+\color{blue}\sum_{j=1}^N\gamma _{jk}\color{black}\left[\log \left(\frac{1}{\sqrt{2\pi}}\right)-\log \sigma _k-\frac{1}{2\sigma^2(y_j-\mu_k)^2}\right]\right\}\right\} \qquad (1) \\=&\sum_{k=1}^K\left\{\color{green}E\color{black}\left\{\color{red}n_k\color{black}\log \alpha_k+\color{blue}\sum_{j=1}^N\gamma _{jk}\color{black}\left[\log \left(\frac{1}{\sqrt{2\pi}}\right)-\log \sigma _k-\frac{1}{2\sigma^2(y_j-\mu_k)^2}\right]\right\}\right\} \qquad (2) \\=&\sum_{k=1}^K\left\{\color{green}E\color{black}\left\{\color{red}\sum_{j=1}^N\gamma_{jk}\color{black}\log \alpha_k+\color{blue}\sum_{j=1}^N\gamma _{jk}\color{black}\left[\log \left(\frac{1}{\sqrt{2\pi}}\right)-\log \sigma _k-\frac{1}{2\sigma^2(y_j-\mu_k)^2}\right]\right\}\right\} \qquad (3) \\=&\sum_{k=1}^K\left\{\color{red}\sum_{j=1}^{N}(\color{green}E\color{red}\gamma_{jk})\color{black}\log \alpha_k+\color{blue}\sum_{j=1}^N(\color{green}E\color{blue}\gamma _{jk})\color{black}\left[\log \left(\frac{1}{\sqrt{2\pi}}\right)-\log \sigma _k-\frac{1}{2\sigma^2(y_j-\mu_k)^2}\right]\right\}\qquad (4) \\\end{aligned}
Q(θ,θ(i))=====E[logP(y,γ∣θ)∣y,θ(i)]E{k=1∑K{nklogαk+j=1∑Nγjk[log(2π1)−logσk−2σ2(yj−μk)21]}}(1)k=1∑K{E{nklogαk+j=1∑Nγjk[log(2π1)−logσk−2σ2(yj−μk)21]}}(2)k=1∑K{E{j=1∑Nγjklogαk+j=1∑Nγjk[log(2π1)−logσk−2σ2(yj−μk)21]}}(3)k=1∑K{j=1∑N(Eγjk)logαk+j=1∑N(Eγjk)[log(2π1)−logσk−2σ2(yj−μk)21]}(4)
说明:
(1)到(2)是因为期望的基本性质:和的期望等于期望的和。
(2)到(3)是因为 n k = ∑ j = 1 N γ j k n_k=\sum_{j=1}^N\gamma_{jk} nk=∑j=1Nγjk
(3)到(4)是因为在Q函数是指完全数据的对数似然函数对隐变量(此处是指数据来自于哪个模型未知)的条件概率分布 P ( γ j k ∣ Y , θ ( i ) ) P(\gamma_{jk}|Y,\theta^{(i)}) P(γjk∣Y,θ(i)) 求期望,所以与隐变量 γ j k \gamma_{jk} γjk无关的统统看作常数。
因此,我们只需要计算 E ( γ j k ∣ y j , θ ) E(\gamma_{jk}|y_j,\theta) E(γjk∣yj,θ), 记为 γ ^ j k \hat \gamma _{jk} γ^jk
γ
^
j
k
=
E
(
γ
j
k
∣
y
j
,
θ
)
=
1
×
P
(
γ
j
k
=
1
∣
y
j
,
θ
)
(
1
)
=
P
(
γ
j
k
=
1
,
y
j
∣
θ
)
∑
k
=
1
K
P
(
γ
j
k
=
1
,
y
j
∣
θ
)
(
2
)
=
P
(
y
j
∣
γ
j
k
=
1
,
θ
)
P
(
γ
j
k
=
1
∣
θ
)
∑
k
=
1
K
P
(
y
j
∣
γ
j
k
=
1
,
θ
)
P
(
γ
j
k
=
1
∣
θ
)
=
α
k
ϕ
(
y
j
∣
θ
k
)
∑
k
=
1
K
α
k
ϕ
(
y
j
∣
θ
k
)
\begin{aligned}\hat \gamma _{jk}= &\color{purple}E(\gamma_{jk}|y_j,\theta)=1 \times P(\gamma_{jk}=1|y_j,\theta) \color{black} \qquad (1)\\=&\frac{P(\gamma_{jk}=1,y_j|\theta)}{\sum_{k=1}^KP(\gamma_{jk}=1,y_j|\theta)} \qquad \qquad \qquad(2) \\=&\frac{P(y_j|\color{red}\gamma_{jk}=1,\theta\color{black})\color{green}P(\gamma_{jk}=1|\theta)}{\sum_{k=1}^KP(y_j|\gamma_{jk}=1,\theta)P(\gamma_{jk}=1|\theta)}\\=&\frac{\color{green}\alpha_k\color{black}\phi(y_j|\color{red}\theta_k)}{\sum_{k=1}^K\alpha_k\phi(y_j|\theta_k)}\end{aligned}
γ^jk====E(γjk∣yj,θ)=1×P(γjk=1∣yj,θ)(1)∑k=1KP(γjk=1,yj∣θ)P(γjk=1,yj∣θ)(2)∑k=1KP(yj∣γjk=1,θ)P(γjk=1∣θ)P(yj∣γjk=1,θ)P(γjk=1∣θ)∑k=1Kαkϕ(yj∣θk)αkϕ(yj∣θk)
上式(1)到(2) 的实现细节:
P
(
γ
j
k
=
1
∣
y
j
,
θ
)
=
P
(
γ
j
k
=
1
,
y
j
,
θ
)
P
(
y
j
,
θ
)
=
P
(
γ
j
k
=
1
,
y
j
∣
θ
)
P
(
θ
)
P
(
y
j
∣
θ
)
P
(
θ
)
=
P
(
γ
j
k
=
1
,
y
j
∣
θ
)
P
(
y
j
∣
θ
)
=
P
(
γ
j
k
=
1
,
y
j
∣
θ
)
∑
k
=
1
K
P
(
γ
j
k
=
1
,
y
j
∣
θ
)
\begin{aligned} P(\gamma_{jk}=1|y_j,\theta) &= \frac{P(\gamma_{jk}=1,y_j,\theta)}{P(y_j,\theta)} \\ &= \frac{P(\gamma_{jk}=1,y_j|\theta)P(\theta)}{P(y_j|\theta)P(\theta)} \\ &= \frac{P(\gamma_{jk}=1,y_j|\theta)}{P(y_j|\theta)} \\ &= \frac{P(\gamma_{jk}=1,y_j|\theta)}{\sum_{k=1}^KP(\gamma_{jk}=1,y_j|\theta)} \\ \end{aligned}
P(γjk=1∣yj,θ)=P(yj,θ)P(γjk=1,yj,θ)=P(yj∣θ)P(θ)P(γjk=1,yj∣θ)P(θ)=P(yj∣θ)P(γjk=1,yj∣θ)=∑k=1KP(γjk=1,yj∣θ)P(γjk=1,yj∣θ)
我们定义 γ ^ j k \hat \gamma _{jk} γ^jk 是指分模型 k 对观测数据 y j y_j yj 的响应度:即当前模型参数下第 j j j 个观测数据来自第 k k k 个模型的概率。
又因为:
∑
j
=
1
N
E
γ
j
k
=
∑
j
=
1
N
P
(
γ
j
k
=
1
∣
y
,
θ
)
=
n
k
\sum_{j=1}^NE\gamma _{jk} = \sum_{j=1}^N P(\gamma_{jk}=1|y,\theta)=n_k
j=1∑NEγjk=j=1∑NP(γjk=1∣y,θ)=nk
注:当
γ
j
k
=
1
\gamma_{jk}=1
γjk=1 时,
P
(
γ
j
k
=
1
∣
y
,
θ
)
=
1
P(\gamma_{jk}=1|y,\theta)=1
P(γjk=1∣y,θ)=1
将
γ
^
j
k
\hat \gamma _{jk}
γ^jk 和
∑
j
=
1
N
E
γ
j
k
\sum_{j=1}^NE\gamma _{jk}
∑j=1NEγjk 带入Q函数,得:
Q
(
θ
,
θ
(
i
)
)
=
∑
k
=
1
K
n
k
log
α
k
+
∑
j
=
1
N
γ
^
j
k
[
log
(
1
2
π
)
−
log
σ
k
−
1
2
σ
k
2
(
y
j
−
μ
k
)
2
]
Q(\theta,\theta^{(i)})=\sum_{k=1}^Kn_k\log \alpha_k+\sum_{j=1}^N\hat \gamma_{jk}\left[\log \left(\frac{1}{\sqrt{2\pi}}\right)-\log \sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2\right]
Q(θ,θ(i))=k=1∑Knklogαk+j=1∑Nγ^jk[log(2π1)−logσk−2σk21(yj−μk)2]
3、确定EM算法的M步
求函数
Q
(
θ
,
θ
(
i
)
)
Q(\theta,\theta^{(i)})
Q(θ,θ(i))对
θ
\theta
θ的极大值,分别求
σ
,
μ
,
α
\sigma, \mu, \alpha
σ,μ,α
θ
(
i
+
1
)
=
arg
max
θ
Q
(
θ
,
θ
(
i
)
)
\theta^{(i+1)}=\arg\max_\theta Q(\theta,\theta^{(i)})
θ(i+1)=argθmaxQ(θ,θ(i))
注:
arg
max
\arg\max
argmax 就是求Q的极值对应的参数
θ
\theta
θ,如说是离散的,遍历所有值,最大查找,如果是连续的,偏导为零求极值。
-
∂ Q ∂ μ k = 0 , ∂ Q ∂ σ 2 = 0 \frac {\partial Q}{\partial \mu_k}=0, \frac {\partial{Q}}{\partial{\sigma^2}}= 0 ∂μk∂Q=0,∂σ2∂Q=0 得到 μ ^ k , σ ^ k 2 \hat\mu_k, \hat \sigma_k^2 μ^k,σ^k2
μ k ^ = ∑ j = 1 N γ j k ^ y i ∑ j = 1 N γ j k ^ σ k ^ = ∑ j = 1 N γ j k ^ ( y i − μ k ) 2 ∑ j = 1 N γ j k ^ \hat{\mu_k}=\frac{\sum_{j=1}^{N}\hat{\gamma_{jk}}y_i}{\sum_{j=1}^{N}\hat{\gamma_{jk}}} \\ \\ \hat{\sigma_k}=\frac{\sum_{j=1}^{N}\hat{\gamma_{jk}}(y_i-\mu_k)^2}{\sum_{j=1}^{N}\hat{\gamma_{jk}}} μk^=∑j=1Nγjk^∑j=1Nγjk^yiσk^=∑j=1Nγjk^∑j=1Nγjk^(yi−μk)2 -
∑ k = 1 K α k = 1 , ∂ Q ∂ α k = 0 \sum_{k=1}^K\alpha_k=1, \frac{\partial{Q}}{\partial{\alpha_k}}=0 ∑k=1Kαk=1,∂αk∂Q=0 得到 α k \alpha_k αk
a k ^ = ∑ j = 1 N γ j k ^ N \hat{a_k}=\frac{\sum_{j=1}^{N}\hat{\gamma_{jk}} }{N} ak^=N∑j=1Nγjk^
4、停止条件
重复以上计算,直到对数似然函数值不再有明显的变化为止。
这就是利用EM算法实现GMM模型的整个过程。