exponenta event banner

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

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

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

Моделирование данных из смеси гауссовых распределений

Моделирование данных из смеси двух двумерных гауссовых распределений с использованием 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

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

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-на-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 использовать расчетные вероятности смешения.

См. также

| | | |

Связанные темы