gmdistribution
混合ガウス モデルの作成
説明
gmdistribution オブジェクトは混合ガウス分布 (混合ガウス モデル (GMM) とも呼ばれます) を格納します。これは、複数の多変量ガウス分布成分から構成される多変量分布です。各成分は平均と共分散によって定義されます。混合は混合比率のベクトルによって定義されます。ここで各混合比率は、対応する成分によって表される母集団の比率を表します。
作成
gmdistribution モデル オブジェクトは 2 つの方法で作成できます。
分布パラメーターを指定することにより、関数
gmdistribution(ここで説明) を使用してgmdistributionモデル オブジェクトを作成する。関数
fitgmdistを使用して、固定数の成分についてgmdistributionモデル オブジェクトをデータに当てはめる。
説明
入力引数
多変量ガウス分布の成分の平均。k 行 m 列の数値行列を指定します。k は成分の個数、m は各成分の変数の個数です。mu(i,:) は成分 i の平均です。
データ型: single | double
多変量ガウス分布の成分の共分散。数値ベクトル、行列または配列を指定します。
成分の個数 k および各成分の変数の個数 m に対して、sigma は次の表のいずれかの値になります。
| 値 | 説明 |
|---|---|
| m x m x k の配列 | sigma(:,:,i) は成分 i の共分散行列です。 |
| 1 x m x k の配列 | 共分散行列は対角行列です。sigma(1,:,i) には成分 i の共分散行列の対角要素が格納されます。 |
| m 行 m 列の行列 | 共分散行列はどの成分でも同じです。 |
| 1 行 m 列のベクトル | 共分散行列は対角行列であり、どの成分でも同じです。 |
データ型: single | double
混合成分の混合比率。長さ k の数値ベクトルを指定します。k は成分の個数です。既定値は 1/k から成る行ベクトルで、等しい比率が設定されます。p の合計が 1 にならなければ、gmdistribution は正規化を行いません。
データ型: single | double
プロパティ
分布パラメーター
この プロパティ は読み取り専用です。
多変量ガウス分布の成分の平均。k 行 m 列の数値行列を指定します。k は成分の個数、m は各成分の変数の個数です。mu(i,:) は成分 i の平均です。
データ型: single | double
この プロパティ は読み取り専用です。
多変量ガウス分布の成分の共分散。数値ベクトル、行列または配列を指定します。
成分の個数 k および各成分の変数の個数 m に対して、Sigma は次の表のいずれかの値になります。
| 値 | 説明 |
|---|---|
| m x m x k の配列 | Sigma(:,:,i) は成分 i の共分散行列です。 |
| 1 x m x k の配列 | 共分散行列は対角行列です。Sigma(1,:,i) には成分 i の共分散行列の対角要素が格納されます。 |
| m 行 m 列の行列 | 共分散行列はどの成分でも同じです。 |
| 1 行 m 列のベクトル | 共分散行列は対角行列であり、どの成分でも同じです。 |
データ型: single | double
分布特性
この プロパティ は読み取り専用です。
共分散行列のタイプ。'diagonal' または 'full' を指定します。
関数
gmdistributionを使用してgmdistributionオブジェクトを作成した場合、このプロパティはgmdistributionの入力引数sigmaにおける共分散行列のタイプによって設定されます。関数
fitgmdistを使用してgmdistributionオブジェクトをデータに当てはめた場合、このプロパティはfitgmdistの名前と値のペアの引数'CovarianceType'によって設定されます。
この プロパティ は読み取り専用です。
分布名。'gaussian mixture distribution' を指定します。
この プロパティ は読み取り専用です。
共分散行列が混合成分間で共有されているかどうかを示すフラグ。true または false を指定します。
関数
gmdistributionを使用してgmdistributionオブジェクトを作成した場合、このプロパティはgmdistributionの入力引数sigmaにおける共分散行列のタイプによって設定されます。関数
fitgmdistを使用してgmdistributionオブジェクトをデータに当てはめた場合、このプロパティはfitgmdistの名前と値のペアの引数'SharedCovariance'によって設定されます。
データ型: logical
当てはめたオブジェクトのプロパティ
以下のプロパティは、fitgmdist で作成して当てはめたオブジェクトのみに適用されます。関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、これらのプロパティの値は空になります。
この プロパティ は読み取り専用です。
赤池情報量基準 (AIC)。スカラーを指定します。AIC = 2*NlogL + 2*p。NlogL は負の対数尤度 (NegativeLogLikelihood プロパティ)、p は推定されたパラメーターの個数です。
AIC は、モデル選択ツールとして、同じデータに当てはめた複数モデルの比較に使用できます。AIC は尤度に基づくモデル近似の尺度として、複雑度に対するペナルティ (具体的にはパラメーター数) を含みます。複数のモデルを比較した場合に、AIC の値がより小さいモデルがより優れています。
関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは空になります。
データ型: single | double
この プロパティ は読み取り専用です。
ベイズ情報量基準 (BIC)。スカラーを指定します。BIC = 2*NlogL + p*log(n)。NlogL は負の対数尤度 (NegativeLogLikelihood プロパティ)、n は観測値の個数、p は推定されたパラメーターの個数です。
BIC は、モデル選択ツールとして、同じデータに当てはめた複数モデルの比較に使用できます。BIC は尤度に基づくモデル近似の尺度として、複雑度に対するペナルティ (具体的にはパラメーター数) を含みます。複数のモデルを比較した場合に、BIC の値が最も小さいモデルが最良近似モデルです。
関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは空になります。
データ型: single | double
この プロパティ は読み取り専用です。
混合ガウス モデルを当てはめるときに期待値最大化 (EM) アルゴリズムが収束したかどうかを示すフラグ。true または false を指定します。
最適化オプションは、fitgmdist の名前と値のペアの引数 'Options' を使用して変更できます。
関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは空になります。
データ型: logical
この プロパティ は読み取り専用です。
fitgmdist の入力データ X に対して当てはめた混合ガウス モデルの負の対数尤度。スカラーを指定します。
関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは空になります。
データ型: single | double
この プロパティ は読み取り専用です。
期待値最大化 (EM) アルゴリズム内での反復回数。正の整数を指定します。
許容される最大反復回数などの最適化オプションは、fitgmdist の名前と値のペアの引数 'Options' を使用して変更できます。
関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは空になります。
データ型: double
この プロパティ は読み取り専用です。
事後確率の許容誤差。範囲 [0,1e-6] の非負のスカラー値を指定します。
このプロパティは、fitgmdist の名前と値のペアの引数 'ProbabilityTolerance' によって設定されます。
関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは空になります。
データ型: single | double
この プロパティ は読み取り専用です。
正則化パラメーター値。非負のスカラーを指定します。
このプロパティは、fitgmdist の名前と値のペアの引数 'RegularizationValue' によって設定されます。
関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは空になります。
データ型: single | double
オブジェクト関数
例
関数 gmdistribution を使用して、2 成分の二変量混合ガウス分布を作成します。
2 つの二変量混合ガウス成分の分布パラメーター (平均と共分散) を定義します。
mu = [1 2;-3 -5];
sigma = cat(3,[2 .5],[1 1]) % 1-by-2-by-2 arraysigma =
sigma(:,:,1) =
2.0000 0.5000
sigma(:,:,2) =
1 1
関数 cat は、3 番目の配列次元に沿って共分散を連結します。定義される共分散行列は対角行列です。sigma(1,:,i) には成分 i の共分散行列の対角要素が格納されます。
gmdistribution オブジェクトを作成します。既定では、関数 gmdistribution は均等な比率の混合を作成します。
gm = gmdistribution(mu,sigma)
gm = Gaussian mixture distribution with 2 components in 2 dimensions Component 1: Mixing proportion: 0.500000 Mean: 1 2 Component 2: Mixing proportion: 0.500000 Mean: -3 -5
gm オブジェクトのプロパティをリストします。
properties(gm)
Properties for class gmdistribution:
NumVariables
DistributionName
NumComponents
ComponentProportion
SharedCovariance
NumIterations
RegularizationValue
NegativeLogLikelihood
CovarianceType
mu
Sigma
AIC
BIC
Converged
ProbabilityTolerance
これらのプロパティには、ドット表記を使用してアクセスできます。たとえば、混合成分の混合比率を表す ComponentProportion プロパティにアクセスします。
gm.ComponentProportion
ans = 1×2
0.5000 0.5000
gmdistribution オブジェクトには、当てはめたオブジェクトのみに適用されるプロパティがあります。当てはめたオブジェクトのプロパティは、AIC、BIC、Converged、NegativeLogLikelihood、NumIterations、ProbabilityTolerance および RegularizationValue です。関数 gmdistribution を使用し分布パラメーターを指定することによりオブジェクトを作成した場合、当てはめたオブジェクトのプロパティの値は空になります。たとえば、ドット表記を使用して NegativeLogLikelihood プロパティにアクセスします。
gm.NegativeLogLikelihood
ans =
[]
gmdistribution オブジェクトを作成後、そのオブジェクト関数を使用できます。累積分布関数 (cdf) と確率密度関数 (pdf) の値を計算するには、cdf と pdf を使用します。ランダムなベクトルを生成するには random を使用します。クラスター分析には cluster、mahal と posterior を使用します。
pdf と fsurf を使用してオブジェクトを可視化します。
gmPDF = @(x,y) arrayfun(@(x0,y0) pdf(gm,[x0 y0]),x,y); fsurf(gmPDF,[-10 10])

