Main Content

gmdistribution

가우스 혼합 모델 생성

설명

gmdistribution 객체는 다변량 가우스 분포 성분으로 구성된 다변량 분포인 가우스 혼합 분포(가우스 혼합 모델 또는 GMM이라고도 함)를 저장합니다. 각 성분은 자체의 평균과 공분산으로 정의됩니다. 혼합은 혼합 비율로 구성된 벡터로 정의됩니다. 여기서 각 혼합 비율은 해당 성분을 설명하는 모집단 비율입니다.

생성

다음 두 가지 방법으로 gmdistribution 모델 객체를 생성할 수 있습니다.

  • 여기서 다루는 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×m×k 배열sigma(:,:,i)는 성분 i의 공분산 행렬입니다.
1×m×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 객체를 생성하면 gmdistributionmu 입력 인수가 이 속성을 설정합니다.

  • fitgmdist 함수를 사용하여 gmdistribution 객체를 데이터에 피팅하면 fitgmdist가 이 속성의 값을 설정합니다.

데이터형: single | double

읽기 전용 속성입니다.

다변량 가우스 분포 성분의 공분산으로, 숫자형 벡터, 행렬 또는 배열로 지정됩니다.

k가 성분의 개수이고 m이 각 성분에 포함된 변수의 개수라고 가정할 경우 Sigma는 다음 표에 나와 있는 값 중 하나입니다.

설명
m×m×k 배열Sigma(:,:,i)는 성분 i의 공분산 행렬입니다.
1×m×k 배열공분산 행렬이 대각 행렬이 됩니다. Sigma(1,:,i)는 성분 i의 공분산 행렬의 대각선 요소를 포함합니다.
m×m 행렬모든 성분에 대한 공분산 행렬이 같습니다.
1×m 벡터모든 성분에 대해 공분산 행렬이 같으며, 공분산 행렬은 대각 행렬입니다.

  • gmdistribution 함수를 사용하여 gmdistribution 객체를 생성하면 gmdistributionsigma 입력 인수가 이 속성을 설정합니다.

  • fitgmdist 함수를 사용하여 gmdistribution 객체를 데이터에 피팅하면 fitgmdist가 이 속성의 값을 설정합니다.

데이터형: single | double

읽기 전용 속성입니다.

혼합 성분의 혼합 비율로, 1×k 숫자형 벡터로 지정됩니다.

  • gmdistribution 함수를 사용하여 gmdistribution 객체를 생성하면 gmdistributionp 입력 인수가 이 속성을 설정합니다.

  • fitgmdist 함수를 사용하여 gmdistribution 객체를 데이터에 피팅하면 fitgmdist가 이 속성의 값을 설정합니다.

데이터형: single | double

분포 특징

읽기 전용 속성입니다.

공분산 행렬 유형으로, 'diagonal' 또는 'full'로 지정됩니다.

  • gmdistribution 함수를 사용하여 gmdistribution 객체를 생성하면 gmdistributionsigma 입력 인수에 포함된 공분산 행렬의 유형에 따라 이 속성이 설정됩니다.

  • fitgmdist 함수를 사용하여 gmdistribution 객체를 데이터에 피팅하면 fitgmdist'CovarianceType' 이름-값 쌍의 인수에 따라 이 속성이 설정됩니다.

읽기 전용 속성입니다.

분포 이름으로, 'gaussian mixture distribution'으로 지정됩니다.

읽기 전용 속성입니다.

혼합 성분의 개수(k)로, 양의 정수로 지정됩니다.

  • gmdistribution 함수를 사용하여 gmdistribution 객체를 생성하면 gmdistribution의 입력 인수 mu, sigma, p가 이 속성을 설정합니다.

  • fitgmdist 함수를 사용하여 gmdistribution 객체를 데이터에 피팅하면 fitgmdistk 입력 인수가 이 속성을 설정합니다.

데이터형: single | double

읽기 전용 속성입니다.

다변량 가우스 분포 성분에 포함된 변수의 개수 m으로, 양의 정수로 지정됩니다.

  • gmdistribution 함수를 사용하여 gmdistribution 객체를 생성하면 gmdistribution의 입력 인수 mu, sigma, p가 이 속성을 설정합니다.

  • fitgmdist 함수를 사용하여 gmdistribution 객체를 데이터에 피팅하면 fitgmdistX 입력 데이터가 이 속성을 설정합니다.

데이터형: double

읽기 전용 속성입니다.

공분산 행렬이 혼합 성분 간에 공유되는지 여부를 나타내는 플래그로, true 또는 false로 지정됩니다.

  • gmdistribution 함수를 사용하여 gmdistribution 객체를 생성하면 gmdistributionsigma 입력 인수에 포함된 공분산 행렬의 유형에 따라 이 속성이 설정됩니다.

  • 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

객체 함수

cdf가우스 혼합 분포에 대한 누적 분포 함수
clusterConstruct clusters from Gaussian mixture distribution
mahalMahalanobis distance to Gaussian mixture component
pdf가우스 혼합 분포에 대한 확률 밀도 함수
posteriorPosterior probability of Gaussian mixture component
random가우스 혼합 분포의 확률 변량

예제

모두 축소

gmdistribution 함수를 사용하여 두 개의 성분을 갖는 이변량 가우스 혼합 분포를 생성합니다.

두 개의 이변량 가우스 혼합 성분으로 구성된 분포 모수(평균 및 공분산)를 정의합니다.

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 함수는 세 번째 배열 차원을 따라 공분산을 결합합니다. 정의된 공분산 행렬은 대각 행렬입니다. 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, ProbabilityToleranceRegularizationValue입니다. gmdistribution 함수를 사용하고 분포 모수를 지정하여 객체를 생성하는 경우 피팅된 객체 속성의 값은 비어 있습니다. 예를 들어, 점 표기법을 사용하여 NegativeLogLikelihood 속성에 액세스해 보십시오.

gm.NegativeLogLikelihood
ans =

     []

gmdistribution 객체를 생성한 후에는 객체 함수를 사용할 수 있습니다. 누적 분포 함수(cdf) 및 확률 밀도 함수(pdf)의 값을 계산하려면 cdfpdf를 사용하십시오. 확률 벡터를 생성하려면 random을 사용하십시오. 군집 분석을 수행하려면 cluster, mahal, posterior를 사용하십시오.

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 함수를 사용하여 두 개의 혼합된 이변량 가우스 분포를 따르는 확률 변량을 생성합니다. fitgmdist 함수를 사용하여 가우스 혼합 모델(GMM)을 생성된 데이터에 피팅합니다.

두 개의 이변량 가우스 혼합 성분으로 구성된 분포 모수(평균 및 공분산)를 정의합니다.

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

각 성분에서 같은 개수의 확률 변량을 생성하여 이 두 확률 변량 집합을 결합합니다.

rng('default') % For reproducibility
r1 = mvnrnd(mu1,sigma1,1000);
r2 = mvnrnd(mu2,sigma2,1000);
X = [r1; r2];

결합된 데이터 세트 X에는 두 개의 혼합된 이변량 가우스 분포를 따르는 확률 변량이 있습니다.

두 개의 성분을 갖는 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을 사용하십시오. 군집 분석을 수행하려면 cluster, mahal, posterior를 사용하십시오.

scatter를 사용하여 X를 플로팅합니다. pdffcontour를 사용하여 피팅된 모델 gm을 시각화합니다.

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에 개발됨