exponenta event banner

Кластер с использованием гауссовой модели смеси

В этом разделе приводится введение в кластеризацию с использованием гауссовой модели смешения (GMM) с использованием функции Toolbox™ статистики и машинного обучения clusterи пример, показывающий эффекты задания дополнительных параметров при подборе модели GMM с помощью fitgmdist.

Как гауссовы модели смесей кластерные данные

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

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

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

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

Для GMM выполните следующие рекомендации:

  • Рассмотрим структуру ковариации компонента. Можно указать диагональные или полные ковариационные матрицы, а также, имеют ли все компоненты одинаковую ковариационную матрицу.

  • Укажите начальные условия. Алгоритм ожидания-максимизации (EM) соответствует GMM. Как и в алгоритме кластеризации k-средств, ЕМ чувствителен к начальным условиям и может сходиться к локальному оптимуму. Можно указать собственные начальные значения параметров, указать начальные назначения кластера для точек данных или разрешить их случайный выбор, или указать использование алгоритма k-means + +.

  • Осуществление упорядочения. Например, если предикторов больше, чем точек данных, то можно упорядочить стабильность оценки.

Подогнать GMM с различными опциями ковариации и начальными условиями

В этом примере рассматриваются эффекты задания различных опций для структуры ковариации и начальных условий при выполнении кластеризации GMM.

Загрузите набор данных радужки Фишера. Рассмотрите возможность кластеризации измерений чашелистики и визуализируйте данные в 2-D с помощью измерений чашелистики.

load fisheriris;
X = meas(:,1:2);
[n,p] = size(X);

plot(X(:,1),X(:,2),'.','MarkerSize',15);
title('Fisher''s Iris Data Set');
xlabel('Sepal length (cm)');
ylabel('Sepal width (cm)');

Figure contains an axes. The axes with title Fisher's Iris Data Set contains an object of type line.

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

Задать различные параметры ковариационной структуры

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

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

rng(3);
k = 3; % Number of GMM components
options = statset('MaxIter',1000);

Задайте параметры ковариационной структуры.

Sigma = {'diagonal','full'}; % Options for covariance matrix type
nSigma = numel(Sigma);

SharedCovariance = {true,false}; % Indicator for identical or nonidentical covariance matrices
SCtext = {'true','false'};
nSC = numel(SharedCovariance);

Создайте сетку 2-D, покрывающую плоскость, состоящую из крайних значений измерений. Эта сетка будет использоваться позже, чтобы нарисовать доверительные эллипсоиды над кластерами.

d = 500; % Grid length
x1 = linspace(min(X(:,1))-2, max(X(:,1))+2, d);
x2 = linspace(min(X(:,2))-2, max(X(:,2))+2, d);
[x1grid,x2grid] = meshgrid(x1,x2);
X0 = [x1grid(:) x2grid(:)];

Укажите следующее:

  • Для всех комбинаций опций ковариационной структуры установите GMM с тремя компонентами.

  • Используйте встроенный GMM для кластеризации сетки 2-D.

  • Получите оценку, которая задает 99% порог вероятности для каждой доверительной области. Эта спецификация определяет длину большой и малой осей эллипсоидов.

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

threshold = sqrt(chi2inv(0.99,2));
count = 1;
for i = 1:nSigma
    for j = 1:nSC
        gmfit = fitgmdist(X,k,'CovarianceType',Sigma{i}, ...
            'SharedCovariance',SharedCovariance{j},'Options',options); % Fitted GMM
        clusterX = cluster(gmfit,X); % Cluster index 
        mahalDist = mahal(gmfit,X0); % Distance from each grid point to each GMM component
        % Draw ellipsoids over each GMM component and show clustering result.
        subplot(2,2,count);
        h1 = gscatter(X(:,1),X(:,2),clusterX);
        hold on
            for m = 1:k
                idx = mahalDist(:,m)<=threshold;
                Color = h1(m).Color*0.75 - 0.5*(h1(m).Color - 1);
                h2 = plot(X0(idx,1),X0(idx,2),'.','Color',Color,'MarkerSize',1);
                uistack(h2,'bottom');
            end    
        plot(gmfit.mu(:,1),gmfit.mu(:,2),'kx','LineWidth',2,'MarkerSize',10)
        title(sprintf('Sigma is %s\nSharedCovariance = %s',Sigma{i},SCtext{j}),'FontSize',8)
        legend(h1,{'1','2','3'})
        hold off
        count = count + 1;
    end
end

Figure contains 4 axes. Axes 1 with title Sigma is diagonal SharedCovariance = true contains 7 objects of type line. These objects represent 1, 2, 3. Axes 2 with title Sigma is diagonal SharedCovariance = false contains 7 objects of type line. These objects represent 1, 2, 3. Axes 3 with title Sigma is full SharedCovariance = true contains 7 objects of type line. These objects represent 1, 2, 3. Axes 4 with title Sigma is full SharedCovariance = false contains 7 objects of type line. These objects represent 1, 2, 3.

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

  • Диагональные ковариационные матрицы указывают, что предикторы некоррелированы. Большая и малая оси эллипсов параллельны или перпендикулярны осям x и y. Эта спецификация увеличивает общее количество параметров на p, количество предикторов, для каждого компонента, но более разборчива, чем полная спецификация ковариации.

  • Матрицы полной ковариации допускают коррелированные предикторы без ограничения ориентации эллипсов относительно осей x и y. Каждый компонент увеличивает общее количество параметров на p (p + 1 )/2, но захватывает корреляционную структуру среди предикторов. Эта спецификация может привести к переоборудованию.

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

  • Неразделенные ковариационные матрицы указывают, что каждый компонент имеет свою ковариационную матрицу. Размер и ориентация всех эллипсов могут различаться. Эта спецификация увеличивает число параметров в k раз число ковариационных параметров для компонента, но может улавливать ковариационные различия между компонентами.

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

