主要内容

调谐高斯混合模型

该算例说明了如何通过调整分量个数和分量协方差矩阵结构来确定最佳高斯混合模型(GMM)拟合。

载入费雪的虹膜数据集。考虑花瓣的测量作为预测指标。

负载fisheriris;X = meas(:,3:4);[n,p] = size(X);rng (1);%用于重现性图;情节(X (: 1) X (:, 2),“。”“MarkerSize”15);标题(“费雪虹膜数据集”);包含(“花瓣长度(厘米)”);ylabel (“花瓣宽度(厘米)”);

假设k所需组件或集群的数量,和\σ美元是所有分量的协方差结构。按照以下步骤调优GMM。

  1. 选择一个(k\σ美元)对,然后使用所选参数规范和整个数据集拟合一个GMM。

  2. 估计AIC和BIC。

  3. 重复步骤1和2,直到耗尽所有(k\σ美元)对兴趣。

  4. 选择合适的GMM,平衡低AIC和简单性。

对于本例,为的值选择网格k其中包括2和3,以及一些周边的数字。指定所有可用的协方差结构选择。如果k对于该数据集来说过高,则估计的分量协方差可能条件很差。指定使用正则化来避免条件恶劣的协方差矩阵。将EM算法的迭代次数增加到10000。

K = 1:5;nK = numel(k);Sigma = {“对角线”“全部”};nSigma = numel(Sigma);sharedco方差= {true,false};SCtext = {“真正的”“假”};nSC = numel(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(convergence (:)) == nK*nSigma*nSC)
allconvergence =逻辑1

通用汽车单元格数组是否包含所有的拟合gmdistribution模型对象。所有拟合实例都收敛了。

绘制单独的柱状图来比较所有拟合的AIC和BIC。按条形排列k

图;酒吧(重塑(aic、nK、nSigma * nSC));标题(“AIC For各种$k$和$\Sigma$的选择”“翻译”“乳胶”);包含(“k美元”“翻译”“乳胶”);ylabel (“另类投资会议”);传奇({“Diagonal-shared”“Full-shared”“Diagonal-unshared”...“Full-unshared”});图;酒吧(重塑(bic、nK、nSigma * nSC));标题(BIC For各种$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); holdj = 1:kGMM;idx = mahalDist(:,j)<=阈值;颜色= h1(j).颜色*0.75 + -0.5*(h1(j).颜色= h1(j).颜色- 1);h2 = plot(X0(idx,1),X0(idx,2),“。”“颜色”、颜色、“MarkerSize”1);uistack (h2,“底”);结束h3 = plot(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模型,集群可能为相似的组件分配不同的集群标签。

另请参阅

||

相关的话题