Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ハード クラスタリングの使用による混合ガウス データのクラスタリング

この例では、ガウス分布の混合からシミュレートされたデータに対するハード クラスタリングの実装方法を示します。

近似させたモデルの多変量正規成分でクラスターを表すことができるので、混合ガウス モデルをデータのクラスタリングに使用できます。

ガウス分布の混合から派生するデータのシミュレート

mvnrndを使用して、2 つの二変量ガウス分布の混合から派生するデータをシミュレートします。

rng('default')% For reproducibilitymu1 = [1 2]; sigma1 = [3 .2; .2 2]; mu2 = [-1 -2]; sigma2 = [2 0; 0 1]; X = [mvnrnd(mu1,sigma1,200); mvnrnd(mu2,sigma2,100)]; n = size(X,1); figure scatter(X(:,1),X(:,2),10,'ko')

Figure contains an axes. The axes contains an object of type scatter.

シミュレーション データへの混合ガウス モデルのあてはめ

2 成分の混合ガウス モデル (GMM) を当てはめます。ここでは正しい成分数がわかっていますが、実際に、本物のデータ使用する場合は、さまざまな成分数をもつモデルを比較して決定する必要があります。また、期待値最大化近似ルーチンの最終反復の表示を要求します。

options = statset('Display','final'); gm = fitgmdist(X,2,'Options',options)
26 iterations, log-likelihood = -1210.59 gm = Gaussian mixture distribution with 2 components in 2 dimensions Component 1: Mixing proportion: 0.629514 Mean: 1.0756 2.0421 Component 2: Mixing proportion: 0.370486 Mean: -0.8296 -1.8488

2 成分混合分布の推定確率密度等高線をプロットします。2 つの二変量正規分布成分は部分的に重なりますが、ピークは異なっています。これにより、データを 2 つのクラスターに適切に分割できることがわかります。

holdongmPDF = @(x,y) arrayfun(@(x0,y0) pdf(gm,[x0,y0]),x,y); fcontour(gmPDF,[-8,6]) title('Scatter Plot and Fitted GMM Contour') holdoff

Figure contains an axes. The axes with title Scatter Plot and Fitted GMM Contour contains 2 objects of type scatter, functioncontour.

近似させた GMM の使用によるデータのクラスタリング

集群は、各データ点を正確に 1 つのクラスターに割り当てるメソッド、"ハード クラスタリング" を実装します。GMM の場合、集群は GMM に含まれている 2 つの混合成分のいずれかに各点を割り当てます。各クラスターの中心は、対応する混合成分の平均です。"ソフト クラスタリング" についての詳細は、ソフト クラスタリングの使用による混合ガウス データのクラスタリングを参照してください。

近似させた GMM とデータを集群に渡すことにより、データをクラスターに分割します。

idx = cluster(gm,X); cluster1 = (idx == 1);% |1| for cluster 1 membershipcluster2 = (idx = = 2);% |2| for cluster 2 membershipfigure gscatter(X(:,1),X(:,2),idx,'rb','+o') legend('Cluster 1','Cluster 2','Location','best')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Cluster 1, Cluster 2.

各クラスターは、混合分布に含まれている二変量正規成分のいずれかに対応します。集群は、クラスター メンバーシップ スコアに基づいてデータをクラスターに割り当てます。各クラスター メンバーシップ スコアとは、対応する成分からそのデータ点が派生する事後確率の推定値です。集群は、各点の最大の事後確率に対応する混合成分にその点を割り当てます。

クラスター メンバーシップの事後確率は、近似させた GMM とデータを次のいずれかに渡すことにより推定できます。

  • posterior

  • 集群(3 番目の出力引数を返すように要求)

クラスター メンバーシップの事後確率の推定

各点について 1 番目の成分の事後確率を推定およびプロットします。

P = posterior(gm,X); figure scatter(X(cluster1,1),X(cluster1,2),10,P(cluster1,1),'+') holdonscatter(X(cluster2,1),X(cluster2,2),10,P(cluster2,1),'o') holdoffclrmap = jet(80); colormap(clrmap(9:72,:)) ylabel(colorbar,'Component 1 Posterior Probability') legend('Cluster 1','Cluster 2','Location','best') title('Scatter Plot and Cluster 1 Posterior Probabilities')

Figure contains an axes. The axes with title Scatter Plot and Cluster 1 Posterior Probabilities contains 2 objects of type scatter. These objects represent Cluster 1, Cluster 2.

Pは、クラスター メンバーシップの事後確率が含まれているn行 2 列の行列です。1 番目の列にはクラスター 1 の事後確率が含まれており、2 番目の列はクラスター 2 の事後確率に対応します。

新しいデータのクラスターへの代入

集群メソッドを使用して、元のデータから求めた混合成分に新しいデータ点を割り当てることもできます。

ガウス分布の混合から派生する新しいデータをシミュレートします。mvnrndを使用するのではなく、gmdistributionを使用して真の混合成分の平均と標準偏差で GMM を作成してから GMM をrandomに渡すことにより、データをシミュレートできます。

Mu = [mu1; mu2]; Sigma = cat(3,sigma1,sigma2); p = [0.75 0.25];% Mixing proportionsgmTrue = gmdistribution(Mu,Sigma,p); X0 = random(gmTrue,75);

近似させた GMM (gm) と新しいデータを集群に渡すことにより、新しいデータにクラスターを割り当てます。クラスター メンバーシップの事後確率を要求します。

[idx0,~,P0] = cluster(gm,X0); figure fcontour(gmPDF,[min(X0(:,1)) max(X0(:,1)) min(X0(:,2)) max(X0(:,2))]) holdongscatter(X0(:,1),X0(:,2),idx0,'rb','+o') legend('Fitted GMM Contour','Cluster 1','Cluster 2','Location','best') title('New Data Cluster Assignments') holdoff

Figure contains an axes. The axes with title New Data Cluster Assignments contains 3 objects of type functioncontour, line. These objects represent Fitted GMM Contour, Cluster 1, Cluster 2.

新しいデータをクラスタリングするときに意味がある結果を集群に生成させるには、混合分布を作成するために使用した元のデータであるXと同じ母集団からX0が派生する必要があります。特に、X0の事後確率を計算するときに、集群posteriorは混合確率の推定値を使用します。

参考

||||

関連するトピック