主要内容

调整高斯混合模型

这个例子展示了如何通过调整组件数量和组件协方差矩阵结构来确定最佳的高斯混合模型(GMM)拟合。

加载费雪的虹膜数据集。将花瓣的测量作为预测指标。

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

图中包含一个轴对象。标题为Fisher's Iris Data Set的axes对象包含一个类型为line的对象。

假设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 =数字(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:nSCj = 1:nSigmai = 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”})

图中包含一个轴对象。标题为AIC For各种k和Sigma Choices的坐标轴对象包含4个类型为bar的对象。这些对象表示对角共享、完全共享、对角非共享、完全非共享。

图形栏(重塑(bic,nK,nSigma*nSC))“BIC为各种$k$和$\Sigma$的选择”“翻译”“乳胶”)包含(“c美元”“翻译”“乳胶”) ylabel (“BIC”)({传奇“Diagonal-shared”“Full-shared”“Diagonal-unshared”...“Full-unshared”})

图中包含一个轴对象。标题为BIC For各种k和Sigma Choices的坐标轴对象包含4个类型为bar的对象。这些对象表示对角共享、完全共享、对角非共享、完全非共享。

根据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). 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”“位置”“西北”)举行

图中包含一个轴对象。标题为Clustered Data and Component Structures的axes对象包含7个类型为line的对象。这些对象表示集群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模型,集群可能会为相似的组件分配不同的集群标签。

另请参阅

||

相关的话题