Соответствие модели смеси Гаусса данным
возвращает модель распределения гауссовой смеси с дополнительными опциями, заданными одним или несколькими 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 3.'
Оценки ковариации плохо обусловлены. Следовательно, оптимизация прекращается, и появляется ошибка.
Снова установите модель гауссовой смеси, но используйте регуляризацию.
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.1044 -0.0429
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];

Трехкомпонентная модель гауссовой смеси в сочетании с РСА выглядит так, будто различает три вида радужки.
Есть и другие опции, которые можно использовать для выбора соответствующего количества компонентов для гауссовой модели смеси. Например,
Сравнение нескольких моделей с различным количеством компонентов с использованием информационных критериев, например, AIC или BIC.
Оценка количества кластеров с помощью evalclusters, который поддерживает критерий Калински-Харабаша и статистику разрыва или другие критерии.
Гауссовы модели смесей требуют, чтобы перед подгонкой к данным было указано количество компонентов. Для многих приложений может быть трудно узнать соответствующее количество компонентов. В этом примере используется статистика соответствия 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 = 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-means + + Алгоритм инициализации для выбора 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 кажется, предполагает небольшую тримодальность, в то время как другие предполагают бимодальные распределения.
Отображение оцененных значений компонентов.
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 соответствуют переменным. Количество наблюдений должно быть больше каждого из следующих: количество переменных и количество компонентов.
NaNs указывает на отсутствие значений. Программа удаляет строки 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' и statset структура опций.
В этой таблице описаны доступные аргументы пары имя-значение.
| Имя | Стоимость |
|---|---|
'Display' |
|
'MaxIter' | Положительное целое число, указывающее максимальное допустимое число итераций. Значение по умолчанию: 100 |
'TolFun' | Положительный скаляр, указывающий допуск окончания для значения функции loglikeliquity. Значение по умолчанию: 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 подходит с самым большим источником средств к существованию.
Пример: 'Replicates',10
Типы данных: single | double
'SharedCovariance' - Флаг, указывающий на идентичность всех ковариационных матрицfalse (по умолчанию) | логический trueФлаг, указывающий, являются ли все ковариационные матрицы идентичными (т.е. соответствуют объединенной оценке), указанный как пара, разделенная запятыми, состоящая из 'SharedCovariance' и либо логическое значение false или true.
Если SharedCovariance является true, тогда все k ковариационные матрицы равны, а количество ковариационных параметров масштабируется в множитель k.
'Start' - Метод задания начального значения'plus' (по умолчанию) | 'randSample' | вектор целых чисел | структурный массивМетод установки начального значения, заданный как разделенная запятыми пара, состоящая из 'Start' и 'randSample', 'plus'вектор целых чисел или структурный массив.
Значение Start определяет начальные значения, требуемые программой оптимизации для каждого гауссова параметра компонента - среднего значения, ковариации и пропорции смешения. В этой таблице представлены доступные параметры.
| Стоимость | Описание |
|---|---|
'randSample' | Программа выбирает k наблюдения из X случайным образом в качестве начального компонентного средства. Пропорции смешивания однородны. Начальные ковариационные матрицы для всех компонентов диагональны, где элемент j на диагонали - дисперсия X(:,j). |
'plus' | Программа выбирает k наблюдения из X используя алгоритм k-means + +. Исходные пропорции смешивания являются однородными. Начальные ковариационные матрицы для всех компонентов диагональны, где элемент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 подгоняет GMM к данным с использованием итеративного алгоритма ожидания-максимизации (EM). Используя начальные значения для составляющих, ковариационных матриц и пропорций смешения, алгоритм ЭМ продолжает использовать эти шаги.
Для каждого наблюдения алгоритм вычисляет апостериорные вероятности членств компонентов. Можно представить результат как матрицу n-by-k, где элемент (i, j) содержит заднюю вероятность того, что наблюдение i находится из компонента j. Это E-шаг алгоритма EM.
Используя апостериорные вероятности компонента-членства в качестве весов, алгоритм оценивает средства компонента, ковариационные матрицы и пропорции смешения путем применения максимального правдоподобия. Это M-шаг алгоритма EM.
Алгоритм выполняет итерацию по этим шагам до сходимости. Поверхность правдоподобия сложна, и алгоритм может сходиться к локальному оптимуму. Кроме того, результирующий локальный оптимум может зависеть от начальных условий. fitgmdist имеет несколько вариантов выбора начальных условий, включая случайные назначения компонентов для наблюдений и алгоритм k-means + + .
Алгоритм k-means + + использует эвристику, чтобы найти начальные числа центроидов для кластеризации k-means.fitgmdist может применять тот же принцип для инициализации алгоритма EM с использованием алгоритма k-means + + для выбора начальных значений параметров для подогнанной модели гауссовой смеси.
Алгоритм k-means + + предполагает, что число кластеров равно k, и выбирает начальные значения параметров следующим образом.
Выберите вероятность смешения компонентов как однородную вероятность 1k, где i = 1,..., k.
Выберите матрицы ковариации, которые должны быть диагональными и идентичными, где .., = var (Xj).
Выберите первый начальный центр компонента мк1 равномерно из всех точек данных в X.
Для выбора центра j:
Вычислите расстояния Махаланобиса от каждого наблюдения до каждого центроида и назначьте каждое наблюдение ближайшему центроиду.
Для m = 1,..., n и p = 1,..., j - 1 выберите центроид j случайным образом из X с вероятностью
, мкр)
где мкм) - расстояние между наблюдением m и мкм, а Mp - множество всех наблюдений, наиболее близких к центроиду, и xm принадлежит Mp.
То есть выберите каждый последующий центр с вероятностью, пропорциональной расстоянию от самого себя до ближайшего центра, который вы уже выбрали.
Повторяйте шаг 4 до тех пор, пока не будут выбраны k центроидов.
[1] Маклахлан, G. и D. Кожица. Модели конечных смесей. Хобокен, Нью-Джерси: John Wiley & Sons, Inc., 2000.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.