十二、高斯混合模型

参考url:

https://jakevdp.github.io/PythonDataScienceHandbook/05.12-gaussian-mixtures.html

1、高斯混合模型(GMM)为什么会出现:k-means算法的缺陷

  

  某些点的归属簇比其他点的归属簇更加明确,比如中间的两个簇似乎有一小块区域重合,因此对重合部分的点将被分配到哪个簇不是很有信心,而且k-means模型本身没有度量簇的分配概率或不确定性的方法。

  理解k-means模型的一种方法是:它在每个簇的中心放置了一个圆圈(在更高维空间中是一个超空间),圆圈半径根据最远的点与簇中心点的距离算出。这个半径作为训练集分配簇的硬切断(hard cutoff),即在这个圆圈之外的任何点都不是该簇的成员。

  

  k-means有一个重要特征,它要求这些簇的模型必须是圆形:k-means算法没有内置的方法来实现椭圆形的簇,因此,如果对同样的数据进行一些转换,簇的分配就被变得混乱。

  

  这些变形的簇并不是圆形的,因此圆形的簇拟合效果非常糟糕,k-means强行将数据拟合至4个圆形的簇会导致多个圆形的簇混在一起、互相重叠,右下部分尤其明显。

  k-means的两个缺点(类的形状缺少灵活形、缺少簇分配的概率),使得它对许多数据集(特别是低维数据集)的拟合效果不尽人意。

  高斯混合模型的两个基本组成部分:

  (1)通过比较每个点与所有簇中心点的距离来度量簇分配的不确定性,而不仅仅是关注最近的簇。

  (2)通过将簇的边界由圆形放宽至椭圆形,从而得到非圆形的簇。

2、一般化E-M:高斯混合模型

  高斯混合模型(Gaussian mixture model,GMM)试图找到多维高斯概率分布的混合体,从而获得任意数据集最好的模型。

  

  由于GMM有一个隐含的概率模型,因此它也可能找到簇分配的概率结果——在Scikit-Learn中用predict_proba方法实现,这个方法返回一个大小为[n_samples,n_clusters]的矩阵,矩阵会给出任意点属于某个簇的概率。

  

  

  高斯混合模型本质上和k-means模型非常类似,它们都使用了期望最大化方法,具体实现如下:

  (1)选择初始簇的中心位置和形状

  (2)重复直至收敛

    a、期望步骤(E-step):为每个点找到对应每个簇的概率作为权重。

    b、最大化步骤(M-step):更新每个簇的位置,将其标准化,并且基于所有数据点的权重来确定形状

  每个簇的结果并不与硬边缘的空间(hard-edgedsphere)有关,而是通过高斯平滑模型实现。

  高斯模型允许使用全协方差(full covariance),即使是于非常扁平的椭圆形的簇,该模型也可以处理。

  其中的超参数covariance_type控制了每个簇的形状自由度,它的默认值是covariance_type=‘diag‘,意思是簇在每个维度的尺寸都可以单独设置,椭圆边界的主轴与坐标轴平行。

  当covariance_type=‘spherical‘时,该模型通过约束簇的形状,让所有维度相等,这样得到的聚类结果和k-means聚类的特征是相似的,但两者并不完全相同。

  当covariance_type=‘full‘时,该模型允许每个簇在任意方向上用椭圆建模。

3、将GMM用作密度估计

  虽然GMM通常被归类为聚类算法,但它本质上是一个密度估计算法,从技术的角度考虑,即一个GMM拟合的结果并不是一个聚类模型,而是描述数据分布的生成概率模型。

  GMM是一种非常方便的建模方法,可以为数据估计出任意维度的随机分布

  作为一种生成模型,GMM提供了一种确定数据集最优成分数量的方法:由于生成模型本身就是数据集的概率分布,因此可以利用该模型来评估数据的似然估计,并利用交叉检验防止过拟合,纠正过拟合的标准分析方法有赤池信息量准则(Akaike information criterion,AIC)和贝叶斯信息准则(Bayesian information criterion,BIC),用来调整模型的似然估计,这两种度量准则的计算方法内置在Scikit-Learn的GMM评估器内。

  

  类的最优数量出现在AIC或BIC曲线最小值的位置,最终结果取决于我们更希望使用哪一种近似。

  AIC告诉我们,选择16个成分可能太多,8个~12个成分可能是更好的选择。

  这里需要注意的是:成分数量的选择度量的是GMM作为一个密度评估器的性能,而不是作为一个聚类算法的性能,建议把GMM当成一个密度评估器,仅在简单数据集中才将它作为聚类算法使用。

原文地址:https://www.cnblogs.com/nuochengze/p/12541550.html

时间: 2024-12-21 07:01:56

十二、高斯混合模型的相关文章

机器学习(十二、十三):K-means算法、高斯混合模型

