导读机器学习day15高斯混合模型答高斯混合模型(Gaussian Mixed Model,GMM)也是常见的聚类算法。使用EM算法进行迭代计算。高斯混合模型假设了每个簇的数据符合正态分布(高斯分布),当前...

今天运困体育就给我们广大朋友来聊聊高斯混合西甲模型,希望能帮助到您找到想要的答案。

机器学习day15高斯混合模型

机器学习day15高斯混合模型

高斯混合模型(Gaussian Mixed Model,GMM)也是常见的聚类算法。使用EM算法进行迭代计算。高斯混合模型假设了每个簇的数据符合正态分布(高斯分布),当前的数据分布就是各个簇的高斯分布叠加在一起。

当数据明显无法使用一个正态分布拟合的时候,这时候我们就需要推广到多个正态分布的叠加,然后进行数据的拟合,这就是所谓的高斯混合模型,即采用多个正态分布函数的线性组合进行数据分布拟合,理论上,高斯混合模型可以拟合出任意类型的分布。

我们假设同一类的数据符合正态分布,不同簇的数据符合各自不同的正态分布。

我们需要计算每个正态分布的参数,均值 和方差 。我们还为每个正态分布添加一个参数 代表权重,或者说生成数据的概率。

高斯混合模型是生成式的模型,例如,一种最简单的情况。存在两个一维正态分布的分模型为N(0,1)和N(5,1),权重分别为0.7和0.3。那么生成第一个数据点的时候,先按照权重的比例,随机选择一个分布,然后根据分模线参数进行随机生成,之后第二.,直到生成所有的数据点。

一般情况下,我们无法直接得到高斯混合模型的参数,而是观察一些数据点,给定一个大概的类别数量K,然后求出最佳的K个正态分布模型。因此,我们需要计算的是最佳的均值 ,方差 和权重 。

如果使用最大似然求解,必将极其复杂,因此我们使用EM算法。

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

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一起服从一个多元的高斯分布(正态分布),所有特征的均值应该是一个向量 (μ 1 ~μ n );

μ k : 第k个分类的情况下(第k个高斯分布的情况下对应的每一列的均值);μ k = (μ k1 ~μ kn )

∑ 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)在 概率论 和 统计学 中用于衡量两个变量的总体 误差 。而 方差 是协方差的一种特殊情况,即当两个变量是相同的情况。

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

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

如果样本X只有一个特征x1,在二维的坐标系上的表示出来。特征x1是由n个单变量样本的高斯分布叠加而成的。向量x1 k = ∑ 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),蓝色三条线各对应k分类中的一个,哪个数大,我认为当前的样本该分到哪一类。

GMM算法的两个前提:

1、数据服从高斯分布;

2、我们人为定义了分类个数k。

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

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

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

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

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

EM算法求解 - E步:

套用公式后,我们可以假定隐含变量z的分布:Q(z (i) = j);

我们认为分布wj (i) = 第i个观测值对应的隐含分类第z (i) 类; = 以(看不见的参数π、μ、∑)为参数的情况下,输入第i观测值的特征x后得到的分类z (i) 类;

EM算法求解 - M步:

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

1、对均值求偏导:

2、对方差求偏导:

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

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

高斯混合模型(GMM)

  最近在实际工作中用到了高斯混合模型(Gaussian Mixture Model),遂笔记来整理记录相关知识点,以便复查巩固。

简单回顾一下本科概率论讲过的高斯模型。

高斯模型是一种常用的变量分布模型,又称正态分布,在数理统计领域有着广泛的应用。

当样本数据 X 是一维数据(Univariate)时,高斯分布遵从下方概率密度函数(Probability Density Function)(下文简称pdf)如下: 其中 为数据均值(期望), 为数据标准差(Standard deviation)。

当样本数据 X 是多维数据(Multivariate)时,高斯分布pdf为:

其中, 为数据均值(期望), 为协方差(Covariance),描述各维变量之间的相关度,D 为数据维度。

  高斯混合模型可以看作是由 K 个单高斯模型组合而成的模型,这 K 个子模型是混合模型的隐变量(Hidden variable)。一般来说,一个混合模型可以使用任何概率分布,这里使用高斯混合模型是因为高斯分布具备很好的数学性质以及良好的计算性能。

