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

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

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

  1. Присвойте счет принадлежности кластера каждой точке данных, которая описывает, как каждая точка похожа на архетип каждого кластера. Для смеси Гауссовых распределений архетип кластера является соответствующим средним компонентом, и компонентом может быть оцененная апостериорная вероятность принадлежности к кластеру.

  2. Оцените точки по счету членства в кластере.

  3. Смотрите счета и определите членство в кластере.

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

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

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

rng(0,'twister')  % 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)];

Подбор двухкомпонентной Смешанной гауссовской модели (GMM). Поскольку существует два компонента, предположим, что любая точка данных с апостериорными вероятностями принадлежности кластера в интервале [0,4,0,6] может быть представителем обоих кластеров.

gm = fitgmdist(X,2);
threshold = [0.4 0.6];

Оцените апостериорные вероятности членов компонента для всех точек данных с помощью установленного GMM- gm. Они представляют счета членства в кластере.

P = posterior(gm,X);

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

n = size(X,1);
[~,order] = sort(P(:,1));

figure
plot(1:n,P(order,1),'r-',1:n,P(order,2),'b-')
legend({'Cluster 1', 'Cluster 2'})
ylabel('Cluster Membership Score')
xlabel('Point Ranking')
title('GMM with Full Unshared Covariances')

Figure contains an axes. The axes with title GMM with Full Unshared Covariances contains 2 objects of type line. These objects represent Cluster 1, Cluster 2.

Хотя четкое разделение трудно увидеть в график поля точек данных, графическое изображение счетов принадлежности указывает, что подобранное распределение делает хорошую работу по разделению данных на группы.

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

idx = cluster(gm,X);
idxBoth = find(P(:,1)>=threshold(1) & P(:,1)<=threshold(2)); 
numInBoth = numel(idxBoth)
numInBoth = 7
figure
gscatter(X(:,1),X(:,2),idx,'rb','+o',5)
hold on
plot(X(idxBoth,1),X(idxBoth,2),'ko','MarkerSize',10)
legend({'Cluster 1','Cluster 2','Both Clusters'},'Location','SouthEast')
title('Scatter Plot - GMM with Full Unshared Covariances')
hold off

Figure contains an axes. The axes with title Scatter Plot - GMM with Full Unshared Covariances contains 3 objects of type line. These objects represent Cluster 1, Cluster 2, Both Clusters.

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

Мягкая кластеризация с использованием GMM похожа на нечеткую k-средних значений кластеризацию, которая также присваивает каждую точку каждому кластеру с счетом принадлежности. Алгоритм нечетких k-средних значений принимает, что кластеры имеют приблизительно сферическую форму и все примерно равный размер. Это сопоставимо с распределением Гауссова смеси с одной матрицей ковариации, которая разделяется между всеми компонентами и является произведением матрицы тождеств. Напротив, gmdistribution позволяет вам задать различные ковариационные структуры. По умолчанию необходимо оценить отдельную, без ограничений ковариационную матрицу для каждого компонента. Более ограниченной опцией, ближе к k-средних значений, является оценка общей диагональной ковариационной матрицы.

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

gmSharedDiag = fitgmdist(X,2,'CovType','Diagonal','SharedCovariance',true');

Оцените апостериорные вероятности членов компонента для всех точек данных с помощью установленного GMM- gmSharedDiag. Вычислите назначения мягких кластеров.

[idxSharedDiag,~,PSharedDiag] = cluster(gmSharedDiag,X);
idxBothSharedDiag = find(PSharedDiag(:,1)>=threshold(1) & ...
    PSharedDiag(:,1)<=threshold(2)); 
numInBoth = numel(idxBothSharedDiag)
numInBoth = 5

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

Для каждого кластера:

  1. Оцените счета за членство для всех точек данных.

  2. Постройте график принадлежности каждой точки данных счетов относительно ее рейтинга относительно всех других точек данных.

[~,orderSharedDiag] = sort(PSharedDiag(:,1));

figure
plot(1:n,PSharedDiag(orderSharedDiag,1),'r-',...
    1:n,PSharedDiag(orderSharedDiag,2),'b-')
legend({'Cluster 1' 'Cluster 2'},'Location','NorthEast')
ylabel('Cluster Membership Score')
xlabel('Point Ranking')
title('GMM with Shared Diagonal Component Covariances')

Figure contains an axes. The axes with title GMM with Shared Diagonal Component Covariances contains 2 objects of type line. These objects represent Cluster 1, Cluster 2.

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

figure
gscatter(X(:,1),X(:,2),idxSharedDiag,'rb','+o',5)
hold on
plot(X(idxBothSharedDiag,1),X(idxBothSharedDiag,2),'ko','MarkerSize',10)
legend({'Cluster 1','Cluster 2','Both Clusters'},'Location','SouthEast')
title('Scatter Plot - GMM with Shared Diagonal Component Covariances')
hold off

Figure contains an axes. The axes with title Scatter Plot - GMM with Shared Diagonal Component Covariances contains 3 objects of type line. These objects represent Cluster 1, Cluster 2, Both Clusters.

См. также

| |

Похожие темы