Эта тема обеспечивает введение в кластеризацию со смешанной гауссовской моделью (GMM) с помощью функции Statistics and Machine Learning Toolbox™ cluster
, и пример, который показывает эффекты определения дополнительных параметров, подбирая модель GMM с помощью fitgmdist
.
Смешанные гауссовские модели (GMMs) часто используются в кластеризации данных. Можно использовать GMMs, чтобы выполнить или трудно кластеризацию или мягкую кластеризацию на данных о запросе.
Чтобы выполнить трудно кластеризацию, присвоения GMM запрашивают точки данных к многомерным нормальным компонентам, которые максимизируют апостериорную вероятность компонента, учитывая данные. Таким образом, учитывая подходящий GMM, cluster
присвоения запрашивают данные к компоненту, дающему к самой высокой апостериорной вероятности. Трудно кластеризирующиеся присвоения точка данных точно к одному кластеру. Для примера, показывающего, как соответствовать GMM к данным, кластер с помощью подобранной модели, и оценить апостериорные вероятности компонента, смотрите, что Кластерные Гауссовы Данные о Смеси Используют Трудно Кластеризацию.
Кроме того, можно использовать GMM, чтобы выполнить более гибкую кластеризацию на данных, называемых мягкой (или нечеткий) кластеризация. Мягкие методы кластеризации присваивают счет точке данных для каждого кластера. Значение счета указывает на силу ассоциации точки данных к кластеру. В противоположность твердым методам кластеризации мягкие методы кластеризации гибки, потому что они могут присвоить точку данных больше чем одному кластеру. Когда вы выполняете кластеризацию GMM, счет является апостериорной вероятностью. Для примера мягкой кластеризации с GMM смотрите, что Кластерные Гауссовы Данные о Смеси Используют Мягкую Кластеризацию.
Кластеризация GMM может разместить кластеры, которые имеют различные размеры и структуры корреляции в них. Поэтому в определенных приложениях, кластеризация GMM может быть более соответствующей, чем методы, такие как кластеризация k-средних значений. Как много методов кластеризации, кластеризация GMM требует, чтобы вы задали количество кластеров прежде, чем подбирать модель. Количество кластеров задает количество компонентов в GMM.
Для GMMs примените эти лучшые методы:
Рассмотрите структуру ковариации компонента. Можно задать диагональные или полные ковариационные матрицы, и имеют ли все компоненты ту же ковариационную матрицу.
Задайте начальные условия. Алгоритм Максимизации ожидания (EM) соответствует GMM. Как в k-средних значений, кластеризирующих алгоритм, EM чувствителен к начальным условиям и может сходиться к локальному оптимуму. Можно задать собственные начальные значения для параметров, задать начальные кластерные присвоения для точек данных или позволить им быть выбранными случайным образом или задать использование k-средних значений ++ алгоритм.
Реализуйте регуляризацию. Например, если у вас есть больше предикторов, чем точки данных, затем можно упорядочить для устойчивости оценки.
Этот пример исследует эффекты определения различных вариантов для структуры ковариации и начальных условий, когда вы выполняете кластеризацию GMM.
Загрузите ирисовый набор данных Фишера. Рассмотрите кластеризацию измерений чашелистика и визуализируйте данные в 2D использовании измерений чашелистика.
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 и 1 000 максимальных итераций для алгоритма 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);
Создайте 2D сетку, покрывающую плоскость, состоявшую из экстремальных значений измерений. Вы будете использовать эту сетку позже, чтобы чертить эллипсоиды доверия по кластерам.
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, чтобы кластеризировать 2D сетку.
Получите счет, который задает 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 к данным, может быть чувствителен к начальным условиям. Чтобы проиллюстрировать эту чувствительность, соответствуйте четырем различным GMMs можно следующим образом:
Для первого 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 путем сравнения информационных критериев. Два популярных информационных критерия являются Критерием информации о Akaike (AIC) и Байесовым информационным критерием (BIC).
И AIC и BIC берут оптимизированную, отрицательную логарифмическую правдоподобность и затем штрафуют ее с количеством параметров в модели (сложность модели). Однако BIC штрафует за сложность более сильно, чем AIC. Поэтому AIC имеет тенденцию выбирать более сложные модели, которые могут сверхсоответствовать, и BIC имеет тенденцию выбирать более простые модели, которые могут underfit. Хорошая практика должна посмотреть на оба критерия при оценке модели. Более низкий AIC или значения BIC указывают лучше на подбирающие модели. Кроме того, гарантируйте, что ваш выбор для k и структуры ковариационной матрицы подходит для вашего приложения. fitgmdist
хранит AIC и BIC подходящего gmdistribution
объекты модели в свойствах AIC и BIC. Можно получить доступ к этим свойствам при помощи записи через точку. Для примера, показывающего, как выбрать соответствующие параметры, смотрите смешанные гауссовские модели Мелодии.
cluster
| fitgmdist
| gmdistribution