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

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

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

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

Моделируйте данные из смеси двух двумерных Распределений Гаусса с помощью 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)reshape(pdf(gm,[x(:) y(:)]),size(x));
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-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

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

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

| | | |

Похожие темы