データへの混合ガウス モデルの当てはめ
この例では、多変量正規分布から派生するデータをシミュレートし、fitgmdist
を使用してそのデータに混合ガウス モデル (GMM) を当てはめる方法を示します。既知の、つまり完全に指定した GMM オブジェクトを作成する方法については、混合ガウス モデルの作成を参照してください。
fitgmdist
では、データの行列と GMM の成分数が必要です。有用な GMM を作成するには、k
を慎重に選択しなければなりません。成分数が少なすぎると、データを正確にはモデル化できません (データへの適合不足)。成分数が多すぎると、特異な共分散行列によりモデルが過適合になります。
mvnrnd
を使用して、2 つの二変量ガウス分布の混合から派生するデータをシミュレートします。
mu1 = [1 2];
sigma1 = [2 0; 0 .5];
mu2 = [-3 -5];
sigma2 = [1 0; 0 1];
rng(1); % For reproducibility
X = [mvnrnd(mu1,sigma1,1000);
mvnrnd(mu2,sigma2,1000)];
シミュレートしたデータをプロットします。
scatter(X(:,1),X(:,2),10,'.') % Scatter plot with points of size 10 title('Simulated Data')
2 成分の GMM を近似させます。名前と値のペアの引数 'Options'
を使用して、近似アルゴリズムの最終出力を表示します。
options = statset('Display','final'); gm = fitgmdist(X,2,'Options',options)
5 iterations, log-likelihood = -7105.71 gm = Gaussian mixture distribution with 2 components in 2 dimensions Component 1: Mixing proportion: 0.500000 Mean: -3.0377 -4.9859 Component 2: Mixing proportion: 0.500000 Mean: 0.9812 2.0563
近似させた GMM の pdf をプロットします。
gmPDF = @(x,y) arrayfun(@(x0,y0) pdf(gm,[x0 y0]),x,y); hold on h = fcontour(gmPDF,[-8 6]); title('Simulated Data and Contour lines of pdf');
平均、共分散および混合比率の推定値を表示します。
ComponentMeans = gm.mu
ComponentMeans = 2×2
-3.0377 -4.9859
0.9812 2.0563
ComponentCovariances = gm.Sigma
ComponentCovariances = ComponentCovariances(:,:,1) = 1.0132 0.0482 0.0482 0.9796 ComponentCovariances(:,:,2) = 1.9919 0.0127 0.0127 0.5533
MixtureProportions = gm.ComponentProportion
MixtureProportions = 1×2
0.5000 0.5000
成分数を増やして 4 つのモデルをデータに当てはめ、赤池情報量基準 (AIC) の値を比較します。
AIC = zeros(1,4); gm = cell(1,4); for k = 1:4 gm{k} = fitgmdist(X,k); AIC(k)= gm{k}.AIC; end
AIC の値が最小になる成分数を表示します。
[minAIC,numComponents] = min(AIC); numComponents
numComponents = 2
AIC の値が最小になるのは、2 成分のモデルです。
2 成分の GMM を表示します。
gm2 = gm{numComponents}
gm2 = Gaussian mixture distribution with 2 components in 2 dimensions Component 1: Mixing proportion: 0.500000 Mean: -3.0377 -4.9859 Component 2: Mixing proportion: 0.500000 Mean: 0.9812 2.0563
AIC とベイズ情報量基準 (BIC) はどちらも尤度に基づくモデル近似の尺度であり、複雑度 (特にパラメーター数) に対するペナルティが含まれています。これらの情報量を、成分数が指定されていない場合に、モデルに対する適切な成分数を決めるために使用できます。
参考
fitgmdist
| gmdistribution
| mvnrnd
| random