先来看一组数据。

  所以,混合高斯模型并不是什么新奇的东西,它的本质就是融合几个单高斯模型,来使得模型更加复杂,从而产生更复杂的样本。理论上,如果某个混合高斯模型融合的高斯模型个数足够多,它们之间的权重设定得足够合理,这个混合模型可以拟合任意分布的样本。

对于单高斯模型,我们可以用最大似然法(Maximum likelihood)估算参数 的值 这里我们假设了每个数据点都是独立的(Independent),似然函数由概率密度函数(PDF)给出。

由于每个点发生的概率都很小,乘积会变得极其小,不利于计算和观察,因此通常我们用 Maximum Log-Likelihood 来计算(因为 Log 函数具备单调性,不会改变极值的位置,同时在 0-1 之间输入值很小的变化可以引起输出值相对较大的变动): 对其进行求导并令导数为0,所求出的参数就是最佳的高斯分布对应的参数。

所以最大化似然函数的意义就是:通过使得样本集的联合概率最大来对参数进行估计,从而选择最佳的分布模型。

对于高斯混合模型,Log-Likelihood 函数是: 如何计算高斯混合模型的参数呢?这里我们无法像单高斯模型那样使用最大似然法来求导求得使 likelihood 最大的参数,因为对于每个观测数据点来说,事先并不知道它是属于哪个子分布的(hidden variable),因此 log 里面还有求和,对于每个子模型都有未知的 ,直接求导无法计算。需要通过迭代的方法求解。

EM 算法是一种迭代算法,1977 年由 Dempster 等人总结提出,用于含有隐变量(Hidden variable)的概率模型参数的最大似然估计。

每次迭代包含两个步骤:

这里不具体介绍一般性的 EM 算法,(通过 Jensen 不等式得出似然函数的下界 Lower bound,通过极大化下界做到极大化似然函数,有log(E(x))>=E(log(x))),只介绍怎么在高斯混合模型里应用从来推算出模型参数。

通过 EM 迭代更新高斯混合模型参数的方法(我们有样本数据 和一个有 个子模型的高斯混合模型,想要推算出这个高斯混合模型的最佳参数):

至此,我们就找到了高斯混合模型的参数。需要注意的是,EM 算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值。解决方法是初始化几次不同的参数进行迭代,取结果最好的那次。

高斯混合模型(GMM)及EM算法的初步理解

高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同类型的分布,比如正态分布和伯努利分布)。

如图1,图中的点在我们看来明显分成两个聚类。这两个聚类中的点分别通过两个不同的正态分布随机生成而来。但是如果没有GMM,那么只能用一个的二维高斯分布来描述图1中的数据。图1中的椭圆即为二倍标准差的正态分布椭圆。这显然不太合理,毕竟肉眼一看就觉得应该把它们分成两类。

这时候就可以使用GMM了!如图2,数据在平面上的空间分布和图1一样,这时使用两个二维高斯分布来描述图2中的数据,分别记为N(μ1,Σ1)和N(μ2,Σ2) 。图中的两个椭圆分别是这两个高斯分布的二倍标准差椭圆。可以看到使用两个二维高斯分布来描述图中的数据显然更合理。实际上图中的两个聚类的中的点是通过两个不同的正态分布随机生成而来。如果将两个二维高斯分布N(μ1,Σ1)和N(μ2,Σ2) 合成一个二维的分布,那么就可以用合成后的分布来描述图2中的所有点。最直观的方法就是对这两个二维高斯分布做线性组合,用线性组合后的分布来描述整个集合中的数据。这就是高斯混合模型(GMM)。

高斯混合模型(GMM)的数学表示:

期望极大(Expectation Maximization)算法,也称EM算法,是一种迭代算法,由Dempster et. al 在1977年提出,用于含有隐变量的概率参数模型的极大似然估计。

EM算法作为一种数据添加算法,在近几十年得到迅速的发展,主要源于当前科学研究以及各方面实际应用中数据量越来越大的情况下,经常存在数据缺失或者不可用的的问题,这时候直接处理数据比较困难,而数据添加办法有很多种,常用的有神经网络拟合、添补法、卡尔曼滤波法等,但是EM算法之所以能迅速普及主要源于它算法简单,稳定上升的步骤能相对可靠地找到“最优的收敛值”。

