目录

  • 1.摘要
  • 2.EM算法简介
  • 3.预备知识
    • 3.1贝叶斯公式
    • 3.2 极大似然估计
      • 3.2.1似然函数
      • 3.2.2问题描述
      • 3.2.3极大似然函数估计值的求解步骤
    • 3.3Jensen不等式(琴生不等式)
      • 3.3.1定义
      • 3.3.2举例
  • 4.EM算法详解
    • 4.1问题描述
    • 4.2EM算法公式及推导
      • 4.2.1EM公式
      • 4.2.2EM公式导出
    • 4.3EM算法流程
      • 4.3.1输入
      • 4.3.2算法步骤
      • 4.3.3输出
  • 5.EM算法的简单实现
    • 5.1问题及实现描述
    • 5.2 代码实现及结果
  • 6.EM算法收敛性
  • 7.EM算法的优缺点
    • 7.1优点
    • 7.2缺点
  • 8.EM算法的应用
    • 8.1K-means
    • 8.2高斯混合模型
    • 8.3在半监督学习上的应用
  • 9.总结
  • 10.参考

1.摘要

最大期望算法(Expectation-Maximum algorithm, EM)也称期望最大化算法,是一类通过迭代进行极大似然估计的优化算法,是著名的数据挖掘十大算法之一,在机器学习、数据挖掘中具有一定的影响力。EM算法是最常见的隐变量估计方法,被广泛应用于很多机器学习中,包括高斯混合模型(Gaussian mixture model,GMM),和隐式马尔科夫算法(Hidden Markov Model, HMM)的参数估计等。

2.EM算法简介

EM算法是一种通过不断迭代来进行优化的策略,计算方法中每一次迭代分为两步,其中一步为期望步(E步),另一种为极大步(M步),因此被称为EM算法。EM算法是为了解决数据缺失情况下的参数估计问题而提出的,基本思想是:首先根据已经得到的观测数据来估计出模型参数的值,然后根据上一步估计出的参数估计值来估计缺失数据的值,再讲估计出的损失数据与以及得到的观测数据进行对比,以此来重新对参数值进行估计,不断反复迭代,直至收敛,迭代结束,返回结果。

3.预备知识

3.1贝叶斯公式

贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。其中P(A|B)是在B发生的情况下A发生的可能性。贝叶斯公式为:
P(Bi∣A)=P(Bi)P(A∣Bi)∑j=1nP(Bj)P(A∣Bj)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=1n​P(Bj​)P(A∣Bj​)P(Bi​)P(A∣Bi​)​

3.2 极大似然估计

3.2.1似然函数

对于函数l(θ)=P(x∣θ)l(\theta)=P(x|θ)l(θ)=P(x∣θ),x表示某一个具体的数据,θ\thetaθ表示模型的参数。在似然函数中,x是已知确定的,θ\thetaθ是变量,它描述对于不同的模型参数,出现x这个样本点的概率是多少。

3.2.2问题描述

假如有一个罐子,里面有红白两种颜色的球,数目多少不知,两种颜色的比例也不知。目的是得到罐中红球和白球的比例,但不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中红白球的比例。假如在前面的十次次重复记录中,有七次是白球,请问罐中白球所占的比例最有可能是多少?
我们可以假设白球的比例是θ,那红球的比例是1-θ。因为每抽一个球出来,在记录颜色之后,我们把抽出的球放回了罐中并摇匀,所以每次抽出来的球的颜 色服从同一独立分布。
把一次抽出来球的颜色称为一次抽样。题目中在十次次抽样中,七次是白球的,三次为黑球事件的概率是P(样本结果|θ)。
如果第一次抽象的结果记为x1,第二次抽样的结果记为x2…那么样本结果为(x1,x2…,x10)。这样,我们可以得到表达式:
L(θ)=P(样本结果∣θ)L(θ)=P(样本结果|θ)L(θ)=P(样本结果∣θ)
=P(x1,x2,…,x10∣θ)= P(x1,x2,…,x10|θ)=P(x1,x2,…,x10∣θ)
=P(x1∣θ)P(x2∣θ)…P(x10∣θ)= 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(θ)

3.2.3极大似然函数估计值的求解步骤

首先,写出似然函数:
L(θ)=L(x1,x2,...,xn∣θ)=∏i=1np(xi∣θ),θ∈ΘL(\theta)=L(x_1,x_2,...,x_n|\theta)=\prod\limits_{i=1}^np(x_i|\theta),\theta\in\ThetaL(θ)=L(x1​,x2​,...,xn​∣θ)=i=1∏n​p(xi​∣θ),θ∈Θ
其次,对似然函数取对数:
l(θ)=logL(x1,x2,...,xn∣θ)=log∏i=1np(xi∣θ)=∑i=1nlogp(xi∣θ)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∏n​p(xi​∣θ)=i=1∑n​logp(xi​∣θ)
然后对上式求导,另导数为0,得到似然方程。
最后,解似然方程,得到的参数值即为所求。

