机器学习

05 EM算法 - 高斯混合模型 - GMM

2018-12-15  本文已影响129人  白尔摩斯

04 EM算法 - EM算法收敛证明

GMM(Gaussian Mixture Model, 高斯混合模型)是指该算法由多个高斯模型线性叠加混合而成。每个高斯模型称之为component。

多个带有权重的高斯模型线性的叠加

GMM算法描述的是数据的本身存在的一种分布,即样本特征属性的分布,和预测值Y无关。显然GMM算法是无监督的算法,常用于聚类应用中,component的个数就可以认为是类别的数量。


回到昨天说的例子:随机选择1000名用户,测量用户的身高;若样本中存在男性和女性,身高分别服从高斯分布N(μ1,σ1)和N(μ2,σ2)的分布,试估计参数:μ1,σ1,μ2,σ2;

1、如果明确的知道样本的情况(即男性和女性数据是分开的),那么我们使用极大似然估计来估计这个参数值。

2、如果样本是混合而成的,不能明确的区分开,那么就没法直接使用极大似然估计来进行参数的估计。

我们可以认为当前的1000条数据组成的集X,是由两个高斯分布叠加而成的(男性的分布和女性的分布)。

男性和女性的高斯分布的叠加 在每个分布前乘以一个权重π

如果能找到一种办法把每一个高斯分布对应的参数π、 μ、σ求出来,那么对应的模型就求解出来了。

如果模型求解出来后,如何对数据进行聚类?

这个公式求出来的分别是男性和女性身高分布的概率密度,如果把π、 μ、σ都求出来,以后我们可以构建出一个能够根据样本特征计算出样本属于男性或女性的可能性。

实际做样本分类的时候,我们把样本X的特征x1~xn分别代入两个公式中,求出来的两个结果分别是:样本X的性别是男、是女的可能性。如果是男的可能性大于是女的可能性,我们就把样本X归入男性的分类。


假定GMM由k个Gaussian分布线性叠加而成,那么概率密度函数如下:

概率密度函数

分析第1个等式:
p(x): 概率密度函数,k个Gaussian分布线性叠加而成的概率密度函数。
∑p(k)p(x|k): k个某种模型叠加的概率密度函数。
p(k): 每个模型占的权重,即上面提到的π。
p(x|k): 给定类别k后,对应的x的概率密度函数。

分析第2个等式:目标 - 将公式写成高斯分布的样子。
πk即p(k)
p(x;μk,∑k):多元高斯(正态)分布。有了观测数据x后,在给定了条件下的高斯分布。这个条件1、第k个分类的均值μk; 2、第k个分类的方差∑k;

深入分析p(x;μk,∑k)的参数:
如果样本有n个特征,所有的特征x1~xn一起服从一个多元的高斯分布(正态分布),所有特征的均值应该是一个向量 (μ1n);
μk 第k个分类的情况下(第k个高斯分布的情况下对应的每一列的均值);μk = (μk1kn)

k 协方差矩阵(对称阵)。现在有n个特征,协方差矩阵是一个n×n的矩阵。现在我们要算的是:

cov(x1,x1),cov(x1,x2),...,cov(x1,xn)

cov(x2,x1),cov(x2,x2),...,cov(x2,xn)
....
cov(xn,x1),cov(x1,x2),...,cov(xn,xn)

其中,对角线 cov(x1,x1)、cov(x2,x2), ... ,cov(xn,xn)中,x1和x1的协方差 = x1的方差;即cov(x1,x1) = var(x1);所以对角线上两个特征的协方差 = 对应的特征的方差。

协方差 - 知识补充

协方差(Covariance)在概率论统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。

协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

总结 - 公式

理解了公式后,再来看看公式在图像上是如何体现的:

蓝1 + 蓝2 = 红

如果样本X只有一个特征x1,在二维的坐标系上的表示出来。特征x1是由n个单变量样本的高斯分布叠加而成的。向量x1k = ∑k (x1(1),x1(2),~,x1(n)),如k=(男、女),累加男性分类下的特征高斯分布和女性分类下的高斯分布;

图中红色曲线表示原有数据的分布情况,我认为这个原有数据是由多个比较的高斯分布叠加而成的,蓝色曲线 表示单个单个高斯分布的分布情况。向量x1 = (x1(1),x1(2),~,x1(n));

PS: 蓝1+蓝2=红 体现的就是公式 p(x) = ∑πp(x;μ,∑k);


在得知数据的特征 x=(x1~xn) 后,如果我们想把数据合理得聚类到一个分类中,我们该如何去计算呢?

既然我已经得到了k个高斯分布对应的概率密度函数(现在设k=3,共3个分类),将当前特征的x=(x1~xn)代入我们的概率密度函数: p(x) = ∑πp(x;μ,∑k);

p(蓝1)+p(蓝2)+p(蓝3) = 红

我们分别计算p(蓝1)、p(蓝2)、p(蓝3),蓝色三条线各对应k分类中的一个,哪个数大,我认为当前的样本该分到哪一类。


GMM算法的两个前提:
1、数据服从高斯分布;
2、我们人为定义了分类个数k。

基于这两个前提,问题递进:

问:我们人为假定了高斯分布的分类个数k,就类似于我们聚簇时分的聚簇中心个数一样。参数π、μ、σ该如何求出来?

答:和K-Means算法一样,我们可以用EM算法来求解这个问题。 GMM也满足EM算法的聚类思想,首先人为得定义了聚类的个数k,从数据特征X中发掘潜在关系的一种模型。而且我还默认数据是服从多个高斯分布的。

GMM算法中的隐含条件是:第k个模型占的权重 - \color{red}{π}、 第k个高斯分布的情况下对应的每一列的均值 - \color{red}{μ}、协方差矩阵 cov(xi,xj) - \color{red}{∑k};因为本质上我们是知道数据原有的分类状况的,只是无法观测到隐含在数据中的这些特性,使用EM的思想可以迭代得求解出这些隐含变量。

对联合概率密度函数求对数似然函数:

对联合概率密度函数求对数后,原本连乘的最大似然估计变成了连加的函数状态。

EM算法求解 - E步:

E步 - 公式

套用公式后,我们可以假定隐含变量z的分布:Q(z(i) = j);
我们认为分布wj(i) = 第i个观测值对应的隐含分类第z(i)类; = 以(看不见的参数π、μ、∑)为参数的情况下,输入第i观测值的特征x后得到的分类z(i)类;

EM算法求解 - M步:
M步第1行就是上一章通过化简找到下界的那个函数:

M步 - 第1行就是通过化简找到下界的那个函数 M步 - 第1行就是昨天我们推导这些公式 M步 - 公式 一维正态分布 - 知识补充,背出来 多维正态分布 - 对比一维单变量时的正态分布公式,有多少个特征n就等于多少。k是指属于第几类高斯分布。

如果要分别求解三个未知变量, 则需要对每一个未知变量求偏导。

在公式中需要求的未知量有三个

1、对均值求偏导:

求解第l个分类下均值的向量 对均值求偏导

2、对方差求偏导:

对方差求偏导

3、对概率使用拉格朗日乘子法求解:

对概率使用拉格朗日乘子法求解

\color{red}{本章最重要的是记住下面的内容:}

记住这三个公式 一维正态分布 - 知识补充,背出来 多维正态分布 - 对比一维单变量时的正态分布公式,有多少个特征n就等于多少。k是指属于第几类高斯分布。

06 EM算法 - 案例一 - EM分类初识及GMM算法实现

上一篇下一篇

猜你喜欢

热点阅读