Подходящая смешанная гауссовская модель к данным
возвращает Гауссову модель распределения смеси с дополнительными опциями, заданными одним или несколькими 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 = @(x,y) arrayfun(@(x0,y0) pdf(GMModel,[x0 y0]),x,y); 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
{'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.1017 -0.0444
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 = @(x,y) arrayfun(@(x0,y0) pdf(GMModels{j},[x0 y0]),x,y); 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, похожа на него, различает три ирисовых разновидности.
Существуют другие опции, которые можно использовать, чтобы помочь выбрать соответствующее количество компонентов для смешанной гауссовской модели. Например,
Сравните многоуровневые модели с различными количествами компонентов с помощью информационных критериев, e.g., 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(:))])
Если вы не знаете базовые значения параметров, графики рассеивания предлагает:
Существует два компонента.
Отклонения между кластерами отличаются.
Отклонение в кластерах является тем же самым.
В кластерах нет никакой ковариации.
Соответствуйте двухкомпонентной смешанной гауссовской модели. На основе контроля графика рассеивания укажите, что ковариационные матрицы являются диагональными. Распечатайте итоговую итерацию и статистическую величину логарифмической правдоподобности к Командному окну путем передачи 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
имя аргумента и 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'
'Options'
— Итеративные опции оптимизации алгоритма EMstatset
структура опцийИтеративные опции оптимизации алгоритма EM в виде разделенной запятой пары, состоящей из 'Options'
и a statset
структура опций.
Эта таблица описывает доступные аргументы пары "имя-значение".
Имя | Значение |
---|---|
'Display' |
|
'MaxIter' | Положительное целое число, указывающее на максимальное количество итераций, позволено. Значением по умолчанию является 100 |
'TolFun' | Положительная скалярная величина, указывающая на допуск завершения к значению функции логарифмической правдоподобности. Значением по умолчанию является 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'
— Значение параметров регуляризации
(значение по умолчанию) | неотрицательный скалярЗначение параметров регуляризации в виде разделенной запятой пары, состоящей из 'RegularizationValue'
и неотрицательный скаляр.
Установите RegularizationValue
к маленькой положительной скалярной величине, чтобы гарантировать, что предполагаемые ковариационные матрицы положительны определенный.
Пример: 'RegularizationValue',0.01
Типы данных: single
| double
'Replicates'
— Число раз, чтобы повторить алгоритм EM
(значение по умолчанию) | положительное целое числоЧисло раз, чтобы повторить алгоритм EM с помощью нового набора начальных значений в виде разделенной запятой пары, состоящей из 'Replicates'
и положительное целое число.
Если Replicates
больше 1
то:
Аргумент пары "имя-значение" Start
должен быть plus
(значение по умолчанию) или randSample
.
GMModel
подгонка с самой большой логарифмической правдоподобностью.
Пример: 'Replicates',10
Типы данных: single
| double
'SharedCovariance'
— Отметьте указание, идентичны ли все ковариационные матрицыfalse
(значение по умолчанию) | логический true
Отметьте указание, идентичны ли все ковариационные матрицы (т.е. соответствуйте объединенной оценке) в виде разделенной запятой пары, состоящей из 'SharedCovariance'
и любое логическое значение false
или true
.
Если SharedCovariance
true
, затем весь k
ковариационные матрицы равны, и количество параметров ковариации уменьшено масштаб на коэффициент k
.
'Start'
— Метод установки начального значения'plus'
(значение по умолчанию) | 'randSample'
| вектор из целых чисел | массив структурМетод установки начального значения в виде разделенной запятой пары, состоящей из 'Start'
и 'randSample'
плюс
, вектор из целых чисел или массив структур.
Значение Start
определяет начальные значения, требуемые стандартной программой оптимизации для каждого Гауссова параметра компонента — среднее значение, ковариация и смешивание пропорции. Эта таблица суммирует доступные параметры.
Значение | Описание |
---|---|
'randSample' | Программное обеспечение выбирает k наблюдения от X наугад как начальные средние значения компонента. Смесительные пропорции универсальны. Начальные ковариационные матрицы для всех компонентов являются диагональными, где элемент j на диагонали отклонение X(:,j) . |
'plus' | Программное обеспечение выбирает k наблюдения от X использование k - означает ++ алгоритм. Начальные пропорции смешивания универсальны. Начальные ковариационные матрицы для всех компонентов являются диагональными, где элемент 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.