Кластерные данные смеси Гауссов с помощью жесткой кластеризации

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

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

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

Симулируйте данные из смеси двух двухмерных Гауссовых распределений с помощью 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')

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

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

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

Figure contains an axes. The axes with title Scatter Plot and Fitted GMM Contour contains 2 objects of type scatter, functioncontour.

Группируйте данные с помощью встроенного 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')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Cluster 1, Cluster 2.

Каждый кластер соответствует одному из двухмерных нормальных компонентов в распределении смеси. 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')

Figure contains an axes. The axes with title Scatter Plot and Cluster 1 Posterior Probabilities contains 2 objects of type scatter. These objects represent Cluster 1, Cluster 2.

P является n-by-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

Figure contains an axes. The axes with title New Data Cluster Assignments contains 3 objects of type functioncontour, line. These objects represent Fitted GMM Contour, Cluster 1, Cluster 2.

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

См. также

| | | |

Похожие темы