Гауссовы модели смеси (GMM) часто используются для кластеризации данных. Обычно, адаптированный кластер GMMs путем присвоения точек данных запроса многомерным нормальным компонентам, которые максимизируют апостериорную вероятность компонента, учитывая данные. Таким образом, учитывая подходящий GMM, cluster
присваивает данные о запросе компоненту, приводящему к самой высокой апостериорной вероятности. Этот метод присвоения точки данных точно к одному кластеру называется, трудно кластеризируясь. Для примера, показывающего, как соответствовать GMM к данным, кластер с помощью подобранной модели, и оценить апостериорные вероятности компонента, смотрите, что Кластерные Гауссовы Данные о Смеси Используют Трудно Кластеризацию.
Однако кластеризация GMM более гибка, потому что можно просмотреть ее как нечеткий или мягкий метод кластеризации. Мягкие методы кластеризации присваивают счет точке данных для каждого кластера. Значение счета указывает на силу ассоциации точки данных к кластеру. В противоположность твердым методам кластеризации мягкие методы кластеризации гибки в этом, они могут присвоить точку данных больше чем одному кластеру. При кластеризации с GMMs счет является апостериорной вероятностью. Для примера мягкой кластеризации с помощью GMM смотрите, что Кластерные Гауссовы Данные о Смеси Используют Мягкую Кластеризацию.
Кроме того, кластеризация GMM может разместить кластеры, которые имеют различные размеры и структуры корреляции в них. Из-за этого кластеризация GMM может быть более соответствующей, чтобы использовать, чем, например, k-средняя кластеризация.
Как большинство методов кластеризации, необходимо задать количество желаемых кластеров прежде, чем соответствовать модели. Количество кластеров задает количество компонентов в GMM. Для GMMs это - лучшая практика также рассмотреть:
Структура ковариации компонента. Можно задать диагональные или полные ковариационные матрицы, или имеют ли все компоненты ту же ковариационную матрицу.
Начальные условия. Алгоритм Максимизации ожидания (EM) соответствует GMM. Как k-средние-значения, кластеризирующие алгоритм, EM чувствителен к начальным условиям и может сходиться к локальному оптимуму. Можно задать собственные начальные значения для параметров, задать начальные кластерные присвоения для точек данных или позволить им быть случайным образом выбранными или задать, чтобы использовать k-средние-значения ++ алгоритм.
Параметр регуляризации. Если, например, у вас есть больше предикторов, чем точки данных, то можно упорядочить для устойчивости оценки.
Загрузите ирисовый набор данных Фишера. Рассмотрите кластеризацию измерений чашелистика.
load fisheriris; X = meas(:,1:2); [n,p] = size(X); rng(3); % For reproducibility figure; 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 увеличения.
Каждый компонент имеет ковариационную матрицу. Геометрически, структура ковариации определяет форму эллипсоида уверенности, дистиллируемого подгенеральная совокупность или кластер. Можно задать, являются ли ковариационные матрицы для всех компонентов диагональными или полными, или имеют ли все компоненты ту же ковариационную матрицу. Каждая комбинация спецификаций определяет форму и ориентацию эллипсоидов.
Соответствуйте GMMs к данным и исследуйте эффекты определения всех комбинаций опций структуры ковариации на форме эллипсоидов. Таким образом, задайте все комбинации аргументов пары "имя-значение" 'CovarianceType'
и 'SharedCovariance'
. Спецификации структуры ковариации применяются ко всем компонентам. Для рисунка укажите, что существует три компонента. Чертить эллипсоиды:
Используйте подходящий GMM, чтобы кластеризировать сетку, покрывающую плоскость, состоявшую из экстремальных значений измерений.
Получите счет, который задает 99%-й порог вероятности для каждой области уверенности. Эта спецификация определяет длину главных и незначительных осей эллипсоидов.
Окрасьте эллипс с помощью схожего цвета для его кластера.
k = 3; Sigma = {'diagonal','full'}; nSigma = numel(Sigma); SharedCovariance = {true,false}; SCtext = {'true','false'}; nSC = numel(SharedCovariance); d = 500; 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(:)]; threshold = sqrt(chi2inv(0.99,2)); options = statset('MaxIter',1000); % Increase number of EM iterations figure; c = 1; for i = 1:nSigma; for j = 1:nSC; gmfit = fitgmdist(X,k,'CovarianceType',Sigma{i},... 'SharedCovariance',SharedCovariance{j},'Options',options); clusterX = cluster(gmfit,X); mahalDist = mahal(gmfit,X0); subplot(2,2,c); 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, SharedCovariance = %s',... Sigma{i},SCtext{j}),'FontSize',8) legend(h1,{'1','2','3'}); hold off c = c + 1; end end
В то время как порог вероятности для области уверенности определяет длину главных и незначительных осей, тип ковариации определяет ориентацию осей.
Диагональные ковариационные матрицы указывают, что предикторы являются некоррелироваными. Главные и незначительные оси замещающих знаков параллельны или перпендикулярны осям X и Y. Эта спецификация увеличивает общее число параметров p, количеством предикторов, для каждого компонента, но более экономна, чем полная спецификация ковариации.
Полные ковариационные матрицы допускают коррелированые предикторы. Нет никакого ограничения на ориентацию замещающих знаков относительно осей X и Y. Каждый компонент увеличивает общее число параметров, но получает структуру корреляции среди предикторов. Эта спецификация может вызвать сверхподбор кривой.
Разделяемые ковариационные матрицы указывают, что все компоненты имеют ту же ковариационную матрицу. Все замещающие знаки одного размера и имеют ту же ориентацию. Эта спецификация более экономна, чем неразделенная спецификация, потому что общее количество параметров только увеличивается количеством параметров ковариации для одного компонента.
Неразделенные ковариационные матрицы указывают, что все компоненты имеют свою собственную ковариационную матрицу. Размер и ориентация всех замещающих знаков могут отличаться. Эта спецификация увеличивает число параметров к k временам количество параметров ковариации для компонента, но может получить различия в ковариации среди компонентов.
Данные также показывают, что cluster
не всегда сохраняет кластерный порядок. Таким образом, если вы кластеризируете несколько подходящих моделей gmdistribution
, cluster
может присвоить различные кластерные метки для подобных компонентов.
В большинстве приложений количество компонентов, k, и соответствующая структура ковариации, неизвестно. Одним путем можно настроиться, GMM путем сравнения информационных критериев. Два популярных информационных критерия являются Информационным критерием Акэйка (AIC) и Байесовым информационным критерием (BIC). Оба берут оптимизированную, отрицательную логарифмическую вероятность, и затем штрафуют ее с количеством параметров в модели (т.е. сложность модели). Однако BIC штрафует за сложность более сильно, чем AIC. Поэтому AIC имеет тенденцию выбирать более сложные модели, которые могут сверхсоответствовать, и BIC имеет тенденцию выбирать более простые модели, которые могут underfit. Хорошая практика должна посмотреть на оба критерия при выборе модели. Более низкий AIC или значения BIC указывают на лучшие подходящие модели. Необходимо также гарантировать, что выбор для k и структуры ковариационной матрицы подходит для приложения. fitgmdist
хранит AIC и BIC подходящих объектов модели gmdistribution
в свойствах AIC
и BIC
. Можно получить доступ к ним использующий запись через точку. Для примера при выборе соответствующих параметров смотрите Мелодию Гауссовы Модели Смеси.
Алгоритм, который соответствует GMM к данным, может быть чувствителен к начальным условиям. Чтобы проиллюстрировать это, рассмотрите подбор кривой нескольким GMMs и задайте различные начальные условия. А именно, укажите, что, первоначально, большинство точек данных принадлежит первому кластеру, двум наборам случайных, начальных присвоений, и использует k-средние-значения ++, чтобы получить начальные кластерные центры. Для всех экземпляров задайте три компонента, неразделенные и полные ковариационные матрицы, те же начальные пропорции смеси и те же начальные ковариационные матрицы. Для устойчивости, когда вы попробуете различные наборы начальных значений, увеличьте число итераций алгоритма EM.
cluster0 = {[ones(n-8,1); [2; 2; 2; 2]; [3; 3; 3; 3]];... randsample(1:k,n,true); randsample(1:k,n,true); 'plus'}; converged = nan(4,1); figure; for j = 1:4; gmfit = fitgmdist(X,k,'CovarianceType','full',... 'SharedCovariance',false,'Start',cluster0{j},... 'Options',options); clusterX = cluster(gmfit,X); mahalDist = mahal(gmfit,X0); subplot(2,2,j); h1 = gscatter(X(:,1),X(:,2),clusterX); 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; end sum(converged)
ans = 4
Все алгоритмы сходились. Каждый из различных наборов стартовых кластерных присвоений для точек данных приводит к различному, соответствовал кластерному присвоению. Можно задать положительное целое число для аргумента пары "имя-значение" 'Replicates'
, который запускает алгоритм конкретное количество раз. Впоследствии, fitgmdist
выбирает подгонку, которая приводит к самой большой вероятности.
Иногда, во время итерации EM, подходящая ковариационная матрица может заболеть обусловленная, то есть, вероятность выходит к бесконечности. Это может произойти если:
Существует больше предикторов, чем точки данных.
Вы задаете, чтобы соответствовать слишком многим компонентам.
Переменные высоко коррелируются.
Чтобы преодолеть эту проблему, можно задать маленькое, положительное число с помощью аргумента пары "имя-значение" 'Regularize'
. fitgmdist
добавляет заданное маленькое, положительное число в диагональные элементы всех ковариационных матриц, которое гарантирует, что все матрицы положительны определенный. Упорядочивание может уменьшать максимальное значение вероятности. Для получения дополнительной информации смотрите fitgmdist
.
cluster
| fitgmdist
| gmdistribution