Main Content

gmdistribution

混合ガウス モデルの作成

説明

gmdistribution オブジェクトは混合ガウス分布 (混合ガウス モデル (GMM) とも呼ばれます) を格納します。これは、複数の多変量ガウス分布成分から構成される多変量分布です。各成分は平均と共分散によって定義されます。混合は混合比率のベクトルによって定義されます。ここで各混合比率は、対応する成分によって表される母集団の比率を表します。

作成

gmdistribution モデル オブジェクトは 2 つの方法で作成できます。

  • 分布パラメーターを指定することにより、関数 gmdistribution (ここで説明) を使用して gmdistribution モデル オブジェクトを作成する。

  • 関数 fitgmdist を使用して、固定数の成分について gmdistribution モデル オブジェクトをデータに当てはめる。

説明

gm = gmdistribution(mu,sigma) は、指定された平均 mu および共分散 sigma を等しい混合比率で使用して、gmdistribution モデル オブジェクトを作成します。

gm = gmdistribution(mu,sigma,p) は、多変量ガウス分布の成分の混合比率を指定します。

入力引数

すべて展開する

多変量ガウス分布の成分の平均。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 の平均です。

  • 関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは gmdistribution の入力引数 mu によって設定されます。

  • 関数 fitgmdist を使用して gmdistribution オブジェクトをデータに当てはめた場合、このプロパティは fitgmdist によって推定されます。

データ型: 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 列のベクトル共分散行列は対角行列であり、どの成分でも同じです。

  • 関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは gmdistribution の入力引数 sigma によって設定されます。

  • 関数 fitgmdist を使用して gmdistribution オブジェクトをデータに当てはめた場合、このプロパティは fitgmdist によって推定されます。

データ型: single | double

この プロパティ は読み取り専用です。

混合成分の混合比率。1 行 k 列の数値ベクトルを指定します。

  • 関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは gmdistribution の入力引数 p によって設定されます。

  • 関数 fitgmdist を使用して gmdistribution オブジェクトをデータに当てはめた場合、このプロパティは fitgmdist によって推定されます。

データ型: single | double

分布特性

この プロパティ は読み取り専用です。

共分散行列のタイプ。'diagonal' または 'full' を指定します。

  • 関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは gmdistribution の入力引数 sigma における共分散行列のタイプによって設定されます。

  • 関数 fitgmdist を使用して gmdistribution オブジェクトをデータに当てはめた場合、このプロパティは fitgmdist の名前と値のペアの引数 'CovarianceType' によって設定されます。

この プロパティ は読み取り専用です。

分布名。'gaussian mixture distribution' を指定します。

この プロパティ は読み取り専用です。

混合成分の個数 k。正の整数を指定します。

  • 関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは gmdistribution の入力引数 musigma および p によって設定されます。

  • 関数 fitgmdist を使用して gmdistribution オブジェクトをデータに当てはめた場合、このプロパティは fitgmdist の入力引数 k によって設定されます。

データ型: single | double

この プロパティ は読み取り専用です。

多変量ガウス分布の成分に含まれている変数の個数 m、正の整数を指定します。

  • 関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは gmdistribution の入力引数 musigma および p によって設定されます。

  • 関数 fitgmdist を使用して gmdistribution オブジェクトをデータに当てはめた場合、このプロパティは fitgmdist の入力データ X によって設定されます。

データ型: double

この プロパティ は読み取り専用です。

共分散行列が混合成分間で共有されているかどうかを示すフラグ。true または false を指定します。

  • 関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、このプロパティは gmdistribution の入力引数 sigma における共分散行列のタイプによって設定されます。

  • 関数 fitgmdist を使用して gmdistribution オブジェクトをデータに当てはめた場合、このプロパティは fitgmdist の名前と値のペアの引数 'SharedCovariance' によって設定されます。

データ型: logical

当てはめたオブジェクトのプロパティ

以下のプロパティは、fitgmdist で作成して当てはめたオブジェクトのみに適用されます。関数 gmdistribution を使用して gmdistribution オブジェクトを作成した場合、これらのプロパティの値は空になります。

この プロパティ は読み取り専用です。

赤池情報量基準 (AIC)。スカラーを指定します。AIC = 2*NlogL + 2*pNlogL は負の対数尤度 (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

オブジェクト関数

cdf混合ガウス分布の累積分布関数
cluster混合ガウス分布からクラスターを作成
mahal混合ガウス成分に対するマハラノビス距離
pdf混合ガウス分布に対する確率密度関数
posterior混合ガウス成分の事後確率
random混合ガウス分布による確率変量

すべて折りたたむ

関数 gmdistribution を使用して、2 成分の二変量混合ガウス分布を作成します。

2 つの二変量混合ガウス成分の分布パラメーター (平均と共分散) を定義します。

mu = [1 2;-3 -5];
sigma = cat(3,[2 .5],[1 1]) % 1-by-2-by-2 array
sigma = 
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 オブジェクトには、当てはめたオブジェクトのみに適用されるプロパティがあります。当てはめたオブジェクトのプロパティは、AICBICConvergedNegativeLogLikelihoodNumIterationsProbabilityTolerance および RegularizationValue です。関数 gmdistribution を使用し分布パラメーターを指定することによりオブジェクトを作成した場合、当てはめたオブジェクトのプロパティの値は空になります。たとえば、ドット表記を使用して NegativeLogLikelihood プロパティにアクセスします。

gm.NegativeLogLikelihood
ans =

     []

gmdistribution オブジェクトを作成後、そのオブジェクト関数を使用できます。累積分布関数 (cdf) と確率密度関数 (pdf) の値を計算するには、cdfpdf を使用します。ランダムなベクトルを生成するには random を使用します。クラスター分析には clustermahalposterior を使用します。

pdffsurf を使用してオブジェクトを可視化します。

gmPDF = @(x,y) arrayfun(@(x0,y0) pdf(gm,[x0 y0]),x,y);
fsurf(gmPDF,[-10 10])

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

関数 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) の値を計算するには、cdfpdf を使用します。確率変量を生成するには、randomを使用します。クラスター分析には clustermahalposterior を使用します。

scatterを使用して、X をプロットします。当てはめられたモデル gmpdffcontour を使用して可視化します。

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])

Figure contains an axes object. The axes object contains 2 objects of type scatter, functioncontour.

参照

[1] McLachlan, G., and D. Peel. Finite Mixture Models. Hoboken, NJ: John Wiley & Sons, Inc., 2000.

バージョン履歴

R2007b で導入