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

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

Как Гауссовская смесь моделирует данные кластера

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

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

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

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

Применительно к ГММ примените следующие лучшие практики:

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

  • Задайте начальные условия. Алгоритм Ожидания-Максимизации (EM) подходит для GMM. Как и в k-средних значений алгоритме кластеризации, EM чувствителен к начальным условиям и может сходиться к локальному оптимуму. Можно задать свои собственные стартовые значения для параметров, задать начальные назначения кластеров для точек данных или позволить их выбрать случайным образом, или задать использование алгоритма 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. Для воспроизводимости установите случайный seed.

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-средних значений + +, чтобы получить начальные центры кластера.

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 берут оптимизированную, отрицательную логарифмическую правдоподобность и затем штрафуют его с количеством параметров в модели (сложность модели). Однако БИК наказывает за сложность более сурово, чем АПК. Поэтому AIC, как правило, выбирает более сложные модели, которые могут перегружаться, и BIC, как правило, выбирает более простые модели, которые могут подгружаться. Хорошей практикой является изучение обоих критериев при оценке модели. Более низкие значения AIC или BIC указывают на лучшую аппроксимацию моделей. Кроме того, убедитесь, что ваш выбор k и ковариация матрицы подходят для вашего приложения. fitgmdist сохраняет AIC и BIC установленных gmdistribution моделировать объекты в свойствах AIC и BIC. Вы можете получить доступ к этим свойствам с помощью записи через точку. Пример, показывающий, как выбрать соответствующие параметры, см. в разделе Настройка Смешанных гауссовских моделей.

См. также

| |

Похожие темы