Categories
不学无术

Matlab使用Gaussian Mixture Model (GMM)做分类器

Matlab真是用来测试算法的好东西啊~一些很基础的东西都提供了~
我是在R2014a中使用的,可能是要装统计学模型的什么插件,不过我之前安装的时候把各种插件都选了,所以没啥问题啦~
主要函数有这么几个:

1.fitgmdist

这个是用来拟合GMM模型的,其中X是训练集数据(一行是一个观测值observation,每列一个特征feature),看官方介绍
http://www.mathworks.cn/cn/help/stats/fitgmdist.html#namevaluepairarguments
GMModel = fitgmdist(X,k)
参数k是高斯分量GM Component的个数,这个要根据实际情况调整的~
可以附带各种参数的,如果训练中迭代到第xxx步出错的话,应该是一个singular(奇点?)的问题,因为在概率分布函数中有个sigma值是做分母的。貌似如果你的观测值里有个和mu的值很像的话,sigma算出来很接近0,0分母是0了就会造成各种问题。
因为是花半个小时看的这个东西,所以没怎么学会就在用了,这次拿GMM是做对照实验的所以弄得不够深入,强烈推荐看这个:
http://freemind.pluskid.org/machine-learning/regularized-gaussian-covariance-estimation/
如果碰到Singular问题,可以考虑修改几个参数,如SharedCov,Regularize来规避,不过其性能可能会受到不同程度影响(有好有坏)。

2.pdf

拿测试例去测试训练好的GMM模型用到这个函数。高斯混合模型成型后是有个概率分布的,按照其理念,对陌生的测试例使用这个概率分布函数就能算出类似“支持度”的东西啦~
最简单的方法就是,每个分类训练一个GMM,然后测试时算出各种分类的支持度,具体怎么决策就是另外一回事了,光决策还有算法的说~最简单的就是挑支持度最大的分类作为结果。
可以参考这个:
http://www.mathworks.com/matlabcentral/newsreader/view_thread/168336
用法就是
pdf(obj, X)
obj就是之前算出的那个GMM啦~X是测试例,支持向量或者多个观测值的矩阵的。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.