matlab gmm,GMM聚类及Matlab代码实现

本文介绍了GMM(高斯混合模型)聚类的特点,与K-means的区别在于GMM采用软分配,提供每个数据点属于每个类别的概率。文章通过Matlab代码展示了GMM的实现过程,包括数据生成、初始化参数、GMM算法以及K-means作为初始化的优化效果。讨论了归纳偏置在学习过程中的作用,并指出GMM在数据分布假设上的局限性。
摘要由CSDN通过智能技术生成

算法特点

GMM聚类与Keams聚类很相似。K-means是将每个数据点分配到某一个类别中,而GMM则是给出这些数据点被分配到每个类别的概率,又叫做soft assignment。其除了被用在clustering上,还经常被用于density estimation上。

得出一个概率有很多的好处,因为它的信息量比简单的一个结果要多。这个概率可以被看做是得出这个结果的把握。比如说,在诸如疾病诊断时,算法得出49%的概率患病,为51%的概率正常,如果仅仅用50%的阈值将患者诊断为“正常”的话,风险是非常大的,也就是说得出正常的结果的把握是非常小的。这个情况下,就会拒绝发表评论,而把这个任务留给有经验的医生去解决。

学习的过程可以看做是一种“归纳”的过程,在归纳的时候需要有一个提前假设,即“归纳偏置”。比如说线性回归,它的归纳偏执就是“数据是符合线性函数的,满足要求的函数必须是线性函数”。如果去掉“线性函数”这个归纳偏执,那么就会产生过拟合的问题,我们就可以构造n-1次多项式函数,让它完美的穿过所有的N的点,甚至可以构造出无数个满足条件的函数。然而,我们学习的目的通常不是解释现有的事物,而是从中归纳知识,并且能够应用到新的事物上。

没有归纳偏执或者归纳偏执太宽泛会导致过拟合,而限制过大的归纳偏执也是有问题的;比如说,如果数据不是非线性分布的,强行的使用非线性函数去做分类通常并不能够得到好的结果。难点就是在这之间找到一个平衡点。

混合高斯模型的归纳偏执很明显,就是假设数据符合混合高斯分布,也就是看作数据是从多个高斯分布中生成而来。混合模型其实是可以变的任意复杂的,通过增加模型的个数,我们可以任意的逼近任何连续的概率密度分布。

主程序:

clear;

clc;

%从实验结果可以看出先使用Keams方法计算初始点,再使用GMM进行聚类得到的结果

%明显优于直接使用GMM方法进行聚类得到的结果

%数据X1和X2的真实均值为[1,1;4,4;8,1]

%协方差矩阵均为[2,0;0,2];

%数据集X1的混合系数为[1/3,1/3,1/3]

%数据集X2的混合系数为[0.6,0.3,0.1]

[X1,X2]=generateData();

K=3;

%数据集X1

[a_init,mu_init,sigma_init]=initPara(X1);

[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值