主要内容

拟合高斯混合模型与数据

这个例子展示了如何模拟来自多元正态分布的数据,然后用高斯混合模型(GMM)拟合数据fitgmdist.要创建已知的或完全指定的GMM对象,请参见创建高斯混合模型

fitgmdist需要一个数据矩阵和GMM中组件的数量。要创建一个有用的GMM,您必须进行选择k小心。太少的组件无法准确地对数据建模(即,对数据拟合不足)。过多的分量会导致奇异协方差矩阵的过拟合模型。

模拟来自两个二元高斯分布的混合数据mvnrnd

Mu1 = [1 2];Sigma1 = [2 0;0。5);Mu2 = [-3 -5];Sigma2 = [1 0;0 1];rng (1);%用于重现性X = [mvnrnd(mu1,sigma1,1000);mvnrnd (mu2 sigma2 1000)];

绘制模拟数据图。

散射(X (: 1) X(:, 2), 10日“。”点大小为10的散点图标题(模拟数据的

拟合双分量GMM。使用“选项”参数显示拟合算法的最终输出。

选项= statset(“显示”“最后一次”);gm = fitgmdist(X,2,“选项”选项)
5次迭代,log-likelihood = -7105.71 gm =二维2组分的高斯混合分布组分1:混合比例:0.500000均值:-3.0377 -4.9859组分2:混合比例:0.500000均值:0.9812 2.0563

绘制拟合GMM的pdf图。

gmPDF = @ (x, y) arrayfun (@ (x0, y0) pdf(通用、(x0 y0)), x, y);持有h = fcontour(gmPDF,[-8 6]);标题(pdf的模拟数据和等高线);

显示对平均值、协方差和混合比例的估计

ComponentMeans = gm.mu
ComponentMeans =2×2-3.0377 -4.9859 0.9812 2.0563
componentcovariance = gm.Sigma
ComponentCovariances = ComponentCovariances(:,:,1) = 1.0132 0.0482 0.0482 0.9796 ComponentCovariances(:,:,2) = 1.9919 0.0127 0.0127 0.5533
mixtureproportion = gm.ComponentProportion
MixtureProportions =1×20.5000 - 0.5000

对数据拟合四个模型,每个模型的分量都在增加,并比较赤池信息准则(AIC)值。

AIC = 0 (1,4);Gm = cell(1,4);k = 1:4 gm{k} = fitgmdist(X,k);AIC (k) = {k} .AIC通用;结束

显示最小化AIC值的组件数量。

[minAIC,numComponents] = min(AIC);numComponents
numComponents = 2

双组分模型AIC值最小。

显示双组分GMM。

gm2 = gm{numComponents}
gm2 =二维2组分的高斯混合分布。组分1:混合比例:0.500000均值:-3.0377 -4.9859组分2:混合比例:0.500000均值:0.9812 2.0563

AIC和贝叶斯信息标准(BIC)都是基于可能性的模型拟合度量,包括对复杂性的惩罚(具体地说,参数的数量)。当组件的数量未指定时,您可以使用它们来确定模型的适当组件数量。

另请参阅

|||

相关的话题