関数 mvnrnd を使用して、2 つの二変量ガウス分布の混合に従う確率変量を生成します。関数 fitgmdist を使用して、生成したデータに混合ガウスモデル (GMM) を当てはめます。
2 つの二変量混合ガウス成分の分布パラメーター (平均と共分散) を定義します。
mu1 = [1 2]; % Mean of the 1st component sigma1 = [2 0; 0 .5]; % Covariance of the 1st component mu2 = [-3 -5]; % Mean of the 2nd component sigma2 = [1 0; 0 1]; % Covariance of the 2nd component
各成分から同じ個数の確率変量を生成し、2 組の確率変量を結合します。
rng('default') % For reproducibility r1 = mvnrnd(mu1,sigma1,1000); r2 = mvnrnd(mu2,sigma2,1000); X = [r1; r2];
結合したデータ セット X には、2 つの二変量ガウス分布の混合に従う確率変量が含まれています。
2 成分の GMM を X に当てはめます。
gm = fitgmdist(X,2)
gm = Gaussian mixture distribution with 2 components in 2 dimensions Component 1: Mixing proportion: 0.500000 Mean: -2.9617 -4.9727 Component 2: Mixing proportion: 0.500000 Mean: 0.9539 2.0261
gm オブジェクトのプロパティをリストします。
properties(gm)
Properties for class gmdistribution:
NumVariables
DistributionName
NumComponents
ComponentProportion
SharedCovariance
NumIterations
RegularizationValue
NegativeLogLikelihood
CovarianceType
mu
Sigma
AIC
BIC
Converged
ProbabilityTolerance
これらのプロパティには、ドット表記を使用してアクセスできます。たとえば、当てはめたモデルに対するデータ X の負の対数尤度を表す NegativeLogLikelihood プロパティにアクセスします。
gm.NegativeLogLikelihood
ans = 7.0584e+03
gmdistribution オブジェクトを作成後、そのオブジェクト関数を使用できます。累積分布関数 (cdf) と確率密度関数 (pdf) の値を計算するには、cdf と pdf を使用します。確率変量を生成するには、randomを使用します。クラスター分析には cluster、mahal と posterior を使用します。
scatterを使用して、X をプロットします。当てはめられたモデル gm を pdfとfcontour を使用して可視化します。
scatter(X(:,1),X(:,2),10,'.') % Scatter plot with points of size 10 hold on gmPDF = @(x,y) arrayfun(@(x0,y0) pdf(gm,[x0 y0]),x,y); fcontour(gmPDF,[-8 6])

参照
[1] McLachlan, G., and D. Peel. Finite Mixture Models. Hoboken, NJ: John Wiley & Sons, Inc., 2000.
バージョン履歴
R2007b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)