最大期望算法(Expectation-Maximum algorithm, EM)也称期望最大化算法,是一类通过迭代进行极大似然估计的优化算法,是著名的数据挖掘十大算法之一,在机器学习、数据挖掘中具有一定的影响力。EM算法是最常见的隐变量估计方法,被广泛应用于很多机器学习中,包括高斯混合模型(Gaussian mixture model,GMM),和隐式马尔科夫算法(Hidden Markov Model, HMM)的参数估计等。
EM算法是一种通过不断迭代来进行优化的策略,计算方法中每一次迭代分为两步,其中一步为期望步(E步),另一种为极大步(M步),因此被称为EM算法。EM算法是为了解决数据缺失情况下的参数估计问题而提出的,基本思想是:首先根据已经得到的观测数据来估计出模型参数的值,然后根据上一步估计出的参数估计值来估计缺失数据的值,再讲估计出的损失数据与以及得到的观测数据进行对比,以此来重新对参数值进行估计,不断反复迭代,直至收敛,迭代结束,返回结果。
贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。其中P(A|B)是在B发生的情况下A发生的可能性。贝叶斯公式为:
P ( B i ∣ A ) = P ( B i ) P ( A ∣ B i ) ∑ j = 1 n P ( B j ) P ( A ∣ B j ) P(B_i|A)=\cfrac{P(B_i)P(A|B_i)}{\sum_{j=1}^nP(B_j)P(A|B_j)} P(Bi∣A)=∑j=1nP(Bj)P(A∣Bj)P(Bi)P(A∣Bi)
对于函数 l ( θ ) = P ( x ∣ θ ) l(\theta)=P(x|θ) l(θ)=P(x∣θ),x表示某一个具体的数据, θ \theta θ表示模型的参数。在似然函数中,x是已知确定的, θ \theta θ是变量,它描述对于不同的模型参数,出现x这个样本点的概率是多少。
假如有一个罐子,里面有红白两种颜色的球,数目多少不知,两种颜色的比例也不知。目的是得到罐中红球和白球的比例,但不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中红白球的比例。假如在前面的十次次重复记录中,有七次是白球,请问罐中白球所占的比例最有可能是多少?
我们可以假设白球的比例是θ,那红球的比例是1-θ。因为每抽一个球出来,在记录颜色之后,我们把抽出的球放回了罐中并摇匀,所以每次抽出来的球的颜 色服从同一独立分布。
把一次抽出来球的颜色称为一次抽样。题目中在十次次抽样中,七次是白球的,三次为黑球事件的概率是P(样本结果|θ)。
如果第一次抽象的结果记为x1,第二次抽样的结果记为x2…那么样本结果为(x1,x2…,x10)。这样,我们可以得到表达式:
L ( θ ) = P ( 样 本 结 果 ∣ θ ) L(θ)=P(样本结果|θ) L(θ)=P(样本结果∣θ)
= P ( x 1 , x 2 , … , x 10 ∣ θ ) = P(x1,x2,…,x10|θ) =P(x1,x2,…,x10∣θ)
= P ( x 1 ∣ θ ) P ( x 2 ∣ θ ) … P ( x 10 ∣ θ ) = P(x1|θ)P(x2|θ)…P(x10|θ) =P(x1∣θ)P(x2∣θ)…P(x10∣θ)
= θ 7 ( 1 − θ ) 3 = θ^7(1-θ)^3 =θ7(1−θ)3
这是个关于的函数。而极大似然估计,就是要找到一个 θ \theta θ,使对应的 l ( θ ) l(θ) l(θ)最大:
θ ^ = arg max l ( θ ) \hat{\theta}=\argmax l(θ) θ^=argmaxl(θ)
首先,写出似然函数:
L ( θ ) = L ( x 1 , x 2 , . . . , x n ∣ θ ) = ∏ i = 1 n p ( x i ∣ θ ) , θ ∈ Θ L(\theta)=L(x_1,x_2,...,x_n|\theta)=\prod\limits_{i=1}^np(x_i|\theta),\theta\in\Theta L(θ)=L(x1,x2,...,xn∣θ)=i=1∏np(xi∣θ),θ∈Θ
其次,对似然函数取对数:
l ( θ ) = l o g L ( x 1 , x 2 , . . . , x n ∣ θ ) = l o g ∏ i = 1 n p ( x i ∣ θ ) = ∑ i = 1 n l o g p ( x i ∣ θ ) l(\theta)=logL(x_1,x_2,...,x_n|\theta)=log\prod\limits_{i=1}^np(x_i|\theta)=\sum\limits_{i=1}^nlogp(x_i|\theta) l(θ)=logL(x1,x2,...,xn∣θ)=logi=1∏np(xi∣θ)=i=1∑nlogp(xi∣θ)
然后对上式求导,另导数为0,得到似然方程。
最后,解似然方程,得到的参数值即为所求。
设f是定义域为实数的函数,如果对所有的实数x,f(x)的二阶导数都大于0,那么f是凸函数。
Jensen不等式定义如下:
如果f是凸函数,X是随机变量,那么: E[f(X)]>=f(E[x]) 。当且仅当X是常量时,该式取等号。其中,E(X)表示X的数学期望。
注:Jensen不等式应用于凹函数时,不等号方向反向。当且仅当x是常量时,该不等式取等号。
图3-1中,实线f表示凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。X的期望值就是a和b的中值,从图中可以看到E[f(X)]>=f(E[x])成立。
有两个袋子A和B,里面各有红球和白球,进行随机抽样,每次抽样先随机抽取一个袋子,再随机抽取一个球。每一次抽取到的球都不知道是从哪个袋子中抽取的,这个时候需要估计的是,这个球来自哪一个袋子,每个袋子的红球和白球的比例是多少,如图4-1。对于具体的问题使用EM算法求解步骤如图4-2所示:
图4-1EM算法要解决的问题
图4-2 EM算法求解步骤
E步:计算联合分布的条件概率期望:
Q i ( z i ) = p ( z i ∣ x i , θ t ) Q_i(z_i)=p(z_i|x_i,\theta_t) Qi(zi)=p(zi∣xi,θt)
l ( θ , θ t ) = ∑ i = 1 n ∑ z i Q i ( z i ) l o g p ( x i , z i ∣ θ ) Q i ( z i ) l(\theta,\theta_t)=\sum\limits_{i=1}^n\sum\limits_{z_i}Q_i(z_i)log\cfrac{p(x_i,z_i|\theta)}{Qi(z_i)} l(θ,θt)=i=1∑nzi∑Qi(zi)logQi(zi)p(xi,zi∣θ)
M步:极大化 l ( θ , θ t ) l(θ,θ_t) l(θ,θt),得到θ_{t+1}:
θ t + 1 = a r g m a x l ( θ , θ t ) \theta_{t+1}=argmax l(\theta,\theta_t) θt+1=argmaxl(θ,θt)
对于n个样本观察数据x=(x1,x2,…,xn),找出样本的模型参数θ, 极大化模型分布的对数似然函数:
l ( θ ) = ∑ i = 1 n l o g p ( x i ∣ θ ) l(\theta)=\sum\limits_{i=1}^n log p(x_i|\theta) l(θ)=i=1∑nlogp(xi∣θ)
θ ^ = a r g m a x ∑ i = 1 n l o g p ( x i ∣ θ ) \hat{\theta}=argmax\sum\limits_{i=1}^n log p(x_i|\theta) θ^=argmaxi=1∑nlogp(xi∣θ)
如果将得到的观察数据有未观察到的隐含数据 z = ( z 1 , z 2 , . . . , z n ) z=(z_1,z_2,...,z_n) z=(z1,z2,...,zn),即上文中每个样本来自哪个分布是未知的,此时有极大化模型分布的对数似然函数:
θ ^ = a r g m a x ∑ i = 1 n l o g p ( x i ∣ θ ) = a r g m a x ∑ i = 1 n l o g ∑ z i p ( x i , z i ∣ θ ) \hat{\theta}=argmax\sum\limits_{i=1}^n log p(x_i|\theta)=argmax\sum\limits_{i=1}^n log \sum\limits_{z_i}p(x_i,z_i|\theta) θ^=argmaxi=1∑nlogp(xi∣θ)=argmaxi=1∑nlogzi∑p(xi,zi∣θ)
使用Jensen不等式对这个式子进行缩放,分子分母同乘以一个未知分布Qi(zi)其中log(x)为凹函数:
∑ i = 1 n l o g ∑ z i p ( x i , z i ∣ θ ) = ∑ i = 1 n l o g ∑ z i Q i ( z i ) p ( x i , z i ∣ θ ) Q i ( z i ) ( 1 ) \sum\limits_{i=1}^n log \sum\limits_{z_i}p(x_i,z_i|\theta)=\sum\limits_{i=1}^n log \sum\limits_{z_i}Q_i(z_i)\cfrac{p(x_i,z_i|\theta)}{Q_i(z_i)}\quad(1) i=1∑nlogzi∑p(xi,zi∣θ)=i=1∑nlogzi∑Qi(zi)Qi(zi)p(xi,zi∣θ)(1)
≥ ∑ i = 1 n ∑ z i Q i ( z i ) l o g p ( x i , z i ∣ θ ) Q i ( z i ) ( 2 ) \qquad\qquad\quad\quad\quad\quad\ge\sum\limits_{i=1}^n \sum\limits_{z_i}Q_i(z_i)log\cfrac{p(x_i,z_i|\theta)}{Q_i(z_i)}\quad(2) ≥i=1∑nzi∑Qi(zi)logQi(zi)p(xi,zi∣θ)(2)
此时可以得到 l o g l ( θ ) log l(θ) logl(θ)的下界。在 θ θ θ已经给定的条件下, l o g l ( θ ) log l(θ) logl(θ)的值取决于 Q i ( z i ) Q_i(z_i) Qi(zi)和 p ( x i , z i ∣ θ ) p(x_i,z_i|θ) p(xi,zi∣θ)。我们可以通过调整这两个概率来使 l o g l ( θ ) log l(θ) logl(θ)的下界不断上升,来毕竟 l o g l ( θ ) log l(θ) logl(θ)的真实值。当 ∑ i = 1 n l o g ∑ z i p ( x i , z i ∣ θ ) ≥ ∑ i = 1 n ∑ z i Q i ( z i ) l o g p ( x i , z i ∣ θ ) Q i ( z i ) \sum\limits_{i=1}^n log \sum\limits_{z_i}p(x_i,z_i|\theta)\ge\sum\limits_{i=1}^n \sum\limits_{z_i}Q_i(z_i)log\cfrac{p(x_i,z_i|\theta)}{Q_i(z_i)} i=1∑nlogzi∑p(xi,zi∣θ)≥i=1∑nzi∑Qi(zi)logQi(zi)p(xi,zi∣θ)变成等式时,即可说明调整后的概率等价于 l o g l ( θ ) log l(θ) logl(θ)。
等式成立时,有:
p ( x i , z i ∣ θ ) Q i ( z i ) = c , c 为 常 数 \cfrac{p(x_i,z_i|\theta)}{Q_i(z_i)}=c,c为常数 Qi(zi)p(xi,zi∣θ)=c,c为常数
由于 Q i ( z i ) Q_i(z_i) Qi(zi)是一个分布,所以满足 ∑ z Q i ( z i ) = 1 \sum\limits_{z}Q_i(z_i)=1 z∑Qi(zi)=1和
∑ z p ( x i , z i ∣ θ ) = c \sum\limits_{z}p(x_i,z_i|\theta)=c z∑p(xi,zi∣θ)=c。
可得:
∑ z Q i ( z i ) = p ( x i , z i ∣ θ ) ∑ z p ( x i , z i ∣ θ ) = p ( x i , z i ∣ θ ) p ( x i ∣ θ ) = p ( z i ∣ x i , θ ) \sum\limits_{z}Q_i(z_i)=\cfrac{p(x_i,z_i|\theta)}{\sum\limits_{z}p(x_i,z_i|\theta)}=\cfrac{p(x_i,z_i|\theta)}{p(x_i|\theta)}=p(z_i|x_i,\theta) z∑Qi(zi)=z∑p(xi,zi∣θ)p(xi,zi∣θ)=p(xi∣θ)p(xi,zi∣θ)=p(zi∣xi,θ)
由此可知道 Q i ( z i ) Q_i(z_i) Qi(zi)由后验概率计算得出。由此在得到 Q i ( z i ) Q_i(z_i) Qi(zi)后,调整 θ θ θ,去极大化 l ( θ ) l(θ) l(θ)的下界,来得到更优的 θ θ θ。
n个样本观察数据 x = ( x 1 , x 2 , . . . , x n ) x=(x_1,x_2,...,x_n) x=(x1,x2,...,xn),初始化 θ θ θ值,联合分布 p ( x , z ∣ θ ) p(x,z|θ) p(x,z∣θ),条件分布 p ( z ∣ x , θ ) p(z|x,θ) p(z∣x,θ),最大迭代次数maxiteration。
(1)随机初始化模型参数 θ θ θ。
(2)t=1,2,…,maxiteration开始迭代:
(3)E步:计算联合分布的条件概率期望。
Q i ( z i ) = p ( z i ∣ x i , θ t ) Q_i(z_i)=p(z_i|x_i,\theta_t) Qi(zi)=p(zi∣xi,θt)
l ( θ , θ t ) = ∑ i = 1 n ∑ z i Q i ( z i ) l o g p ( x i , z i ∣ θ ) Q i ( z i ) l(\theta,\theta_t)=\sum\limits_{i=1}^n\sum\limits_{z_i}Q_i(z_i)log\cfrac{p(x_i,z_i|\theta)}{Qi(z_i)} l(θ,θt)=i=1∑nzi∑Qi(zi)logQi(zi)p(xi,zi∣θ)
(4)M步:极大化l(θ,θt),得到θt+1。
θ t + 1 = a r g m a x l ( θ , θ t ) \theta_{t+1}=argmax l(\theta,\theta_t) θt+1=argmaxl(θ,θt)
(5)当θt+1已经收敛时,结束并输出结果,否则继续进行(2)和(3)进行迭代。
最后输出迭代得到的参数θ。
有两个袋子A和B,里面各有红球和白球若干个,进行随机抽样,每次抽样先随机抽取一个袋子,再随机抽取一个球。每一次抽取到的球都不知道是从哪个袋子中抽取的,这个时候需要估计的是,这个球来自哪一个袋子,每个袋子的红球和白球的比例是多少。
我们可以对样本随机抽样,得到x1,x2,…,xn,将选定A袋子的概率记为w,选定B的概率记为1-w。A袋子红球和白球的比例记为p和1-p,B袋子红球和白球的比例记为q和1-q。通过样本x1,x2,…,xn使用极大似然估计来估计w、p和q。记取到红球为1,取到白球为0,一共取十次,得到的结果为x=[1,1,0,1,0,0,1,0,1,1]。
设Z来表示球来自于哪个袋子, Z = z 1 , z 2 , . . . , z 1 0 Z={z_1,z_2,...,z_10} Z=z1,z2,...,z10,令θ={w,p,q}。
取出一个球的概率为:
P ( x ∣ θ ) = w p x ( 1 − p ) 1 − x + ( 1 − w ) q x ( 1 − q ) 1 − x P(x|\theta)=wp^x(1-p)^{1-x}+(1-w)q^x(1-q)^{1-x} P(x∣θ)=wpx(1−p)1−x+(1−w)qx(1−q)1−x
可得极大似然函数的对数:
l ( θ ) = l o g P ( x ∣ θ ) = ∑ i = 1 n l o g [ w p x i ( 1 − p ) 1 − x i + ( 1 − w ) q x i ( 1 − q ) 1 − x i ] l(\theta)=logP(x|\theta)=\sum\limits_{i=1}^nlog[wp^{x_i}(1-p)^{1-x_i}+(1-w)q^{x_i}(1-q)^{1-x_i}] l(θ)=logP(x∣θ)=i=1∑nlog[wpxi(1−p)1−xi+(1−w)qxi(1−q)1−xi]
可得似然函数最大值θ。
E步:假设当前模型的参数为θ={w,p,q}时,计算后验概率:
A : μ = P ( Z ∣ X θ ) = w p x i ( 1 − p ) 1 − x i w p x i ( 1 − p ) 1 − x i + ( 1 − w ) q x i ( 1 − q ) 1 − x i A:\mu=P(Z|X\theta)=\cfrac{wp^{x_i}(1-p)^{1-x_i}}{wp^{x_i}(1-p)^{1-x_i}+(1-w)q^{x_i}(1-q)^{1-x_i}} A:μ=P(Z∣Xθ)=wpxi(1−p)1−xi+(1−w)qxi(1−q)1−xiwpxi(1−p)1−xi
B : 1 − μ B:1-\mu B:1−μ
M步:将μ看做固定值,写出后验概率的期望,并分别求偏导,得到新的参数θ={w,p,q}:
E Z ∣ X , θ ( L ( θ ∣ X , Z ) ) = ∑ i = 1 n [ μ l o g w p x i ( 1 − p ) 1 − x i μ + ( 1 − μ ) l o g ( 1 − w ) q x i ( 1 − q ) 1 − x i 1 − μ ] ( 1 ) E_{Z|X,\theta}(L(\theta|X,Z))=\sum\limits_{i=1}^n[\mu log\cfrac{wp^{x_i}(1-p)^{1-x_i}}{\mu}+(1-\mu)log\cfrac{(1-w)q^{x_i}(1-q)^{1-x_i}}{1-\mu}]\quad(1) EZ∣X,θ(L(θ∣X,Z))=i=1∑n[μlogμwpxi(1−p)1−xi+(1−μ)log1−μ(1−w)qxi(1−q)1−xi](1)
w = 1 n ∑ i = 1 n μ i ( 2 ) w=\cfrac{1}{n}\sum\limits_{i=1}^n\mu_i\quad(2) w=n1i=1∑nμi(2)
p = ∑ i = 1 n μ i x i ∑ i = 1 n μ i ( 3 ) p=\cfrac{\sum\limits_{i=1}^n\mu_ix_i}{\sum\limits_{i=1}^n\mu_i}\quad(3) p=i=1∑nμii=1∑nμixi(3)
q = ∑ i = 1 n ( 1 − μ i ) x i ∑ i = 1 n ( 1 − μ i ) ( 4 ) q=\cfrac{\sum\limits_{i=1}^n(1-\mu_i)x_i}{\sum\limits_{i=1}^n(1-\mu_i)}\quad(4) q=i=1∑n(1−μi)i=1∑n(1−μi)xi(4)
先定义E步和M步:
import math
def cal_mu(w,p,q,xi):
return w * math.pow(p, xi) * math.pow(1 - p, 1 - xi) / \
float(w * math.pow(p, xi) * math.pow(1 - p, 1 - xi) +
(1 - w) * math.pow(q, xi) * math.pow(1 - q, 1 - xi))
def e_step(w,p,q,x):
mu=[cal_mu(w,p,q,xi) for xi in x]
return mu
def m_step(mu,x):
w=sum(mu)/len(mu)
p=sum([mu[i]*x[i] for i in range(len(mu))])/sum(mu)
q=sum([(1-mu[i])*x[i] for i in range(len(mu))])/\
sum([1-mu[i] for i in range(len(mu))])
return [w,p,q]
再定义迭代过程,输入参数,返回结果:
def run(x,w,p,q,maxiteration):
for i in range(maxiteration):
mu=e_step(w,p,q,x)
print(i,[w,p,q])
if [w,p,q]==m_step(mu,x):
break
else:
[w,p,q]=m_step(mu,x)
print([w,p,q])
if __name__=="__main__":
x = [1, 1, 0, 1, 0, 0, 1, 0, 1, 1]
[w,p,q]=[0.4,0.6,0.7]
run(x,w,p,q,100)
当 θ θ θ取到 θ t θ_t θt时,可得:
θ t + 1 = arg max θ ∑ j = 1 n ∑ i Q j t ( z i ) l o g P ( y j , z i ∣ θ ) Q j t ( z i ) \theta^{t+1}=\argmax\limits_\theta \sum\limits_{j=1}^n\sum\limits_iQ_j^t(z_i)log\cfrac{P(y_j,z_i|\theta)}{Q_j^t(z_i)} θt+1=θargmaxj=1∑ni∑Qjt(zi)logQjt(zi)P(yj,zi∣θ)
l ( θ t + 1 ) = ∑ j = 1 n l o g ∑ i Q j t ( z i ) P ( y j , z i ∣ θ t + 1 ) Q j t ( z i ) ( 1 ) l(\theta_{t+1})=\sum\limits_{j=1}^nlog\sum\limits_iQ_j^t(z_i)\cfrac{P(y_j,z_i|\theta^{t+1})}{Q_j^t(z_i)}\qquad(1) l(θt+1)=j=1∑nlogi∑Qjt(zi)Qjt(zi)P(yj,zi∣θt+1)(1)
≥ ∑ j = 1 n ∑ i Q j t ( z i ) l o g P ( y j , z i ∣ θ t + 1 ) Q j t ( z i ) ( 2 ) \quad\qquad \ge\sum\limits_{j=1}^n\sum\limits_iQ_j^t(z_i)log\cfrac{P(y_j,z_i|\theta^{t+1})}{Q_j^t(z_i)}\qquad(2) ≥j=1∑ni∑Qjt(zi)logQjt(zi)P(yj,zi∣θt+1)(2)
≥ ∑ j = 1 n ∑ i Q j t ( z i ) l o g P ( y j , z i ∣ θ t ) Q j t ( z i ) ( 3 ) \quad\qquad \ge\sum\limits_{j=1}^n\sum\limits_iQ_j^t(z_i)log\cfrac{P(y_j,z_i|\theta^t)}{Q_j^t(z_i)}\quad\qquad(3) ≥j=1∑ni∑Qjt(zi)logQjt(zi)P(yj,zi∣θt)(3)
式(2)是根据Jensen不等式得来的,由于 θ t + 1 θ_{t+1} θt+1不一定等于 θ t θ_{t} θt,故等号不一定成立。由于 θ t + 1 θ_{t+1} θt+1使得似然函数取最大值,可得式(3)。由此得出 l ( θ ) l(θ) l(θ)在迭代下是递增的,根据单调有界收敛可得 l ( θ ) l(θ) l(θ)有上界,故EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法。
具有简单性和普适性,可看作是一种非梯度优化方法。
EM算法对初始值敏感,EM算法需要初始化参数θ,而参数θ的选择直接影响收敛效率以及能否得到全局最优解。且EM算法不能保证找到全局最优值。
在5.2的代码实现及结果中,采用不同的初始值,得到的结果如图7-1:
图7-1
K-means的目标是将样本集划分为K个簇,同一个簇内样本的距离尽可能小,不同簇内的样本距离尽可能大,即最小化每个簇中样本与质心的距离。从EM算法的角度来看,K-means的参数就是每个簇的质心,隐变量为每个样本属于哪个簇。在不知道样本属于哪个簇的情况下,运用EM算法来得到每个簇的质心μ。
假设有k个簇,随机选定k个点作为质心 μ 1 , μ 2 , . . . , μ k μ_1,μ_2,...,μ_k μ1,μ2,...,μk,进行:
(1)固定μ_i(i=1,2,…,k),将样本划分到距离最近的 μ i μ_i μi中,用 r n i r_{n_i} rni来表示第n个样本所属的簇。这一步对应EM算法的E步。
(2)固定 r n i r_{n_i} rni,根据上一步的划分结果重新计算每个簇的质心,来最小化每个簇中样本与质心的距离。这一步对应EM算法的M步。
K-means可以保证收敛到局部最优值,但在非凸目标函数的情况下不能保证收敛到全局最优值。
高斯混合模型多用于聚类,与K-means不同的是其采用概率模型来表达聚类原型。关于高斯分布(Gaussian Distribution)为:对于随机变量,其概率密度函数可表示为:
N ( x ∣ μ , σ 2 ) = 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 {\ N}(x|\mu,\sigma^2)=\cfrac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} N(x∣μ,σ2)=2πσ21e−2σ2(x−μ)2
若x为n维随机向量,则多元高斯分布(Multivariate Gaussian Distribution)为:
N ( x ∣ μ , Σ ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) {\ N}(x|\mu,\Sigma)=\cfrac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^\frac{1}{2}} e^{-\frac{1}{2}(x-\mu)^\ T \Sigma^{-1}(x-\mu)} N(x∣μ,Σ)=(2π)2n∣Σ∣211e−21(x−μ) TΣ−1(x−μ)
高斯混合模型,本质上是k个高斯分布的线性组合,可以描述更多样的分布:
p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) p(x)=\sum\limits_{k=1}^K\pi_k{\ N}(x|\mu k,\Sigma_k) p(x)=k=1∑Kπk N(x∣μk,Σk)
其中 π k π_k πk为混合系数, ∑ k = 1 K π k = 1 \sum\limits_{k=1}^K {\pi_k}=1 k=1∑Kπk=1。
对于高斯混合模型来说,先依照 π k π_k πk选择第k个高斯分模型,然后依照其概率密度函数进行采样生成相应的样本。高斯混合模型的隐变量为样本来自于第几个分模型。
定义一个k维随机向量 z = z 1 , z 2 , . . . , z k z={z_1,z_2,...,z_k} z=z1,z2,...,zk,其中只有一个 z i ( i = 1 , 2 , . . . , k ) z_i(i=1,2,...,k) zi(i=1,2,...,k)为1,其余为0,表示样本来自于第i个分模型。
(1)将 π k π_k πk视为选择第k个分模型的先验概率,计算 x i ( i = 1 , 2 , . . . , k ) x_i(i=1,2,...,k) xi(i=1,2,...,k)属于第j个分模型的后验概率,对应EM算法的E步。
(2) x i ( i = 1 , 2 , . . . , k ) x_i(i=1,2,...,k) xi(i=1,2,...,k)属于第j个分模型的后验概率来计算每一个样本的 μ μ μ和 Σ Σ Σ来更新参数,对应EM算法的M步。
高斯混合模型相比于K-means更具一般性,能形成各种不同大小和形状的簇。K-means可视为高斯混合聚类中每个样本仅指派给一个混合成分的特例,且各混合成分协方差相等,均为对角矩阵。
但高斯混合模型的计算量较大收敛慢。因此常先对样本集运用k-means,依据得到的各个簇来定高斯混合模型的初始值。其中质心即为均值向量,协方差矩阵为每个簇中样本的协方差矩阵,混合系数为每个簇中样本占总体样本的比例。
在现实分类问题中,常遇到少量样本是带有标签,大部分样本缺失标签的情况。为了能利用无标签的样本,可以采用EM算法,将标签视为隐变量,来利用数据进行训练,主要步骤为:
(1)仅利用有标签的样本训练模型,得到初始参数θ。
(2)E步:利用训练好的模型预测无标签样本,将样本分类到概率最大的类别。
(3)M步:用所有的样本重新训练模型,得到参数 θ t + 1 θ_{t+1} θt+1。
重复(2)和(3)直到收敛,得到最终的模型。
EM算法是迭代求解最大值的算法,计算含有隐含变量的概率模型参数估计。EM算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。
【1】EM算法及其应用(一)
【2】EM算法及其应用(二)
【3】EM算法(Expectation Maximization Algorithm)详解
【4】EM算法整理及其python实现
【5】DEMPSTER,A. P. Maximum likelihood from incomplete data via the EM algorithm[J]. Journal of the Royal Statal Society, 1977, 39.
【6】李航.统计学习方法.北京:清华大学出版社,2012
【7】机器学习-白板推导系列(十)-EM算法(Expectation Maximization)
【8】复旦-机器学习课程 第十讲 EM