EM算法结合GMM混合高斯模型
2015-03-27 19:46
274 查看
这里主要将EM算法和混合高斯模型结合起来
首先复习一下EM算法的关键步骤以及GMM的基础
一 EM复习
通过求对树操作和Jeson不等式之后:
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616069601.png)
这个就是最后的似然函数处理了,首先是参数
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061615596333.png)
对样本x
出现的似然函数,概率乘积后取对数,然后加入样本的类别参数z 形成了式子(1),为了利用Jeson不等式(就是对凹函数的公式: f(E[X]>=E[f(X)])引入了让
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616027502.png)
表示该样例隐含变量z的某种分布。然后形成不等式(3),简写为似然函数L(θ)>=J(z,Q)
![](http://img.my.csdn.net/uploads/201301/24/1359004484_7944.jpg)
这里的目标就是使似然函数的式子(2)得到最大的值,先调整Q(Z)确定L的下限值,然后调整
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061615596333.png)
可以最大化下限值。(至于为什么一定会收敛这里不回忆了)。让等式成立就是随机变量为常数
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616242355.png)
c为常数,不依赖于
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616257994.png)
。对此式子做进一步推导
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616261191.png)
至此,我们推出了在固定其他参数
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616275193.png)
后,
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616283274.png)
的计算公式就是后验概率,解决了
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616289404.png)
如何选择的问题。这一步就是E步,建立
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/20110406161629375.png)
的下界。接下来的M步,就是在给定
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616292044.png)
后,调整
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616304095.png)
,去极大化
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/20110406161631606.png)
的下界(在固定
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616318687.png)
后,下界还可以调整的更大)。那么一般的EM算法的步骤如下:
这里和下面的GMM不同,GMM中一个样本可能由k个类别由不同的概率组合而成,这里一般一个样本就属于一个类别。
这里理解E中的Q函数:是利用期望最大化算法,就是首先根据参数的初值估计隐藏变量Q的分布,然后根据隐藏变量的分布来计算观察变量的似然函数,估计参数的值(这里比较早期的简单的方法就是一来在E中就根据参数确定了类型,然后M中更新参数,再迭代的过程)
http://wenku.baidu.com/view/ff588b5af01dc281e53af088.html
二 高斯模型简介:
http://www.cnblogs.com/zhangchaoyang/articles/2624882.html
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html
单高斯模型:
多维变量X服从高斯分布时,它的概率密度函数PDF为:
![](http://pic002.cnblogs.com/images/2012/103496/2012080610354637.png)
x是维度为d的列向量,u是模型期望,Σ是模型方差。在实际应用中u通常用样本均值来代替,Σ通常用样本方差来代替。很容易判断一个样x本是否属于类别C。因为每个类别都有自己的u和Σ,把x代入(1)式,当概率大于一定阈值时我们就认为x属于C类。
从几何上讲,单高斯分布模型在二维空间应该近似于椭圆,在三维空间上近似于椭球。遗憾的是在很多分类问题中,属于同一类别的样本点并不满足“椭圆”分布的特性。这就引入了高斯混合模型。
GMM认为数据是从几个GSM中生成出来的,即
![](http://pic002.cnblogs.com/images/2012/103496/2012080610524971.png)
K是混合高斯中包含的单高斯模型的数量。πk是权值因子。其中的任意一个高斯分布N(x;uk,Σk)叫作这个模型的一个component。这里有个问题,为什么我们要假设数据是由若干个高斯分布组合而成的,而不假设是其他分布呢?实际上不管是什么分布,只K取得足够大,这个XX Mixture
Model就会变得足够复杂,就可以用来逼近任意连续的概率密度分布。只是因为高斯函数具有良好的计算性能,所GMM被广泛地应用。
GMM是一种聚类算法,每个component就是一个聚类中心。即在只有样本点,不知道样本分类(含有隐含变量)的情况下,计算出模型参数(π,u和Σ)----这显然可以用EM算法来求解。再用训练好的模型去差别样本所属的分类,当每个样本所属分类已知时,GMM的参数非常好确定,直接利用Maximum
Likelihood。设样本容量为N,属于K个分类的样本数量分别是N1,N2,...,Nk,属于第k个分类的样本集合是L(k)。
有N个数据点,服从某种分布Pr(x;θ),我们想找到一组参数θ,使得生成这些数据点的概率最大。通常单个点的概率很小,连乘之后数据会更小,容易造成浮点数下溢,所以一般取其对数,变成
![](http://pic002.cnblogs.com/images/2012/103496/2012080611413110.png)
称为log-likelihood function。
GMM的log-likelihood function就是:
![](http://pic002.cnblogs.com/images/2012/103496/2012080611461235.png)
这里每个样本xi所属的类别zk是不知道的。Z是隐含变量。我们就是要找到最佳的模型参数,使得(6)式所示的期望最大,“期望最大化算法”名字由此而来。
EM要求解的问题一般形式是
![](http://pic002.cnblogs.com/images/2012/103496/2012080423285592.png)
Y是隐含变量。
我们已经知道如果数据点的分类标签Y是已知的,那么求解模型参数直接利用Maximum Likelihood就可以了。EM算法的基本思路是:随机初始化一组参数θ(0),根据后验概率Pr(Y|X;θ)来更新Y的期望E(Y),然后用E(Y)代替Y求出新的模型参数θ(1)。如此迭代直到θ趋于稳定。
E-Step E就是Expectation的意思,就是假设模型参数已知的情况下求隐含变量Z分别取z1,z2,...的期望,亦即Z分别取z1,z2,...的概率。在GMM中就是求数据点由各个 component生成的概率。
![](http://pic002.cnblogs.com/images/2012/103496/2012080614173877.png)
注意到我们在Z的后验概率前面乘以了一个权值因子αk,它表示在训练集中数据点属于类别zk的频率,在GMM中它就是πk。(一个样本点i属于类别k的概率就是类别k构建x的概率,除以所有类别构建出来x的概率)
![](http://pic002.cnblogs.com/images/2012/103496/2012080614243410.png)
(这个式子套用(1)中的式子就是当前样本属于样本k的概率)
M-Step M就是Maximization的意思,就是用最大似然的方法求出模型参数。现在我们认为上一步求出的r(i,k)就是“数据点xi由component k生成的概率”。根据公式(3),(4),(5)可以推出:
![](http://pic002.cnblogs.com/images/2012/103496/2012080614423964.png)
![](http://pic002.cnblogs.com/images/2012/103496/2012080614425564.png)
![](http://pic002.cnblogs.com/images/2012/103496/2012080614430385.png)
![](http://pic002.cnblogs.com/images/2012/103496/2012080614431178.png)
对比K-means可以发现,这里使用了“软”指定,为每个样例分配的类别
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/20110406160714960.png)
是有一定的概率的,同时计算量也变大了,每个样例i都要计算属于每一个类别j的概率。与K-means相同的是,结果仍然是局部最优解。对其他参数取不同的初始值进行多次计算不失为一种好方法。
帮助理解:
这里一直不是很明白E步骤中的这个式子的意思,在EM中类别是一个隐含变量,通过中间转换,第一步是猜测隐含类别变量z,第二步是更新其他参数,以获得最大的最大似然估计。
一般E步骤表示固定其他参数后求得一个类别的最大后验概率,这里对于每一个样本i 都计算 其 属于类别k的概率,因为一个样本并不是通过一个高斯模型构建的,而是可以通过多个,所以这里得到的每一个样本点属于的类型都是一个概率。(这里需要注意的是第一步并不是需要最大化似然函数,第二步才是,所以第二步的推导公式都是对似然函数取导获得的,第一步只是猜测样本的类别)。
在E中根据现有参数计算出当前样本i属于各个类别的概率。在M中根据K类别中所有样本对应其的概率进行更新参数,然后返回E步骤,重新计算各个概率。
首先复习一下EM算法的关键步骤以及GMM的基础
一 EM复习
通过求对树操作和Jeson不等式之后:
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616069601.png)
这个就是最后的似然函数处理了,首先是参数
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061615596333.png)
对样本x
出现的似然函数,概率乘积后取对数,然后加入样本的类别参数z 形成了式子(1),为了利用Jeson不等式(就是对凹函数的公式: f(E[X]>=E[f(X)])引入了让
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616027502.png)
表示该样例隐含变量z的某种分布。然后形成不等式(3),简写为似然函数L(θ)>=J(z,Q)
![](http://img.my.csdn.net/uploads/201301/24/1359004484_7944.jpg)
这里的目标就是使似然函数的式子(2)得到最大的值,先调整Q(Z)确定L的下限值,然后调整
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061615596333.png)
可以最大化下限值。(至于为什么一定会收敛这里不回忆了)。让等式成立就是随机变量为常数
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616242355.png)
c为常数,不依赖于
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616257994.png)
。对此式子做进一步推导
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616261191.png)
至此,我们推出了在固定其他参数
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616275193.png)
后,
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616283274.png)
的计算公式就是后验概率,解决了
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616289404.png)
如何选择的问题。这一步就是E步,建立
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/20110406161629375.png)
的下界。接下来的M步,就是在给定
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616292044.png)
后,调整
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616304095.png)
,去极大化
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/20110406161631606.png)
的下界(在固定
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/201104061616318687.png)
后,下界还可以调整的更大)。那么一般的EM算法的步骤如下:
循环重复直到收敛 { (E步)对于每一个i,计算 ![]() (M步)计算 ![]() |
这里理解E中的Q函数:是利用期望最大化算法,就是首先根据参数的初值估计隐藏变量Q的分布,然后根据隐藏变量的分布来计算观察变量的似然函数,估计参数的值(这里比较早期的简单的方法就是一来在E中就根据参数确定了类型,然后M中更新参数,再迭代的过程)
http://wenku.baidu.com/view/ff588b5af01dc281e53af088.html
二 高斯模型简介:
http://www.cnblogs.com/zhangchaoyang/articles/2624882.html
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html
单高斯模型:
多维变量X服从高斯分布时,它的概率密度函数PDF为:
![](http://pic002.cnblogs.com/images/2012/103496/2012080610354637.png)
x是维度为d的列向量,u是模型期望,Σ是模型方差。在实际应用中u通常用样本均值来代替,Σ通常用样本方差来代替。很容易判断一个样x本是否属于类别C。因为每个类别都有自己的u和Σ,把x代入(1)式,当概率大于一定阈值时我们就认为x属于C类。
从几何上讲,单高斯分布模型在二维空间应该近似于椭圆,在三维空间上近似于椭球。遗憾的是在很多分类问题中,属于同一类别的样本点并不满足“椭圆”分布的特性。这就引入了高斯混合模型。
高斯混合模型GMM
GMM认为数据是从几个GSM中生成出来的,即![](http://pic002.cnblogs.com/images/2012/103496/2012080610524971.png)
K是混合高斯中包含的单高斯模型的数量。πk是权值因子。其中的任意一个高斯分布N(x;uk,Σk)叫作这个模型的一个component。这里有个问题,为什么我们要假设数据是由若干个高斯分布组合而成的,而不假设是其他分布呢?实际上不管是什么分布,只K取得足够大,这个XX Mixture
Model就会变得足够复杂,就可以用来逼近任意连续的概率密度分布。只是因为高斯函数具有良好的计算性能,所GMM被广泛地应用。
GMM是一种聚类算法,每个component就是一个聚类中心。即在只有样本点,不知道样本分类(含有隐含变量)的情况下,计算出模型参数(π,u和Σ)----这显然可以用EM算法来求解。再用训练好的模型去差别样本所属的分类,当每个样本所属分类已知时,GMM的参数非常好确定,直接利用Maximum
Likelihood。设样本容量为N,属于K个分类的样本数量分别是N1,N2,...,Nk,属于第k个分类的样本集合是L(k)。
样本分类未知情况下的GMM
有N个数据点,服从某种分布Pr(x;θ),我们想找到一组参数θ,使得生成这些数据点的概率最大。通常单个点的概率很小,连乘之后数据会更小,容易造成浮点数下溢,所以一般取其对数,变成![](http://pic002.cnblogs.com/images/2012/103496/2012080611413110.png)
称为log-likelihood function。
GMM的log-likelihood function就是:
![](http://pic002.cnblogs.com/images/2012/103496/2012080611461235.png)
这里每个样本xi所属的类别zk是不知道的。Z是隐含变量。我们就是要找到最佳的模型参数,使得(6)式所示的期望最大,“期望最大化算法”名字由此而来。
EM法求解
EM要求解的问题一般形式是![](http://pic002.cnblogs.com/images/2012/103496/2012080423285592.png)
Y是隐含变量。
我们已经知道如果数据点的分类标签Y是已知的,那么求解模型参数直接利用Maximum Likelihood就可以了。EM算法的基本思路是:随机初始化一组参数θ(0),根据后验概率Pr(Y|X;θ)来更新Y的期望E(Y),然后用E(Y)代替Y求出新的模型参数θ(1)。如此迭代直到θ趋于稳定。
E-Step E就是Expectation的意思,就是假设模型参数已知的情况下求隐含变量Z分别取z1,z2,...的期望,亦即Z分别取z1,z2,...的概率。在GMM中就是求数据点由各个 component生成的概率。
![](http://pic002.cnblogs.com/images/2012/103496/2012080614173877.png)
注意到我们在Z的后验概率前面乘以了一个权值因子αk,它表示在训练集中数据点属于类别zk的频率,在GMM中它就是πk。(一个样本点i属于类别k的概率就是类别k构建x的概率,除以所有类别构建出来x的概率)
![](http://pic002.cnblogs.com/images/2012/103496/2012080614243410.png)
(这个式子套用(1)中的式子就是当前样本属于样本k的概率)
M-Step M就是Maximization的意思,就是用最大似然的方法求出模型参数。现在我们认为上一步求出的r(i,k)就是“数据点xi由component k生成的概率”。根据公式(3),(4),(5)可以推出:
![](http://pic002.cnblogs.com/images/2012/103496/2012080614423964.png)
![](http://pic002.cnblogs.com/images/2012/103496/2012080614425564.png)
![](http://pic002.cnblogs.com/images/2012/103496/2012080614430385.png)
![](http://pic002.cnblogs.com/images/2012/103496/2012080614431178.png)
对比K-means可以发现,这里使用了“软”指定,为每个样例分配的类别
![](http://images.cnblogs.com/cnblogs_com/jerrylead/201104/20110406160714960.png)
是有一定的概率的,同时计算量也变大了,每个样例i都要计算属于每一个类别j的概率。与K-means相同的是,结果仍然是局部最优解。对其他参数取不同的初始值进行多次计算不失为一种好方法。
帮助理解:
这里一直不是很明白E步骤中的这个式子的意思,在EM中类别是一个隐含变量,通过中间转换,第一步是猜测隐含类别变量z,第二步是更新其他参数,以获得最大的最大似然估计。
一般E步骤表示固定其他参数后求得一个类别的最大后验概率,这里对于每一个样本i 都计算 其 属于类别k的概率,因为一个样本并不是通过一个高斯模型构建的,而是可以通过多个,所以这里得到的每一个样本点属于的类型都是一个概率。(这里需要注意的是第一步并不是需要最大化似然函数,第二步才是,所以第二步的推导公式都是对似然函数取导获得的,第一步只是猜测样本的类别)。
在E中根据现有参数计算出当前样本i属于各个类别的概率。在M中根据K类别中所有样本对应其的概率进行更新参数,然后返回E步骤,重新计算各个概率。
相关文章推荐
- 机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)
- GMM混合高斯模型的EM算法及Python实现
- 混合高斯模型GMM和EM算法
- GMM混合高斯模型理论基础(基于EM算法)
- 混合高斯模型GMM
- EM算法 估计混合高斯模型参数 Python实现
- 混合高斯模型(Mixtures of Gaussians)和EM算法
- GMM与EM算法(零)
- 高斯混合模型GMM的EM算法实现(聚类)
- GMM的EM算法实现
- 运动检测(前景检测)之(二)混合高斯模型GMM
- 【机器学习】高斯混合模型GMM和EM算法
- EM算法 混合高斯模型
- [转]运动检测(前景检测)之(二)混合高斯模型GMM
- 我的OpenCV学习笔记(3):基于混合高斯模型GMM的运动目标检测
- 图像算法之九:混合高斯模型GMM
- 运动检测(前景检测)之(二)混合高斯模型GMM
- GMM的EM算法实现
- 混合高斯模型GMM
- EM算法逼近GMM参数针对二维数据点的python实现