Соответствуйте Гауссовой модели смеси к данным
GMModel = fitgmdist(X,k)
GMModel = fitgmdist(X,k,Name,Value)
возвращает Гауссову модель распределения смеси с дополнительными опциями, заданными одним или несколькими аргументами пары GMModel
= fitgmdist(X
,k
,Name,Value
)Name,Value
.
Например, можно задать значение регуляризации или тип ковариации.
Сгенерируйте данные из смеси двух двумерных Распределений Гаусса.
mu1 = [1 2];
Sigma1 = [2 0; 0 0.5];
mu2 = [-3 -5];
Sigma2 = [1 0;0 1];
rng(1); % For reproducibility
X = [mvnrnd(mu1,Sigma1,1000);mvnrnd(mu2,Sigma2,1000)];
Соответствуйте Гауссовой модели смеси. Укажите, что существует два компонента.
GMModel = fitgmdist(X,2);
Отобразите данные на графике по подходящим Гауссовым контурам модели смеси.
figure y = [zeros(1000,1);ones(1000,1)]; h = gscatter(X(:,1),X(:,2),y); hold on gmPDF = @(x1,x2)reshape(pdf(GMModel,[x1(:) x2(:)]),size(x1)); g = gca; fcontour(gmPDF,[g.XLim g.YLim]) title('{\bf Scatter Plot and Fitted Gaussian Mixture Contours}') legend(h,'Model 0','Model1') hold off
Сгенерируйте данные из смеси двух двумерных Распределений Гаусса. Создайте третий предиктор, который является суммой первых и вторых предикторов.
mu1 = [1 2];
Sigma1 = [1 0; 0 1];
mu2 = [3 4];
Sigma2 = [0.5 0; 0 0.5];
rng(3); % For reproducibility
X1 = [mvnrnd(mu1,Sigma1,100);mvnrnd(mu2,Sigma2,100)];
X = [X1,X1(:,1)+X1(:,2)];
Столбцы X
линейно зависят. Это может вызвать плохо обусловленные оценки ковариации.
Соответствуйте Гауссовой модели смеси к данным. Можно использовать операторы try
/ catch
, чтобы помочь управлять сообщениями об ошибке.
rng(1); % Reset seed for common start values try GMModel = fitgmdist(X,2) catch exception disp('There was an error fitting the Gaussian mixture model') error = exception.message end
There was an error fitting the Gaussian mixture model
error = 'Ill-conditioned covariance created at iteration 2.'
Оценки ковариации плохо обусловлены. Следовательно, остановки оптимизации и ошибка появляются.
Соответствуйте Гауссовой модели смеси снова, но используйте регуляризацию.
rng(3); % Reset seed for common start values GMModel = fitgmdist(X,2,'RegularizationValue',0.1)
GMModel = Gaussian mixture distribution with 2 components in 3 dimensions Component 1: Mixing proportion: 0.536725 Mean: 2.8831 3.9506 6.8338 Component 2: Mixing proportion: 0.463275 Mean: 0.8813 1.9758 2.8571
В этом случае алгоритм сходится к решению из-за регуляризации.
Гауссовы модели смеси требуют, чтобы вы задали много компонентов перед стать подходящим к данным. Для многих приложений может быть трудно знать соответствующее количество компонентов. Этот пример показывает, как исследовать данные и попытаться получить исходное предположение в количестве компонентов с помощью анализа главных компонентов.
Загрузите ирисовый набор данных Фишера.
load fisheriris
classes = unique(species)
classes = 3x1 cell array
{'setosa' }
{'versicolor'}
{'virginica' }
Набор данных содержит три класса ирисовых разновидностей. Анализ продолжает, как будто это неизвестно.
Используйте анализ главных компонентов, чтобы уменьшать размерность данных к двум размерностям для визуализации.
[~,score] = pca(meas,'NumComponents',2);
Соответствуйте трем Гауссовым моделям смеси к данным путем определения 1, 2, и 3 компонента. Увеличьте число итераций оптимизации к 1000
. Используйте запись через точку, чтобы сохранить итоговые оценки параметра. По умолчанию программное обеспечение соответствует полным и различным ковариациям для каждого компонента.
GMModels = cell(3,1); % Preallocation options = statset('MaxIter',1000); rng(1); % For reproducibility for j = 1:3 GMModels{j} = fitgmdist(score,j,'Options',options); fprintf('\n GM Mean for %i Component(s)\n',j) Mu = GMModels{j}.mu end
GM Mean for 1 Component(s)
Mu = 1×2
10-14 ×
-0.2861 -0.0871
GM Mean for 2 Component(s)
Mu = 2×2
1.3212 -0.0954
-2.6424 0.1909
GM Mean for 3 Component(s)
Mu = 3×2
0.4856 -0.1287
1.4484 -0.0904
-2.6424 0.1909
GMModels
является массивом ячеек, содержащим три, адаптированные модели gmdistribution
. Средние значения в этих трех моделях компонента отличаются, предполагая, что модель различает три ирисовых разновидности.
Постройте очки по подходящим Гауссовым контурам модели смеси. Поскольку набор данных включает метки, используйте gscatter
, чтобы различать истинное количество компонентов.
figure for j = 1:3 subplot(2,2,j) h1 = gscatter(score(:,1),score(:,2),species); h = gca; hold on gmPDF = @(x1,x2)reshape(pdf(GMModels{j},[x1(:) x2(:)]),size(x1)); fcontour(gmPDF,[h.XLim h.YLim],'MeshDensity',100) title(sprintf('GM Model - %i Component(s)',j)); xlabel('1st principal component'); ylabel('2nd principal component'); if(j ~= 3) legend off; end hold off end g = legend(h1); g.Position = [0.7 0.25 0.1 0.1];
Трехкомпонентная Гауссова модель смеси, в сочетании с PCA, похожа на него, различает три ирисовых разновидности.
Существуют другие опции, которые можно использовать, чтобы помочь выбрать соответствующее количество компонентов для Гауссовой модели смеси. Например,
Сравните многоуровневые модели с переменными количествами компонентов с помощью информационных критериев, например, AIC или BIC.
Оцените количество кластеров с помощью evalclusters
, который поддерживает, критерий Calinski-Harabasz и статистическая величина разрыва или другие критерии.
Гауссовы модели смеси требуют, чтобы вы задали много компонентов перед стать подходящим к данным. Для многих приложений может быть трудно знать соответствующее количество компонентов. Этот пример использует статистическую величину подгонки AIC, чтобы помочь вам выбрать оптимальную подгонку Гауссова модель смеси по переменным количествам компонентов.
Сгенерируйте данные из смеси двух двумерных Распределений Гаусса.
mu1 = [1 1]; Sigma1 = [0.5 0; 0 0.5]; mu2 = [2 4]; Sigma2 = [0.2 0; 0 0.2]; rng(1); X = [mvnrnd(mu1,Sigma1,1000);mvnrnd(mu2,Sigma2,1000)]; plot(X(:,1),X(:,2),'ko') title('Scatter Plot') xlim([min(X(:)) max(X(:))]) % Make axes have the same scale ylim([min(X(:)) max(X(:))])
Если вы не знаете базовые значения параметров, графики рассеивания предлагает:
Существует два компонента.
Отклонения между кластерами отличаются.
Отклонение в кластерах является тем же самым.
В кластерах нет никакой ковариации.
Соответствуйте двухкомпонентной Гауссовой модели смеси. На основе контроля графика рассеивания укажите, что ковариационные матрицы являются диагональными. Распечатайте итоговую итерацию и loglikelihood статистическую величину к Командному окну путем передачи структуры statset
как значения аргумента пары "имя-значение" Options
.
options = statset('Display','final'); GMModel = fitgmdist(X,2,'CovarianceType','diagonal','Options',options);
11 iterations, log-likelihood = -4787.38
GMModel
является подходящей моделью gmdistribution
.
Исследуйте AIC по переменным количествам компонентов.
AIC = zeros(1,4); GMModels = cell(1,4); options = statset('MaxIter',500); for k = 1:4 GMModels{k} = fitgmdist(X,k,'Options',options,'CovarianceType','diagonal'); AIC(k)= GMModels{k}.AIC; end [minAIC,numComponents] = min(AIC); numComponents
numComponents = 2
BestModel = GMModels{numComponents}
BestModel = Gaussian mixture distribution with 2 components in 2 dimensions Component 1: Mixing proportion: 0.501719 Mean: 1.9824 4.0013 Component 2: Mixing proportion: 0.498281 Mean: 0.9880 1.0511
Самый маленький AIC происходит, когда программное обеспечение соответствует двухкомпонентной Гауссовой модели смеси.
Гауссовы оценки параметра модели смеси могут меняться в зависимости от различных начальных значений. Этот пример показывает, как управлять начальными значениями, когда вы соответствуете Гауссовым моделям смеси с помощью fitgmdist
.
Загрузите ирисовый набор данных Фишера. Используйте лепестковые длины и ширины как предикторы.
load fisheriris
X = meas(:,3:4);
Соответствуйте Гауссовой модели смеси к данным с помощью начальных значений по умолчанию. Существует три ирисовых разновидности, поэтому задайте k = 3 компонента.
rng(10); % For reproducibility
GMModel1 = fitgmdist(X,3);
По умолчанию, программное обеспечение:
Реализует k-средние-значения ++ Алгоритм для Инициализации, чтобы выбрать k = 3 начальных кластерных центра.
Устанавливает начальные ковариационные матрицы как диагональ, где элемент (j
, j
) является отклонением X(:,j)
.
Обрабатывает начальные пропорции смешивания как универсальную форму.
Соответствуйте Гауссовой модели смеси путем соединения каждого наблюдения с его меткой.
y = ones(size(X,1),1); y(strcmp(species,'setosa')) = 2; y(strcmp(species,'virginica')) = 3; GMModel2 = fitgmdist(X,3,'Start',y);
Соответствуйте Гауссовой модели смеси путем явного определения начальных средних значений, ковариационных матриц, и смешивания пропорций.
Mu = [1 1; 2 2; 3 3]; Sigma(:,:,1) = [1 1; 1 2]; Sigma(:,:,2) = 2*[1 1; 1 2]; Sigma(:,:,3) = 3*[1 1; 1 2]; PComponents = [1/2,1/4,1/4]; S = struct('mu',Mu,'Sigma',Sigma,'ComponentProportion',PComponents); GMModel3 = fitgmdist(X,3,'Start',S);
Используйте gscatter
, чтобы построить точечную диаграмму, которая различает ирисовые разновидности. Для каждой модели постройте подходящие Гауссовы контуры модели смеси.
figure subplot(2,2,1) h = gscatter(X(:,1),X(:,2),species,[],'o',4); haxis = gca; xlim = haxis.XLim; ylim = haxis.YLim; d = (max([xlim ylim])-min([xlim ylim]))/1000; [X1Grid,X2Grid] = meshgrid(xlim(1):d:xlim(2),ylim(1):d:ylim(2)); hold on contour(X1Grid,X2Grid,reshape(pdf(GMModel1,[X1Grid(:) X2Grid(:)]),... size(X1Grid,1),size(X1Grid,2)),20) uistack(h,'top') title('{\bf Random Initial Values}'); xlabel('Sepal length'); ylabel('Sepal width'); legend off; hold off subplot(2,2,2) h = gscatter(X(:,1),X(:,2),species,[],'o',4); hold on contour(X1Grid,X2Grid,reshape(pdf(GMModel2,[X1Grid(:) X2Grid(:)]),... size(X1Grid,1),size(X1Grid,2)),20) uistack(h,'top') title('{\bf Initial Values from Labels}'); xlabel('Sepal length'); ylabel('Sepal width'); legend off hold off subplot(2,2,3) h = gscatter(X(:,1),X(:,2),species,[],'o',4); hold on contour(X1Grid,X2Grid,reshape(pdf(GMModel3,[X1Grid(:) X2Grid(:)]),... size(X1Grid,1),size(X1Grid,2)),20) uistack(h,'top') title('{\bf Initial Values from the Structure}'); xlabel('Sepal length'); ylabel('Sepal width'); legend('Location',[0.7,0.25,0.1,0.1]); hold off
Согласно контурам, GMModel2
, кажется, предлагает небольшой trimodality, в то время как другие предлагают бимодальные распределения.
Отобразите предполагаемые средние значения компонента.
table(GMModel1.mu,GMModel2.mu,GMModel3.mu,'VariableNames',... {'Model1','Model2','Model3'})
ans=3×3 table
Model1 Model2 Model3
_________________ ________________ ________________
5.2115 2.0119 4.2857 1.3339 1.4604 0.2429
1.461 0.24423 1.462 0.246 4.7509 1.4629
4.6829 1.4429 5.5507 2.0316 5.0158 1.8592
GMModel2
, кажется, отличает между ирисовыми разновидностями лучшее.
X
ДанныеДанные, к которым Гауссова модель смеси является подходящей, задана как числовая матрица.
Строки X
соответствуют наблюдениям, и столбцы X
соответствуют переменным. Количество наблюдений должно быть больше, чем каждое следующее: количество переменных и количество компонентов.
NaN
s указывает на отсутствующие значения. Программное обеспечение удаляет строки X
, содержащего по крайней мере один NaN
перед подбором кривой, который уменьшает эффективный объем выборки.
Типы данных: single | double
k
Количество компонентовКоличество компонентов, чтобы использовать при подборе кривой Гауссовой модели смеси, заданной как положительное целое число. Например, если вы задаете k = 3
, затем программное обеспечение соответствует Гауссовой модели смеси тремя отличными средними значениями, матрицам ковариаций и пропорциям компонента к данным (X
).
Типы данных: single | double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'RegularizationValue',0.1,'CovarianceType','diagonal'
задает значение параметров регуляризации 0,1 и соответствовать диагональным ковариационным матрицам.'CovarianceType'
— Тип ковариационной матрицы'full'
(значение по умолчанию) | 'diagonal'
Тип ковариационной матрицы, чтобы соответствовать к данным, заданным как пара, разделенная запятой, состоящая из 'CovarianceType'
и или 'diagonal'
или 'full'
.
Если вы устанавливаете 'diagonal'
, то программное обеспечение соответствует диагональным ковариационным матрицам. В этом случае программное обеспечение оценивает параметры ковариации k*d
, где d
является количеством столбцов в X
(т.е. d = size(X,2)
).
В противном случае программное обеспечение соответствует полным ковариационным матрицам. В этом случае программное обеспечение оценивает параметры ковариации k*d*(d+1)/2
.
Пример: 'CovarianceType','diagonal'
Опции
Итеративные опции оптимизации алгоритма EMstatset
Итеративные опции оптимизации алгоритма EM, заданные как пара, разделенная запятой, состоящая из 'Options'
и структуры опций statset
.
Эта таблица описывает доступные аргументы пары "имя-значение".
Имя | Значение |
---|---|
'Display' |
|
'MaxIter' | Положительное целое число, указывающее на максимальное количество итераций, позволено. Значением по умолчанию является 100 |
'TolFun' | Положительная скалярная величина, указывающая на допуск завершения к loglikelihood значению функции. Значением по умолчанию является 1e-6 . |
Пример: 'Options',statset('Display','final','MaxIter',1500,'TolFun',1e-5)
'ProbabilityTolerance'
— Допуск к апостериорным вероятностям[0,1e-6]
Допуск к апостериорным вероятностям, заданным как пара, разделенная запятой, состоящая из ProbabilityTolerance
и неотрицательного скалярного значения в области значений [0,1e-6]
.
В каждой итерации, после оценки апостериорных вероятностей, fitgmdist
устанавливает любую апостериорную вероятность, которая не больше, чем значение допуска, чтобы обнулить. Используя ненулевой допуск может ускорить fitgmdist
.
Пример: 'ProbabilityTolerance',0.0000025
Типы данных: single | double
'RegularizationValue'
— Значение параметров регуляризации0
(значение по умолчанию) | неотрицательный скалярЗначение параметров регуляризации, заданное как пара, разделенная запятой, состоящая из 'RegularizationValue'
и неотрицательного скаляра.
Установите RegularizationValue
на маленькую положительную скалярную величину гарантировать, что предполагаемые ковариационные матрицы положительны определенный.
Пример: 'RegularizationValue',0.01
Типы данных: single | double
'Replicates'
— Число раз, чтобы повторить алгоритм EM1
(значение по умолчанию) | положительное целое числоЧисло раз, чтобы повторить алгоритм EM с помощью нового набора начальных значений, заданных как пара, разделенная запятой, состоящая из 'Replicates'
и положительного целого числа.
Если Replicates
больше, чем 1
, то:
Аргументом пары "имя-значение" Start
должен быть plus
(значение по умолчанию) или randSample
.
GMModel
является подгонкой с самым большим loglikelihood.
Пример: 'Replicates',10
Типы данных: single | double
'SharedCovariance'
— Отметьте указание, идентичны ли все ковариационные матрицыfalse
(значение по умолчанию) | логический true
Отметьте указание, идентичны ли все ковариационные матрицы (т.е. соответствуйте объединенной оценке), заданный как пара, разделенная запятой, состоящая из 'SharedCovariance'
и или логическое значение false
или true
.
Если SharedCovariance
является true
, то все ковариационные матрицы k
равны, и количество параметров ковариации уменьшено масштаб фактором k
.
запуск
Метод установки начального значения'plus'
(значение по умолчанию) | 'randSample'
| вектор целых чисел | массив структурМетод установки начального значения, заданный как пара, разделенная запятой, состоящая из 'Start'
и 'randSample'
, 'plus'
, вектора целых чисел или массива структур.
Значение Start
определяет начальные значения, требуемые стандартной программой оптимизации для каждого Гауссова параметра компонента — среднее значение, ковариация и смешивание пропорции. Эта таблица суммирует доступные параметры.
Значение | Описание |
---|---|
'randSample' | Программное обеспечение выбирает наблюдения k из X наугад как начальные средние значения компонента. Смесительные пропорции универсальны. Начальные ковариационные матрицы для всех компонентов являются диагональными, где элемент j на диагонали является отклонением X(:,j) . |
'plus' | Программное обеспечение выбирает наблюдения k из X с помощью kmeans ++ алгоритм. Начальные пропорции смешивания универсальны. Начальные ковариационные матрицы для всех компонентов являются диагональными, где элемент j на диагонали является отклонением X(:,j) . |
Вектор целых чисел | Вектор длины n (количество наблюдений) содержащий исходное предположение индекса компонента для каждой точки. Таким образом, каждый элемент является целым числом от 1 до k , который соответствует компоненту. Программное обеспечение собирает все наблюдения, соответствующие тому же компоненту, вычисляет средние значения, ковариации и смешивание пропорций для каждого, и устанавливает начальные значения к этим статистическим данным. |
Массив структур |
Предположим, что существуют переменные
|
Пример: 'Start',ones(n,1)
Типы данных: single
| double
| char
| string
| struct
GMModel
— Подходящая Гауссова модель смесиgmdistribution
Подходящая Гауссова модель смеси, возвращенная как модель gmdistribution
.
Доступ к свойствам GMModel
с помощью записи через точку. Например, отобразите AIC путем ввода GMModel.AIC
.
fitgmdist
может:
Сходитесь к решению, где один или несколько компонентов имеет плохо обусловленную или сингулярную ковариационную матрицу.
Следующие проблемы могут привести к плохо обусловленной ковариационной матрице:
Количество размерностей ваших данных относительно высоко и существует недостаточно наблюдений.
Некоторые предикторы (переменные) ваших данных высоко коррелируются.
Некоторые или все функции дискретны.
Вы пытались соответствовать данным к слишком многим компонентам.
В целом можно постараться не получать плохо обусловленные ковариационные матрицы при помощи одних из следующих мер предосторожности:
Предварительно обработайте свои данные, чтобы удалить коррелируемые функции.
Установите 'SharedCovariance'
на true
использовать равную ковариационную матрицу для каждого компонента.
Установите 'CovarianceType'
на 'diagonal'
.
Используйте 'RegularizationValue'
, чтобы добавить очень маленькое положительное число в диагональ каждой ковариационной матрицы.
Попробуйте другой набор начальных значений.
Пройдите через промежуточный шаг, где один или несколько компонентов имеет плохо обусловленную ковариационную матрицу. Попробуйте другой набор начальных значений, чтобы избежать этой проблемы, не изменяя ваши данные или модель.
Программное обеспечение оптимизирует Гауссову вероятность модели смеси с помощью итеративного алгоритма Максимизации ожидания (EM).
fitgmdist
соответствует GMMs к данным с помощью итеративного Expectation-Maximization (EM) алгоритм. Используя начальные значения для средних значений компонента, ковариационных матриц и смешивания пропорций, доходы алгоритма EM с помощью этих шагов.
Для каждого наблюдения алгоритм вычисляет апостериорные вероятности членств компонента. Можно думать о результате как о n-by-k матрица, где элемент (i, j) содержит апостериорную вероятность, что наблюдение i от j компонента. Это - E - шаг алгоритма EM.
Используя апостериорные вероятности членства компонента как веса, алгоритм оценивает средние значения компонента, ковариационные матрицы и смешивание пропорций путем применения наибольшего правдоподобия. Это - M - шаг алгоритма EM.
Алгоритм выполняет итерации по этим шагам до сходимости. Поверхность вероятности является комплексной, и алгоритм может сходиться к локальному оптимуму. Кроме того, получившийся локальный оптимум может зависеть от начальных условий. fitgmdist
имеет несколько опций для выбора начальных условий, включая случайные присвоения компонента для наблюдений и k - средние значения ++ алгоритм.
k - средние значения ++ алгоритм использует эвристику, чтобы найти, что центроидные seed для k - означают кластеризироваться. fitgmdist
может применить тот же принцип, чтобы инициализировать алгоритм EM при помощи k-средних-значений ++ алгоритм, чтобы выбрать начальные значения параметров для подходящей Гауссовой модели смеси.
k - средние значения ++ алгоритм принимает, что количество кластеров является k и выбирает начальные значения параметров можно следующим образом.
Выберите вероятность смеси компонента, чтобы быть универсальной вероятностью , где i = 1..., k.
Выберите ковариационные матрицы, чтобы быть диагональными и идентичными, где и .
Выберите первый начальный центр компонента μ 1 однородно из всех точек данных в X.
Выбрать центр j:
Вычислите расстояния Mahalanobis от каждого наблюдения до каждого центроида и присвойте каждое наблюдение его самому близкому центроиду.
Для m = 1..., n и p = 1..., j – 1, выбирают центроидный j наугад из X с вероятностью
где расстояние между наблюдением m и μp, и Mp является набором всех наблюдений, самых близких к центроидному μp, и xm принадлежит Mp.
Таким образом, выберите каждый последующий центр с вероятностью, пропорциональной расстоянию от себя до самого близкого центра, который вы уже выбрали.
Повторите шаг 4, пока центроиды k не будут выбраны.
[1] Маклахлан, G. и D. Кожица. Конечные модели смеси. Хобокен, NJ: John Wiley & Sons, Inc., 2000.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.