Укажите другие начальные условия

Алгоритм, который соответствует GMM данным, может быть чувствительным к начальным условиям. Чтобы проиллюстрировать эту чувствительность, установите четыре различных GMM следующим образом:

  1. Для первого GMM назначьте большинство точек данных первому кластеру.

  2. Для второго GMM случайным образом назначьте точки данных кластерам.

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

  4. Для четвертого GMM используйте k-means + + для получения начальных центров кластеров.

initialCond1 = [ones(n-8,1); [2; 2; 2; 2]; [3; 3; 3; 3]]; % For the first GMM
initialCond2 = randsample(1:k,n,true); % For the second GMM
initialCond3 = randsample(1:k,n,true); % For the third GMM
initialCond4 = 'plus'; % For the fourth GMM
cluster0 = {initialCond1; initialCond2; initialCond3; initialCond4};

Для всех экземпляров используйте k = 3 компоненты, неразделенные и полные ковариационные матрицы, одинаковые начальные пропорции смеси и одинаковые начальные ковариационные матрицы. Для стабильности при попытке использования различных наборов исходных значений увеличьте число итераций алгоритма EM. Также нарисуйте доверительные эллипсоиды над кластерами.

converged = nan(4,1);

for j = 1:4
    gmfit = fitgmdist(X,k,'CovarianceType','full', ...
        'SharedCovariance',false,'Start',cluster0{j}, ...
        'Options',options);
    clusterX = cluster(gmfit,X); % Cluster index 
    mahalDist = mahal(gmfit,X0); % Distance from each grid point to each GMM component
    % Draw ellipsoids over each GMM component and show clustering result.
    subplot(2,2,j);
    h1 = gscatter(X(:,1),X(:,2),clusterX); % Distance from each grid point to each GMM component
    hold on;
    nK = numel(unique(clusterX));
    for m = 1:nK
        idx = mahalDist(:,m)<=threshold;
        Color = h1(m).Color*0.75 + -0.5*(h1(m).Color - 1);
        h2 = plot(X0(idx,1),X0(idx,2),'.','Color',Color,'MarkerSize',1);
        uistack(h2,'bottom');
    end
	plot(gmfit.mu(:,1),gmfit.mu(:,2),'kx','LineWidth',2,'MarkerSize',10)
    legend(h1,{'1','2','3'});
    hold off
    converged(j) = gmfit.Converged; % Indicator for convergence
end

Figure contains 4 axes. Axes 1 contains 7 objects of type line. These objects represent 1, 2, 3. Axes 2 contains 7 objects of type line. These objects represent 1, 2, 3. Axes 3 contains 7 objects of type line. These objects represent 1, 2, 3. Axes 4 contains 7 objects of type line. These objects represent 1, 2, 3.

sum(converged)
ans = 4

Все алгоритмы сошлись. Каждое начальное назначение кластера для точек данных приводит к различному, подобранному назначению кластера. Можно указать положительное целое число для аргумента пары имя-значение «Replicates», который выполняет алгоритм указанное количество раз. Впоследствии, fitgmdist выбирает подгонку, которая дает наибольшую вероятность.

Когда следует упорядочить

Иногда, во время итерации алгоритма EM, подогнанная ковариационная матрица может стать плохо обусловленной, что означает, что вероятность улетучивается до бесконечности. Эта проблема может возникнуть при наличии одного или нескольких из следующих условий:

  • Предикторов больше, чем точек данных.

  • Фитинг задается со слишком большим количеством компонентов.

  • Переменные сильно коррелированы.

Чтобы преодолеть эту проблему, можно указать небольшое положительное число с помощью 'RegularizationValue' аргумент пары имя-значение. fitgmdist добавляет это число к диагональным элементам всех ковариационных матриц, что гарантирует, что все матрицы являются положительными определёнными. Регуляризация может уменьшить максимальное значение правдоподобия.

Статистика соответствия модели

В большинстве применений число компонентов k и соответствующая ковариационная структура Λ неизвестны. Одним из способов настройки GMM является сравнение информационных критериев. Два популярных информационных критерия - информационный критерий Акайке (AIC) и байесовский информационный критерий (BIC).

Как AIC, так и BIC берут оптимизированный отрицательный источник средств к существованию, а затем наказывают его количеством параметров в модели (сложность модели). Однако BIC наказывает за сложность более сурово, чем AIC. Таким образом, AIC, как правило, выбирает более сложные модели, которые могут перевыполняться, а BIC, как правило, выбирает более простые модели, которые могут недооцениваться. При оценке модели рекомендуется учитывать оба критерия. Более низкие значения AIC или BIC указывают на лучшую подгонку моделей. Кроме того, убедитесь, что ваши варианты для k и структуры ковариационной матрицы соответствуют вашему приложению. fitgmdist хранит AIC и BIC установленного gmdistribution объекты модели в свойствах AIC и BIC. Доступ к этим свойствам можно получить с помощью точечной нотации. Пример выбора соответствующих параметров см. в разделе Настройка гауссовых моделей смесей.

См. также

| |

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