EM算法与GMM高斯混合模型
1、EM算法简介
1.1、EM算法概述
最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),曾入选“数据挖掘十大算法”中,可见EM算法在机器学习、数据挖掘中的影响力。EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)的参数。
EM算法是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。
1.2、EM算法流程
EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为期望步(E步),另一个为极大步(M步),所以算法被称为EM算法(Expectation-Maximization Algorithm)。
最大期望算法经过两个步骤交替进行计算:
- 第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;
- 第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。
2、极大似然
2.1、似然函数
什么是极大似然,首先来看一下似然函数
在数理统计学中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。“似然性”与“或然性”或“概率”意思相近,都是指某种事件发生的可能性。
2.2、极大似然
极大似然,也叫最大似然,就是似然函数的最大值!
而极大似然就相当于最大可能的意思。
比如一位同学和一位猎人一起外出打猎,一只野兔从前方窜过。只听一声枪响,野兔应声到下,如果要你推测,这一发命中的子弹是谁打的?你就会想,只发一枪便打中,由于猎人命中的概率一般大于那位同学命中的概率,从而推断出这一枪应该是猎人射中的。
这个例子所作的推断就体现了最大似然法的基本思想。
2.3、最大似然示例计算
最大似然估计(maximum likelihood estimation, MLE)一种重要而普遍的求估计量的方法。最大似然估计明确地使用概率模型,其目标是寻找能够以较高概率产生观察数据的系统发生树。最大似然估计是一类完全基于统计的系统发生树重建方法的代表。
是不是,有点看不懂,太学术了,我们举例说明~
假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少?
很多小伙伴,甚至不用算,凭感觉,就能给出答案:70%!
下面是详细推导过程:
-
最大似然估计,计算
-
白球概率是p,黑球是1-p(罐子中非黑即白)
-
罐子中取一个请问是白球的概率是多少?
- p p p
-
罐子中取两个球,两个球都是白色,概率是多少?
- p 2 p^2 p2
-
罐子中取5个球都是白色,概率是多少?
- p 5 p^5 p5
-
罐子中取10个球,9个是白色,一个是黑色,概率是多少呢?
-
- C 10 1 = C 10 1 C_{10}^1 = C_{10}^1 C101=C101 这个两个排列组合公式是相等的~
- C 10 9 p 9 ( 1 − p ) = C 10 1 p 9 ( 1 − p ) C_{10}^9p^9(1-p) = C_{10}^1p^9(1-p) C109p9(1−p)=C101p9(1−p)
-
罐子取100个球,70次是白球,30次是黑球,概率是多少?
- P = C 100 30 p 70 ( 1 − p ) 30 P = C_{100}^{30}p^{70}(1-p)^{30} P=C10030p70(1−p)30
-
最大似然估计,什么时候P最大呢?
C 100 30 C_{100}^{30} C10030是常量,可以去掉!
p > 0,1- p > 0,所以上面概率想要求最大值,那么求导数即可!
-
P ′ = 70 ∗ p 69 ∗ ( 1 − p ) 30 + p 70 ∗ 30 ∗ ( 1 − p ) 29 ∗ ( − 1 ) P' = 70*p^{69}*(1-p)^{30} + p^{70}*30*(1-p)^{29}*(-1) P′=70∗p69∗(1−p)30+p70∗30∗(1−p)29∗(−1)
令导数为0:
-
0 = 70 ∗ p 69 ∗ ( 1 − p ) 30 + p 70 ∗ 30 ∗ ( 1 − p ) 29 ∗ ( − 1 ) 0 = 70*p^{69}*(1-p)^{30} +p^{70}*30*(1-p)^{29}*(-1) 0=70∗p69∗(1−p)30+p70∗30∗(1−p)29∗(−1)
公式化简:
-
0 = 70 ∗ ( 1 − p ) − p ∗ 30 0 = 70*(1-p) - p*30 0=70∗(1−p)−p∗30
-
0 = 70 − 100 ∗ p 0 = 70 - 100*p 0=70−100∗p
-
p = 70%
2.4、极大似然步骤
- 写出似然函数;
- 对似然函数取对数,并整理;
- 求导数,令导数为0,得到似然方程;
- 解似然方程,得到的参数即为所求;
3、EM算法入门
3.1、问题描述
我们需要调查学校的男生和女生的身高分布 ,我们抽取100个男生和100个女生,将他们按照性别划分为两组。
然后,统计抽样得到100个男生的身高数据和100个女生的身高数据。
我们知道他们的身高服从正态分布(自然属性一般服从正态分布),但分布的均值 μ \mu μ 和方差 σ 2 \sigma^2 σ2 是未知的,就是要估计的参数。
问题:我们知道样本所服从的概率分布模型和一些样本,我们需要求解该模型的参数。
- 我们已知的条件有两个:
- 样本服从的分布模型(正态分布)
- 随机抽取的样本。
- 我们需要求解模型的参数。
根据已知条件,通过极大似然估计,求出未知参数。
总的来说:极大似然估计就是用来估计模型参数的统计学方法。
3.2、数学知识解决问题
问题数学化:
-
样本集 X = x 1 , x 2 … , x N , N = 100 X = {x_1,x_2…,x_N},N = 100 X=x1,x2…,xN,N=100
-
概率密度是: p ( x i ; θ ) p(x_i;\theta) p(xi;θ)抽到第i个男生身高的概率。
-
正太分布概率密度是: p ( x i ∣ μ , σ 2 ) = 1 2 π σ e − ( x i − μ ) 2 2 σ 2 p(x_i|\mu,\sigma^2) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x_i - \mu)^2}{2\sigma^2}} p(xi∣μ,σ2)=2πσ1e−2σ2(xi−μ)2
-
由于100个样本之间独立同分布,所以同时抽到这100个男生的概率是它们各自概率的乘积,也就是样本集X中各个样本的联合概率,用下式表示:
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) L(θ)=L(x1,x2,…,xN;θ)=i=1