调整高斯混合模型
这个例子展示了如何通过调整组件数量和组件协方差矩阵结构来确定最佳的高斯混合模型(GMM)拟合。
加载费雪的虹膜数据集。将花瓣的测量作为预测指标。
负载fisheririsX = meas(:,3:4);[n,p] = size(X);rng (1)%用于再现性图绘制(X (: 1), (:, 2),“。”,“MarkerSize”15)标题(“Fisher的虹膜数据集”)包含(“花瓣长度(厘米)”) ylabel (“花瓣宽度(厘米)”)
假设k所需组件或集群的数量,以及 是所有分量的协方差结构。按照以下步骤调优GMM。
选择一个(k, )对,然后使用所选参数规范和整个数据集拟合一个GMM。
估算AIC和BIC。
重复步骤1和2,直到耗尽所有(k, )对兴趣。
选择合适的GMM,以简单平衡低AIC。
对于本例,为的值选择一个网格k包括2和3,以及一些周围的数字。指定协方差结构的所有可用选项。如果k对于数据集来说过高,则估计的分量协方差可能条件不佳。指定使用正则化来避免条件差的协方差矩阵。将EM算法迭代次数增加到10000次。
K = 1:5;nK =数字(k);σ = {“对角线”,“全部”};西格玛=数字(西格玛);sharedco方差= {true,false};SCtext = {“真正的”,“假”};nSC =数字(sharedco方差);RegularizationValue = 0.01;选项= statset(“麦克斯特”, 10000);
使用所有参数组合拟合gmm。计算每个拟合的AIC和BIC。跟踪每个配合的终端收敛状态。
%预先配置gm =细胞(nK,nSigma,nSC);aic = 0 (nK,nSigma,nSC);bic = 0 (nK,nSigma,nSC);收敛= false(nK,nSigma,nSC);适合所有型号为m = 1:nSC为j = 1:nSigma为i = 1:nK gm{i,j,m} = fitgmdist(X,k(i),...“CovarianceType”σ{j},...“SharedCovariance”, SharedCovariance {m},...“RegularizationValue”RegularizationValue,...“选项”、选择);aic(i,j,m) = gm{i,j,m}.AIC;bic(i,j,m) = gm{i,j,m}.BIC;收敛(i,j,m) = gm{i,j,m}.收敛;结束结束结束allConverge = (sum(converged(:)) == nK*nSigma*nSC)
allConverge =逻辑1
通用汽车
单元格数组是否包含所有的拟合gmdistribution
模型对象。所有拟合实例都收敛了。
绘制单独的柱状图来比较所有拟合的AIC和BIC。把酒吧按k.
数字栏(重塑(aic,nK,nSigma*nSC))'AIC为各种$k$和$\Sigma$选择',“翻译”,“乳胶”)包含(“k美元”,“翻译”,“乳胶”) ylabel (“另类投资会议”)({传奇“Diagonal-shared”,“Full-shared”,“Diagonal-unshared”,...“Full-unshared”})
图形栏(重塑(bic,nK,nSigma*nSC))“BIC为各种$k$和$\Sigma$的选择”,“翻译”,“乳胶”)包含(“c美元”,“翻译”,“乳胶”) ylabel (“BIC”)({传奇“Diagonal-shared”,“Full-shared”,“Diagonal-unshared”,...“Full-unshared”})
根据AIC和BIC值,最佳模型具有3个分量和完整的未共享协方差矩阵结构。
使用最佳拟合模型对训练数据进行聚类。绘制聚类数据和组成椭圆。
gmBest = gm{3,2,2};clusterX = cluster(gmBest,X);kGMM = gmBest.NumComponents;D = 500;x1 = linspace (min (X(: 1)) - 2,马克斯(X (: 1)) + 2, d);x2 = linspace (min (X(:, 2)) - 2,马克斯(X (:, 2)) + 2, d);[x1grid,x2grid] = meshgrid(x1,x2);X0 = [x1grid(:) x2grid(:)];mahalDist = mahal(gmBest,X0);阈值=√(chi2inv(0.99,2)); figure h1 = gscatter(X(:,1),X(:,2),clusterX); hold在为j = 1:kGMM idx = mahalDist(:,j)<=阈值;颜色= h1(j).颜色*0.75 + -0.5*(h1(j). 0)。颜色- 1);h2 = plot(X0(idx,1),X0(idx,2),“。”,“颜色”、颜色、“MarkerSize”1);uistack (h2,“底”)结束情节(gmBest.mu (: 1) gmBest.mu (:, 2),“kx”,“线宽”2,“MarkerSize”10)标题(“聚类数据和组件结构”)包含(“花瓣长度(厘米)”) ylabel (“花瓣宽度(厘米)”)传说(h1、“集群1”,《集群2》,“集群3”,“位置”,“西北”)举行从
这个数据集包括标签。确定好gmb
通过将每个预测与真实标签进行比较来对数据进行聚类。
物种=分类的(物种);Y = 0 (n,1);= = Y(物种“多色的”) = 1;= = Y(物种“virginica”) = 2;= = Y(物种“setosa”) = 3;miscluster = Y ~= clusterX;clusterError = sum(miscluster)/n
clusterError = 0.0800
最佳拟合的GMM将8%的观测数据分组到错误的聚类中。
集群
并不总是保持聚类顺序。也就是说,如果你聚类几个合适的gmdistribution
模型,集群
可能会为相似的组件分配不同的集群标签。