3.3Jensen不等式(琴生不等式)

3.3.1定义

设f是定义域为实数的函数,如果对所有的实数x,f(x)的二阶导数都大于0,那么f是凸函数。
Jensen不等式定义如下:
如果f是凸函数,X是随机变量,那么: E[f(X)]>=f(E[x]) 。当且仅当X是常量时,该式取等号。其中,E(X)表示X的数学期望。
注:Jensen不等式应用于凹函数时,不等号方向反向。当且仅当x是常量时,该不等式取等号。

3.3.2举例


图3-1

图3-1中,实线f表示凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。X的期望值就是a和b的中值,从图中可以看到E[f(X)]>=f(E[x])成立。

4.EM算法详解

4.1问题描述

有两个袋子A和B,里面各有红球和白球,进行随机抽样,每次抽样先随机抽取一个袋子,再随机抽取一个球。每一次抽取到的球都不知道是从哪个袋子中抽取的,这个时候需要估计的是,这个球来自哪一个袋子,每个袋子的红球和白球的比例是多少,如图4-1。对于具体的问题使用EM算法求解步骤如图4-2所示:

图4-1EM算法要解决的问题

图4-2 EM算法求解步骤

4.2EM算法公式及推导

4.2.1EM公式

E步:计算联合分布的条件概率期望:
Qi(zi)=p(zi∣xi,θt)Q_i(z_i)=p(z_i|x_i,\theta_t)Qi​(zi​)=p(zi​∣xi​,θt​)
l(θ,θt)=∑i=1n∑ziQi(zi)logp(xi,zi∣θ)Qi(zi)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∑n​zi​∑​Qi​(zi​)logQi(zi​)p(xi​,zi​∣θ)​
M步:极大化l(θ,θt)l(θ,θ_t)l(θ,θt​),得到θ_{t+1}:
θt+1=argmaxl(θ,θt)\theta_{t+1}=argmax l(\theta,\theta_t)θt+1​=argmaxl(θ,θt​)

4.2.2EM公式导出

