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

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

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];

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

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')

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

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

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

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

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

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

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

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

[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')

Отобразите данные на графике и идентифицируйте трудные, кластеризирующиеся присвоения от анализа 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

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

| |

Похожие темы