简介: 本节介绍STANFORD机器学习公开课中的第12.13集视频中的算法:K-means算法.高斯混合模型(GMM).(9.10.11集不进行介绍,略过了哈) 一.K-means算法 属于无监督学习的聚类算法,给定一组未标定的数据(输入样本),对其进行分类,假设可分为k个类.由于算法比较直观,故直接给出步骤和MATLAB代码.(k-means算法在数学推导上是有意义的) MATLAB代码: %% %k均值聚类 clear all; close all; %% n=2; m=200; v0=r

带你理解带你飞——高斯混合模型算法

GMM这是图像处理,模式识别和深度学习领域一个百嚼不烂的话题.很多人被一堆数学公式,迭代求和和看似毫无联系的likehood EM算法搞得糊里糊涂. 其实就算羡慕着很多牛气哄哄的学霸炫耀公式推理的IT普工们,我们有没有问过自己,我们真的知道GMM吗?于是有些人和我一样有了如下的思考和疑问: 1.到底什么是高斯混合模型?最好能一句话或者简单的话说明白,至少让我一辈子也忘不掉这个该死的算法... 2.GMM是如此复杂有效,能让GMM算法向富士康的iphone流水线一样,虽然精密庞杂但却能完整直观的展

【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们将一起学习OpenCV中

猪猪的机器学习笔记(十二)支持向量机

支持向量机 作者:樱花猪   摘要: 本文为七月算法(julyedu.com)12月机器学习第十二次次课在线笔记.SVM是一种常见的分类器,在很长一段时间起到了统治地位.而目前来讲SVM依然是一种非常好用的分类器,在处理少量数据的时候有非常出色的表现. 引言: SVM是一个非常常见的分类器,在真正了解他的原理之前我们多多少少都有接触过他.本位将会详细的介绍SVM的原理.目标以及计算过程和算法步骤.我们针对线性可分数据和线性不可分数据介绍了线性支持向量机和非线性支持向量机,并在最后简单阐述非线性支

七月算法--12月机器学习在线班-第十二次课笔记—支持向量机(SVM)

七月算法-12月机器学习在线班--第十二次课笔记-支持向量机(SVM) 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com ? 复习的内容: 对偶问题 KKT条件 ? SVM 1.1三类数据类型 线性可分支持向量机 线性支持向量机 非线性支持向量机 ? 1.2 线性分类 1.2.1 样本到分类面的距离的意义 点到直线的距离,ABC是归一化的."+"正类别,"-"负类别 因此距离可以直接用AX+BY+c=f(x,

ML—高斯混合模型

华电北风吹 日期:2016-05-07 高斯混合模型是一个无监督学习算法,主要用思路是利用EM算法对混合高斯分布进行极大似然估计. 一.高斯混合分布 对于有k个高斯分布混合而成的混合高斯分布的概率密度函数有 p(x)=∑zp(x|z)p(z)(1) 对于随机变量z有z~Multinomial(?), 表示来自于不同的高斯分布的概率分别为?j,j=1,2,...,k,即p(z=j)=?j,其中?j≥0,∑kj=1?j=1.对于每个高斯分布有x|z~N(μj,Σj).称满足以上分布的随机变量x服从高

高斯混合模型

一.什么是高斯混合模型(GMM) 高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,通常用于解决同一集合下的数据包含多个不同的分布的情况,如利用GMM来解决分类情况, 如下图,在我们看来明显分成两个聚类.这两个聚类中的点分别通过两个不同的正态分布随机生成而来.但是如果没有GMM,那么只能用一个的二维高斯分布来描述图中的数据.这显然不太合理,毕竟肉眼一看就觉得应该把它们分成两类 这时可以使用两个二维高斯分布来描述图中的数据,将两个二维高斯分布\(N(\mu_

统计学习方法c++实现之八 EM算法与高斯混合模型

EM算法与高斯混合模型 前言 EM算法是一种用于含有隐变量的概率模型参数的极大似然估计的迭代算法.如果给定的概率模型的变量都是可观测变量,那么给定观测数据后,就可以根据极大似然估计来求出模型的参数,比如我们假设抛硬币的正面朝上的概率为p(相当于我们假设了概率模型),然后根据n次抛硬币的结果就可以估计出p的值,这种概率模型没有隐变量,而书中的三个硬币的问题(先抛A然后根据A的结果决定继续抛B还是C),这种问题中A的结果就是隐变量,我们只有最后一个硬币的结果,其中的隐变量无法观测,所以这种无法直接根

K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!

1. 聚类算法都是无监督学习吗? 什么是聚类算法?聚类是一种机器学习技术,它涉及到数据点的分组.给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组.理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征.聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术. 常用的算法包括K-MEANS.高斯混合模型(Gaussian Mixed Model,GMM).自组织映射神经网络(Self-Organizing Map,SOM)