对于n个样本观察数据x=(x1​,x2,…,xn),找出样本的模型参数θ, 极大化模型分布的对数似然函数:
l(θ)=∑i=1nlogp(xi∣θ)l(\theta)=\sum\limits_{i=1}^n log p(x_i|\theta)l(θ)=i=1∑n​logp(xi​∣θ)
θ^=argmax∑i=1nlogp(xi∣θ)\hat{\theta}=argmax\sum\limits_{i=1}^n log p(x_i|\theta)θ^=argmaxi=1∑n​logp(xi​∣θ)
如果将得到的观察数据有未观察到的隐含数据z=(z1,z2,...,zn)z=(z_1,z_2,...,z_n)z=(z1​,z2​,...,zn​),即上文中每个样本来自哪个分布是未知的,此时有极大化模型分布的对数似然函数:
θ^=argmax∑i=1nlogp(xi∣θ)=argmax∑i=1nlog∑zip(xi,zi∣θ)\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∑n​logp(xi​∣θ)=argmaxi=1∑n​logzi​∑​p(xi​,zi​∣θ)
使用Jensen不等式对这个式子进行缩放,分子分母同乘以一个未知分布Qi(zi)其中log(x)为凹函数:
∑i=1nlog∑zip(xi,zi∣θ)=∑i=1nlog∑ziQi(zi)p(xi,zi∣θ)Qi(zi)(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∑n​logzi​∑​p(xi​,zi​∣θ)=i=1∑n​logzi​∑​Qi​(zi​)Qi​(zi​)p(xi​,zi​∣θ)​(1)
≥∑i=1n∑ziQi(zi)logp(xi,zi∣θ)Qi(zi)(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∑n​zi​∑​Qi​(zi​)logQi​(zi​)p(xi​,zi​∣θ)​(2)
此时可以得到logl(θ)log l(θ)logl(θ)的下界。在θθθ已经给定的条件下,logl(θ)log l(θ)logl(θ)的值取决于Qi(zi)Q_i(z_i)Qi​(zi​)和p(xi,zi∣θ)p(x_i,z_i|θ)p(xi​,zi​∣θ)。我们可以通过调整这两个概率来使logl(θ)log l(θ)logl(θ)的下界不断上升,来毕竟logl(θ)log l(θ)logl(θ)的真实值。当∑i=1nlog∑zip(xi,zi∣θ)≥∑i=1n∑ziQi(zi)logp(xi,zi∣θ)Qi(zi)\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∑n​logzi​∑​p(xi​,zi​∣θ)≥i=1∑n​zi​∑​Qi​(zi​)logQi​(zi​)p(xi​,zi​∣θ)​变成等式时,即可说明调整后的概率等价于logl(θ)log l(θ)logl(θ)。
等式成立时,有:
p(xi,zi∣θ)Qi(zi)=c,c为常数\cfrac{p(x_i,z_i|\theta)}{Q_i(z_i)}=c,c为常数Qi​(zi​)p(xi​,zi​∣θ)​=c,c为常数
由于Qi(zi)Q_i(z_i)Qi​(zi​)是一个分布,所以满足∑zQi(zi)=1\sum\limits_{z}Q_i(z_i)=1z∑​Qi​(zi​)=1和
∑zp(xi,zi∣θ)=c\sum\limits_{z}p(x_i,z_i|\theta)=cz∑​p(xi​,zi​∣θ)=c。
可得:
∑zQi(zi)=p(xi,zi∣θ)∑zp(xi,zi∣θ)=p(xi,zi∣θ)p(xi∣θ)=p(zi∣xi,θ)\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​,θ)
由此可知道Qi(zi)Q_i(z_i)Qi​(zi​)由后验概率计算得出。由此在得到Qi(zi)Q_i(z_i)Qi​(zi​)后,调整θθθ,去极大化l(θ)l(θ)l(θ)的下界,来得到更优的θθθ。

4.3EM算法流程

4.3.1输入

n个样本观察数据x=(x1​,x2,...,xn)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。

4.3.2算法步骤

(1)随机初始化模型参数θθθ。
(2)t=1,2,…,maxiteration开始迭代:
(3)E步:计算联合分布的条件概率期望。
Qi(zi)=p(zi∣xi,θt)Q_i(z_i)=p(z_i|x_i,\theta_t)Qi​(zi​)=p(zi​∣xi​,θt​)
l(θ,θt)=∑i=1n∑ziQi(zi)logp(xi,zi∣θ)Qi(zi)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∑n​zi​∑​Qi​(zi​)logQi(zi​)p(xi​,zi​∣θ)​
(4)M步:极大化l(θ,θt),得到θt+1。
θt+1=argmaxl(θ,θt)\theta_{t+1}=argmax l(\theta,\theta_t)θt+1​=argmaxl(θ,θt​)
(5)当θt+1已经收敛时,结束并输出结果,否则继续进行(2)和(3)进行迭代。

4.3.3输出

最后输出迭代得到的参数θ。

5.EM算法的简单实现

5.1问题及实现描述

有两个袋子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=z1,z2,...,z10Z={z_1,z_2,...,z_10}Z=z1​,z2​,...,z1​0,令θ={w,p,q}。
取出一个球的概率为:
P(x∣θ)=wpx(1−p)1−x+(1−w)qx(1−q)1−xP(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(θ)=logP(x∣θ)=∑i=1nlog[wpxi(1−p)1−xi+(1−w)qxi(1−q)1−xi]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∑n​log[wpxi​(1−p)1−xi​+(1−w)qxi​(1−q)1−xi​]
可得似然函数最大值θ。
E步:假设当前模型的参数为θ={w,p,q}时,计算后验概率:
A:μ=P(Z∣Xθ)=wpxi(1−p)1−xiwpxi(1−p)1−xi+(1−w)qxi(1−q)1−xiA:\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−xi​wpxi​(1−p)1−xi​​
B:1−μB:1-\muB:1−μ
M步:将μ看做固定值,写出后验概率的期望,并分别求偏导,得到新的参数θ={w,p,q}:
EZ∣X,θ(L(θ∣X,Z))=∑i=1n[μlogwpxi(1−p)1−xiμ+(1−μ)log(1−w)qxi(1−q)1−xi1−μ](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=1n∑i=1nμi(2)w=\cfrac{1}{n}\sum\limits_{i=1}^n\mu_i\quad(2)w=n1​i=1∑n​μi​(2)
p=∑i=1nμixi∑i=1nμ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​μi​i=1∑n​μi​xi​​(3)
q=∑i=1n(1−μi)xi∑i=1n(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)

5.2 代码实现及结果

先定义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):breakelse:[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)

结果:

6.EM算法收敛性

当θθθ取到θtθ_tθt​时,可得:
θt+1=arg max⁡θ∑j=1n∑iQjt(zi)logP(yj,zi∣θ)Qjt(zi)\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=θargmax​j=1∑n​i∑​Qjt​(zi​)logQjt​(zi​)P(yj​,zi​∣θ)​
l(θt+1)=∑j=1nlog∑iQjt(zi)P(yj,zi∣θt+1)Qjt(zi)(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∑n​logi∑​Qjt​(zi​)Qjt​(zi​)P(yj​,zi​∣θt+1)​(1)
≥∑j=1n∑iQjt(zi)logP(yj,zi∣θt+1)Qjt(zi)(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∑n​i∑​Qjt​(zi​)logQjt​(zi​)P(yj​,zi​∣θt+1)​(2)
≥∑j=1n∑iQjt(zi)logP(yj,zi∣θt)Qjt(zi)(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∑n​i∑​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算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法。

7.EM算法的优缺点

7.1优点

具有简单性和普适性,可看作是一种非梯度优化方法。

7.2缺点

EM算法对初始值敏感,EM算法需要初始化参数θ,而参数θ的选择直接影响收敛效率以及能否得到全局最优解。且EM算法不能保证找到全局最优值。
在5.2的代码实现及结果中,采用不同的初始值,得到的结果如图7-1:

图7-1

8.EM算法的应用

8.1K-means

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​中,用rnir_{n_i}rni​​来表示第n个样本所属的簇。这一步对应EM算法的E步。
(2)固定rnir_{n_i}rni​​,根据上一步的划分结果重新计算每个簇的质心,来最小化每个簇中样本与质心的距离。这一步对应EM算法的M步。
K-means可以保证收敛到局部最优值,但在非凸目标函数的情况下不能保证收敛到全局最优值。

8.2高斯混合模型

高斯混合模型多用于聚类,与K-means不同的是其采用概率模型来表达聚类原型。关于高斯分布(Gaussian Distribution)为:对于随机变量,其概率密度函数可表示为:
N(x∣μ,σ2)=12πσ2e−(x−μ)22σ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πσ2​1​e−2σ2(x−μ)2​
若x为n维随机向量,则多元高斯分布(Multivariate Gaussian Distribution)为:
N(x∣μ,Σ)=1(2π)n2∣Σ∣12e−12(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​∣Σ∣21​1​e−21​(x−μ) TΣ−1(x−μ)
高斯混合模型,本质上是k个高斯分布的线性组合,可以描述更多样的分布:
p(x)=∑k=1KπkN(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=1Kπk=1\sum\limits_{k=1}^K {\pi_k}=1k=1∑K​πk​=1。
对于高斯混合模型来说,先依照πkπ_kπk​选择第k个高斯分模型,然后依照其概率密度函数进行采样生成相应的样本。高斯混合模型的隐变量为样本来自于第几个分模型。
定义一个k维随机向量z=z1,z2,...,zkz={z_1,z_2,...,z_k}z=z1​,z2​,...,zk​,其中只有一个zi(i=1,2,...,k)z_i(i=1,2,...,k)zi​(i=1,2,...,k)为1,其余为0,表示样本来自于第i个分模型。
(1)将πkπ_kπk​视为选择第k个分模型的先验概率,计算xi(i=1,2,...,k)x_i(i=1,2,...,k)xi​(i=1,2,...,k)属于第j个分模型的后验概率,对应EM算法的E步。
(2)xi(i=1,2,...,k)x_i(i=1,2,...,k)xi​(i=1,2,...,k)属于第j个分模型的后验概率来计算每一个样本的μμμ和ΣΣΣ来更新参数,对应EM算法的M步。
高斯混合模型相比于K-means更具一般性,能形成各种不同大小和形状的簇。K-means可视为高斯混合聚类中每个样本仅指派给一个混合成分的特例,且各混合成分协方差相等,均为对角矩阵。
但高斯混合模型的计算量较大收敛慢。因此常先对样本集运用k-means,依据得到的各个簇来定高斯混合模型的初始值。其中质心即为均值向量,协方差矩阵为每个簇中样本的协方差矩阵,混合系数为每个簇中样本占总体样本的比例。

8.3在半监督学习上的应用

在现实分类问题中,常遇到少量样本是带有标签,大部分样本缺失标签的情况。为了能利用无标签的样本,可以采用EM算法,将标签视为隐变量,来利用数据进行训练,主要步骤为:
(1)仅利用有标签的样本训练模型,得到初始参数θ。
(2)E步:利用训练好的模型预测无标签样本,将样本分类到概率最大的类别。
(3)M步:用所有的样本重新训练模型,得到参数θt+1θ_{t+1}θt+1​。
重复(2)和(3)直到收敛,得到最终的模型。

9.总结

EM算法是迭代求解最大值的算法,计算含有隐含变量的概率模型参数估计。EM算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。

10.参考

【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

EM算法及python简单实现相关推荐

  1. Gillespie算法的Python简单实现(实例)

    Gillespie算法的Python简单实现(实例) 文章目录 Gillespie算法的Python简单实现(实例) 前言 一.Gillespie是什么? 二.题目 三.代码 1.引入库 2.类定义 ...

  2. 鲸鱼算法与Python简单可视化测试(1)

    文章目录 1. 鲸鱼算法原理 2. 鲸鱼算法的python实现 2.1 问题描述 2.2 初始化 2.3 可视化 3. 可视化结果 参考文献 1. 鲸鱼算法原理 鲸鱼算法是一种根据鲸鱼围捕猎物行为抽象 ...

  3. OneR算法的Python简单实现

    OneR算法就是,在已有数据中,根据具有相同特征值的个体最可能属于哪个类别进行分类.即取效果最好的那个特征进行分类. #-*- coding=utf-8 -*- # import numpy as n ...

  4. em算法python代码_EM 算法求解高斯混合模型python实现

    注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...

  5. 期望最大化(EM)算法真如用起来那么简单?

    声明:本文改编自订阅号"夕小瑶的卖萌屋"中的 <机器学习系列-强填EM算法在理论与工程之间的鸿沟(上)>.<机器学习系列-强填EM算法在理论与工程之间的鸿沟(下) ...

  6. 统计学习 EM算法 Python实现

    1.EM算法是什么 EM算法可以用于有监督学习,也可以用于无监督学习.这个算法是根据观测结果求得对含有隐变量的模型的参数的估计.包含E步骤和M步,E步是求期望,M步是求极大似然估计,极大参数估计是对模 ...

  7. 维特比算法的python的简单实现

    维特比算法的python简单实现 简单介绍 实现了李航书籍p210的例子,例子非常经典.我有三个盒子,每个盒子都有红球和白球,我观测到了三次结果:红.白和红,现在需要求出盒子的可能序列是什么. 通过这 ...

  8. 王小草【机器学习】笔记--EM算法

    原文地址:http://blog.csdn.net/sinat_33761963/article/details/53520898 EM算法的英文全称是Expectation Maximization ...

  9. EM算法讲推导原理讲的懂了的,表达清晰易懂的, 收藏cnblog上的大牛的

    博客1长于理论推导 https://zhuanlan.zhihu.com/p/149810914 EM算法的十重境界 https://www.zhihu.com/question/40797593/a ...

最新文章

  1. JavaScript的主要功能
  2. 【面试系列】之一:关于Cmd和Amd
  3. Kafka Producer拦截器
  4. JVM实用参数(一)JVM类型以及编译器模式
  5. No access for action Display of object type Product (PRODUCT)
  6. field-symbols的用法[转]
  7. 【算法】159题 Longest Substring with at Most Two Distinct Characters 最大的子串
  8. ADO.NET 完整修改、删除、防字符串攻击
  9. 配置hadoop 使用fair scheduler调度器
  10. Eclipse配Tomcat服务器
  11. 第二次作业 贺俊朋-201731062431
  12. 4. Phpstorm svn
  13. 二进制文件和文本文件区别-小白笔记
  14. win10卸载软件_win10系统频繁闪屏刷新解决方法
  15. 学计算机装什么系统,怎么看电脑装的什么系统|怎么查看安装的系统是什么版本...
  16. 2021年京东最新炸年兽活动用脚本会怎样?JD炸年兽活动参与教程
  17. 外汇期货股票 投资书籍下载
  18. matlab示波器绘图工具,快速绘制Simulink示波器波形
  19. acwing 4269.校庆(map)
  20. 第4套 从零到商业实战篇 斗战神篇

热门文章

  1. 如何用vs新建html项目,VS2010中添加HTML5项目模板
  2. 智能化小区 弱电系统趋式
  3. WorkTool企微机器人APP分享自定义链接
  4. Python采集wangyi财经数据信息,做个可视化小案例
  5. 这种让你肚子疼的分子机制找到了!西湖大学Cell论文揭示病菌入侵人体“新大门”...
  6. 2010年中考英语复习:熟记固定词组做好完形填空
  7. 关于word中插入公式及公式交叉引用问题
  8. ORACLE:ORA-03113 /usr/lib/dld.sl: Unresolved symbol: gethrtime (code)
  9. ROS gazebo报错:ERROR: cannot launch node of type [mbot_teleop/mbot_teleop.py]
  10. 快消品行业供应链管理解决方案