(个人的理解就是用含有隐变量的含参表达式不断拟合,最终能收敛并拟合出不含隐变量的含参表达式)

模型的EM训练过程,直观的来讲是这样:我们通过观察采样的概率值和模型概率值的接近程度,来判断一个模型是否拟合良好。然后我们通过调整模型以让新模型更适配采样的概率值。反复迭代这个过程很多次,直到两个概率值非常接近时,我们停止更新并完成模型训练。现在我们要将这个过程用算法来实现,所使用的方法是模型生成的数据来决定似然值,即通过模型来计算数据的期望值。通过更新参数μ和σ来让期望值最大化。这个过程可以不断迭代直到两次迭代中生成的参数变化非常小为止。该过程和k-means的算法训练过程很相似(k-means不断更新类中心来让结果最大化),只不过在这里的高斯模型中,我们需要同时更新两个参数:分布的均值和标准差.[3]

GMM常用于聚类。如果要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:首先随机地在这 K 个 Component 之中选一个,每个 Component 被选中的概率实际上就是它的系数Πk ,选中 Component 之后,再单独地考虑从这个 Component 的分布中选取一个点就可以了──这里已经回到了普通的 Gaussian 分布,转化为已知的问题。

根据数据来推算概率密度通常被称作 density estimation 。特别地,当我已知(或假定)概率密度函数的形式,而要估计其中的参数的过程被称作『参数估计』。

(推导和迭代收敛过程这里省略,可参考资料1)

一个实际的例子:用GMM对iris数据集进行聚类,并通过make_ellipses表示出来

make_ellipses方法概念上很简单,它将gmm对象(训练模型)、坐标轴、以及x和y坐标索引作为参数,运行后基于指定的坐标轴绘制出相应的椭圆图形。

在特定条件下,k-means和GMM方法可以互相用对方的思想来表达。在k-means中根据距离每个点最接近的类中心来标记该点的类别,这里存在的假设是每个类簇的尺度接近且特征的分布不存在不均匀性。 这也解释了为什么在使用k-means前对数据进行归一会有效果。高斯混合模型则不会受到这个约束 ,因为它对每个类簇分别考察特征的协方差模型。

K-means算法可以被视为高斯混合模型(GMM)的一种特殊形式。 整体上看,高斯混合模型能提供更强的描述能力,因为聚类时数据点的从属关系不仅与近邻相关,还会依赖于类簇的形状。n维高斯分布的形状由每个类簇的协方差来决定。在协方差矩阵上添加特定的约束条件后,可能会通过GMM和k-means得到相同的结果。

在k-means方法中使用EM来训练高斯混合模型时对初始值的设置非常敏感。而对比k-means,GMM方法有更多的初始条件要设置。实践中不仅初始类中心要指定,而且协方差矩阵和混合权重也要设置。可以运行k-means来生成类中心,并以此作为高斯混合模型的初始条件。由此可见并两个算法有相似的处理过程,主要区别在于模型的复杂度不同。

高斯混合模型的基本假设是 已知类别的比例 和 类别的个数 ,但是不知道每个样例的具体标签,据此用EM的模式为每个样本进行最优的标注。也就是说它适合的是 无标签学习的分类问题 ,并且需要已知基本假设。

整体来看,所有无监督机器学习算法都遵循一条简单的模式:给定一系列数据,训练出一个能描述这些数据规律的模型(并期望潜在过程能生成数据)。 训练过程通常要反复迭代,直到无法再优化参数获得更贴合数据的模型为止。

【1】; 高斯混合模型(GMM)及其EM算法的理解

【2】;   机器学习中的数学(4)-EM算法与高斯混合模型(GMM)

【3】;   一文详解高斯混合模型原理

为什么gmm回归里面还放工具变量

方便操作。GMM又称高斯混合模型,也可以简写为MOG。高斯模型就是用高斯概率密度函数,即正态分布曲线,精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数形成的模型,根据查询gmm简介可知,当该界面在回归功能里出现工具变量,是为了帮助用户进行更方便的操作。

今天的内容先分享到这里了,读完本文《高斯混合西甲模型~高斯混合模型是什么模型》之后,是否是您想找的答案呢?想要了解更多,敬请关注www.zuqiumeng.cn,您的关注是给小编最大的鼓励。