Эта тема содержит введение в кластеризацию с Смешанной гауссовской моделью (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.
Загрузите набор данных радужки Фишера. Рассмотрите кластеризацию измерений сепаля и визуализируйте данные в 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)');
Количество компонентов 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
Порог вероятности для доверительной области определяет длину большой и малой осей, а ковариационный тип определяет ориентацию осей. Обратите внимание на следующие опции для ковариационных матриц:
Диагональные ковариационные матрицы указывают, что предикторы некоррелированы. Большая и малая оси эллипсов параллельны или перпендикулярны осям x и y. Эта спецификация увеличивает общее количество параметров на , количество предикторов для каждого компонента, но более скупо, чем полная ковариационная спецификация.
Полные ковариационные матрицы допускают коррелированные предикторы без ограничений на ориентацию эллипсов относительно осей X и Y. Каждый компонент увеличивает общее количество параметров на , но захватывает структуру корреляции среди предикторов. Эта спецификация может привести к сверхподбору кривой.
Общие ковариационные матрицы указывают, что все компоненты имеют одинаковую ковариационную матрицу. Все эллипсы имеют одинаковый размер и одинаковую ориентацию. Эта спецификация является более скупой, чем незащищенная спецификация, потому что общее количество параметров увеличивается на количество ковариационных параметров только для одного компонента.
Необрезанные ковариационные матрицы указывают, что каждый компонент имеет свою собственную ковариационную матрицу. Размер и ориентация всех эллипсов могут различаться. Эта спецификация увеличивает количество параметров в k раз больше количества ковариационных параметров для компонента, но может захватывать ковариационные различия среди компонентов.
Рисунок также показывает, что cluster
не всегда сохраняет порядок кластеров. Если вы кластеризуете несколько установленных gmdistribution
модели, cluster
может назначать различные метки кластеров для одинаковых компонентов.
Задайте различные начальные условия
Алгоритм, который подходит GMM к данным, может быть чувствительным к начальным условиям. Чтобы проиллюстрировать эту чувствительность, подбирайте четыре различных GMM следующим образом:
Для первого GMM назначьте большинство точек данных первому кластеру.
Для второго GMM случайным образом присвойте точки данных кластерам.
Для третьего GMM выполните еще одно случайное назначение точек данных кластерам.
Для четвертой 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
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. Вы можете получить доступ к этим свойствам с помощью записи через точку. Пример, показывающий, как выбрать соответствующие параметры, см. в разделе Настройка Смешанных гауссовских моделей.
cluster
| fitgmdist
| gmdistribution