Кластерные гауссовы данные о смеси Используя трудную кластеризацию

В этом примере показано, как реализовать трудно кластеризацию на симулированных данных из смеси Распределений Гаусса.

Смешанные гауссовские модели могут использоваться в кластеризации данных путем понимания, что многомерные нормальные компоненты подобранной модели могут представлять кластеры.

Симулируйте данные из смеси распределений Гаусса

Симулируйте данные из смеси двух двумерных Распределений Гаусса с помощью mvnrnd.

rng('default')  % For reproducibility
mu1 = [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')

Соответствуйте симулированным данным к смешанной гауссовской модели

Соответствуйте двухкомпонентной смешанной гауссовской модели (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

Постройте предполагаемые контуры плотности вероятности для двухкомпонентного распределения смеси. Два двумерных нормальных перекрытия компонентов, но их peaks отличны. Это предполагает, что данные могли обоснованно быть разделены на два кластера.

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

Кластеризируйте данные Используя подходящий GMM

cluster реализации "трудно кластеризация", метод, который присваивает каждую точку данных точно одному кластеру. Для GMM, cluster присвоения каждая точка к одному из двух компонентов смеси в GMM. Центр каждого кластера является соответствующим средним значением компонента смеси. Для получения дополнительной информации на "мягкой кластеризации", смотрите, что Кластерные Гауссовы Данные о Смеси Используют Мягкую Кластеризацию.

Разделите данные в кластеры путем передачи подходящего GMM и данных к cluster.

idx = cluster(gm,X);
cluster1 = (idx == 1); % |1| for cluster 1 membership
cluster2 = (idx == 2); % |2| for cluster 2 membership

figure
gscatter(X(:,1),X(:,2),idx,'rb','+o')
legend('Cluster 1','Cluster 2','Location','best')

Каждый кластер соответствует одному из двумерных нормальных компонентов в распределении смеси. cluster данные о присвоениях к кластерам на основе кластерного счета членства. Каждые кластерные баллы членства являются предполагаемой апостериорной вероятностью, что точка данных прибыла из соответствующего компонента. cluster присвоения каждая точка к соответствию компонента смеси самой высокой апостериорной вероятности.

Можно оценить кластерные апостериорные вероятности членства путем передачи подходящего GMM и данных к также:

  • posterior

  • cluster, и запросите возвратить третий выходной аргумент

Оцените кластерные апостериорные вероятности членства

Оцените и постройте апостериорную вероятность первого компонента для каждой точки.

P = posterior(gm,X); 

figure
scatter(X(cluster1,1),X(cluster1,2),10,P(cluster1,1),'+')
hold on
scatter(X(cluster2,1),X(cluster2,2),10,P(cluster2,1),'o')
hold off
clrmap = 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')

P n- 2 матрицы кластерных апостериорных вероятностей членства. Первый столбец содержит вероятности для кластера 1, и второй столбец соответствует кластеру 2.

Присвойте новые данные кластерам

Можно также использовать cluster метод, чтобы присвоить новые точки данных компонентам смеси, найденным в исходных данных.

Симулируйте новые данные из смеси Распределений Гаусса. Вместо того, чтобы использовать mvnrnd, можно создать GMM с истинными средними значениями компонента смеси и стандартными отклонениями с помощью gmdistribution, и затем передайте GMM random симулировать данные.

Mu = [mu1; mu2]; 
Sigma = cat(3,sigma1,sigma2); 
p = [0.75 0.25]; % Mixing proportions

gmTrue = gmdistribution(Mu,Sigma,p);
X0 = random(gmTrue,75);

Присвойте кластеры новым данным передачей подходящий GMM (gm) и новые данные к cluster. Запросите кластерные апостериорные вероятности членства.

[idx0,~,P0] = cluster(gm,X0);

figure
fcontour(gmPDF,[min(X0(:,1)) max(X0(:,1)) min(X0(:,2)) max(X0(:,2))])
hold on
gscatter(X0(:,1),X0(:,2),idx0,'rb','+o')
legend('Fitted GMM Contour','Cluster 1','Cluster 2','Location','best')
title('New Data Cluster Assignments')
hold off

Для cluster обеспечить значимые результаты при кластеризации новых данных, X0 должен прибыть из того же населения как X, исходные данные раньше создавали распределение смеси. В частности, при вычислении апостериорных вероятностей для X0, cluster и posterior используйте предполагаемые вероятности смешивания.

Смотрите также

| | | |

Похожие темы