博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高斯混合模型Gaussian Mixture Model (GMM)——通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布...
阅读量:5966 次
发布时间:2019-06-19

本文共 1752 字,大约阅读时间需要 5 分钟。

从几何上讲,单高斯分布模型在二维空间应该近似于椭圆,在三维空间上近似于椭球。遗憾的是在很多分类问题中,属于同一类别的样本点并不满足“椭圆”分布的特性。这就引入了高斯混合模型。——可以认为是基本假设!

 

高斯混合模型Gaussian Mixture Model (GMM)

摘自:http://www.infocool.net/kb/Spark/201609/193351.html

      由于本文写的不g够完整详细,给出一个学习链接: 

       
       混合模型:通过密度函数的线性合并来表示未知模型 p(x
      为什么提出混合模型,那是因为单一模型与实际数据的分布严重不符,但是几个模型混合以后却能很好的描述和预测数据。 
       高斯混合模型(GMM),说的是把数据可以看作是从数个高斯分布中生成出来的。虽然我们可以用不同的分布来随意地构造 XX Mixture Model ,但是 GMM是最为流行。另外,Mixture Model 本身其实也是可以变得任意复杂的,通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布。 
      二维情况下高斯分布模拟产生数据的分布是椭圆,如下图: 
这里写图片描述 
      显然对于下面图(a),单一的高斯概率分布函数无法表达,仔细看近似包含三个椭圆,所以可以将三个高斯概率分布函数线性组合起来,各个函数有不同的参数和权重,这样就能很好的描述所有出现的这些样本了。这大概是高斯混合模型可以用于分类的精髓所在吧?图(b)已经明确了样本分类。 
这里写图片描述
      求解方法为最大似然参数估计方法,EM优化算法,我将在《Spark2.0机器学习系列之8-2:…》中详细介绍。 
      大家可能会想到,上图(a)中的数据分布太具有实验性质了,实际中那有这样的数据,但GMM牛逼的地方就在于通过增加 Model 的个数(也就是组成成分的数量K,其实就是我们的分类个数),可以任意地逼近任何连续的概率密分布。所以呢,理论上是绝对支持的,而实际上呢,对于多维特征数据我们往往难以可视化,所以难把握的地方也就在这里,如何选取K 值?换句化说聚类(无监督分类)拿什么标准如何评估模型的好坏?因为如果对结果有好评价指标的话,那么我们就可以实验不同的K,选出最优的那个K就好了,到底有没有呢? 
      这个话题又比较长,有人认为聚类的评估一定要做预先标注,没有Index总是让人觉得不靠谱,不是很让人信服。但是也有不同学者提出了大量的评估方法,主要是考虑到不同聚类算法的目标函数相差很大,有些是基于距离的,比如k-means,有些是假设先验分布的,比如GMM,LDA,有些是带有图聚类和谱分析性质的,比如谱聚类,还有些是基于密度的,所以难以拿出一个统一的评估方法,但是正是有这么些个原理上的不同,记着不与算法本身的原理因果颠倒的情况下,那么针对各类方法还是可以提出有针对性的评价指标的,如k-means的均方根误差。其实更应该嵌入到问题中进行评价,很多实际问题中,聚类仅仅是其中的一步,可以对比不聚类的情形(比如人为分割、随机分割数据集等等),所以这时候我们评价『聚类结果好坏』,其实是在评价『聚类是否能对最终结果有好的影响』。(本部分来综合了知乎上的部分问答:如有不妥之处,敬请告知。) 
      关于聚类的评估问题,我计划再写另外一篇文章《Spark聚类结果评估浅析》,不知道能否写好。 
CSDN上还有文章可参考: 聚类算法初探(七)聚类分析的效果评测 http://blog.infocool.net/itplus/article/details/10322361

//训练模型val gmm=new GaussianMixture().setK(2).setMaxIter(100).setSeed(1L) val model=gmm.fit(dataset) //输出model参数 for(i<-0 until model.getK){ println("weight=%f\nmu=%s\nsigma=\n%s\n" format(model.weights(i), model.gaussians(i).mean, model.gaussians(i).cov)) //weight是各组成成分的权重 //nsigma是样本协方差矩阵 //mu(mean)是各类质点位置

转载地址:http://qrvax.baihongyu.com/

你可能感兴趣的文章
C# list介绍
查看>>
概率霍夫变换(Progressive Probabilistic Hough Transform)原理详解
查看>>
Mac下快速新建txt文件
查看>>
谷歌浏览器chrome设置特定网页使用Https(ssl)访问
查看>>
[NPM] Use a shorthand syntax for running multiple npm scripts with npm-run-all
查看>>
MySQL中函数CONCAT及GROUP_CONCAT
查看>>
java中写sql语句的小小细节
查看>>
Android中BitmapFactory.Options详解
查看>>
跟着百度学PHP[13]-文件上传
查看>>
SQL SERVER 2000安装教程图文详解
查看>>
Android滑动到顶部悬停
查看>>
c#通过反射移除所有事件
查看>>
C语言 · 输出日历
查看>>
inode与ln命令
查看>>
Uncaught TypeError: this.canvas.getContext is not a function
查看>>
CSS 之 样式优先级机制
查看>>
Jenkins + GitHub + fir-cli 一行命令从源码到fir.im
查看>>
kill-9导致weblogic无法启动
查看>>
WebService服务发布与使用(JDK自带WebService)
查看>>
Java DES 加解密("DES/CBC/PKCS5Padding")
查看>>