2.1. Модели гауссовских смесей (Gaussian mixture models)¶
sklearn.mixture
- это пакет, позволяющий обучать модели гауссовых смесей (поддерживаются диагональные, сферические, связанные и полные ковариационные матрицы), делать выборки и оценивать их по данным. Также предоставляются средства, помогающие определить необходимое количество компонентов.
Модель гауссовой смеси - это вероятностная модель, в которой предполагается, что все точки данных генерируются из смеси конечного числа гауссовых распределений с неизвестными параметрами. Модели смеси можно рассматривать как обобщение кластеризации k-средних для включения информации о ковариационной структуре данных, а также о центрах скрытых гауссиан.
Scikit-learn реализует различные классы для оценки моделей гауссовых смесей, которые соответствуют различным стратегиям оценки, описанным ниже.
2.1.1. Гауссовская смесь (Gaussian Mixture)¶
Объект GaussianMixture
реализует алгоритм Ожидание-максимизация (expectation-maximization) (EM) для обучении гауссовых моделей. Он также может формировать доверительные эллипсоиды для многомерных моделей и вычислять Байесовский Информационный критерий (Bayesian Information Criterion) для оценки количества кластеров в данных.
Предоставляется метод GaussianMixture.fit
, который обучает модель гауссовой смеси на основе обучающих данных.
Учитывая тестовые данные, он может присвоить каждому образцу гауссиану, к которому он, скорее всего, принадлежит, с помощью метода GaussianMixture.predict
.
GaussianMixture
поставляется с различными опциями для ограничения ковариации оцениваемых классов различий: сферическая, диагональная, связанная или полная ковариация.
Плюсы и минусы класса GaussianMixture
Click for more details
¶
Критерий BIC может быть использован для эффективного выбора количества компонентов в гауссовой смеси.
Теоретически он восстанавливает истинное число компонентов только в асимптотическом режиме (то есть при наличии большого количества данных и в предположении, что данные действительно были сгенерированы i.i.d. из смеси гауссовых распределений).
Обратите внимание, что использование Вариационной байесовской гауссовой смеси позволяет избежать указания числа компонент для модели гауссовой смеси.
Выбор числа компонентов в классической модели гауссовых смесей.
Click for more details
¶
Основная трудность в обучении моделей гауссовой смеси по неразмеченным данным заключается в том, что обычно не известно, какие точки принадлежат какому латентному компоненту (если иметь доступ к этой информации, то становится очень просто обучить отдельное гауссово распределение под каждый набор точек).
Ожидание-максимизация - это хорошо обоснованный статистический алгоритм, позволяющий обойти эту проблему с помощью итерационного процесса.
Сначала предполагаются случайные компоненты (случайно центрированные на точках данных, полученные с помощью k-means, или даже просто нормально распределенные вокруг начала координат) и для каждой точки вычисляется вероятность того, что она порождена каждым компонентом модели.
Затем настраиваются параметры, чтобы максимизировать вероятность получения данных с учетом этих распределений.
Повторение этого процесса гарантированно всегда сходится к локальному оптимуму. Ссылки:
-
Алгоритм оценки Ожидание-максимизации (expectation-maximization).
Click for more details
¶
Разбираем EM-algorithm на маленькие кирпичики <https://habr.com/ru/articles/501850/>
Имеется выбор из четырех методов инициализации (а также ввод заданных пользователем начальных средств) для создания начальных центров компонентов модели: k-means (по умолчанию) Применяется традиционный алгоритм кластеризации k-means. Этот метод может быть вычислительно дорогим по сравнению с другими методами инициализации. k-means++ Используется метод инициализации кластеризации k-means: k-means++. При этом первый центр будет выбран из данных случайным образом. Последующие центры будут выбраны из взвешенного распределения данных, отдавая предпочтение точкам, расположенным дальше от существующих центров. k-means++ - инициализация по умолчанию для k-means, поэтому она будет быстрее, чем запуск полного k-means, но все же может занять значительное время для больших наборов данных с большим количеством компонентов. random_from_data В качестве начальных центров будут выбраны случайные точки данных из входных данных. Это очень быстрый метод инициализации, но он может дать несовпадающие результаты, если выбранные точки расположены слишком близко друг к другу. random Центры выбираются как небольшое возмущение, удаленное от среднего значения всех данных. Этот метод прост, но может привести к тому, что модель будет сходиться дольше.
Выбор метода инициализации.
Click for more details
¶
2.1.2. Вариационная байесовская гауссовская смесь¶
Объект BayesianGaussianMixture
реализует вариант модели гауссовской смеси с вариационными алгоритмами вывода.
API аналогичен API, определенному для GaussianMixture
.
Алгоритм оценки: вариационный вывод.
Вариационный подход - это расширение метода максимизации ожиданий, при котором вместо правдоподобия данных максимизируется нижняя граница на доказательстве модели (включая прайоры). Принцип работы вариационных методов такой же, как и у expectation-maximization (то есть оба являются итерационными алгоритмами, которые чередуются между нахождением вероятностей для каждой точки, генерируемой каждой смесью, и обучением смеси к этим назначенным точкам), но вариационные методы добавляют регуляризацию, интегрируя информацию из предшествующих распределений. Это позволяет избежать сингулярностей, которые часто встречаются в решениях, основанных на максимизации ожиданий, но вносит в модель некоторые тонкие погрешности. Выводы часто выполняются заметно медленнее, но обычно не настолько, чтобы сделать их использование нецелесообразным.
Из-за своей байесовской природы вариационный алгоритм нуждается в большем количестве гиперпараметров, чем ожидание-максимизация, наиболее важным из которых является параметр концентрации weight_concentration_prior
.
Если задать низкое значение параметра концентрации, то модель будет накладывать большую часть веса на несколько компонентов и устанавливать веса остальных компонентов очень близкими к нулю.
Высокие значения приора концентрации позволят большему числу компонентов быть активными в смеси.
Реализация параметров класса BayesianGaussianMixture
предлагает два типа приора для распределения весов: модель конечной смеси с распределением Дирихле и модель бесконечной смеси с процессом Дирихле.
На практике алгоритм вывода по процессу Дирихле является приближенным и использует усеченное распределение с фиксированным максимальным числом компонент (так называемое представление Stick-breaking).
Число компонентов, используемых в действительности, почти всегда зависит от данных.
На следующем рисунке сравниваются результаты, полученные для различных типов приора весовой концентрации (параметр weight_concentration_prior_type
) для различных значений weight_concentration_prior
.
Здесь мы видим, что значение параметра weight_concentration_prior
сильно влияет на эффективное количество получаемых активных компонентов.
Также можно заметить, что большие значения для весового приора концентрации приводят к более равномерному распределению весов, когда тип приоритета - “dirichlet_distribution”, в то время как для типа “dirichlet_process” (используется по умолчанию) это не обязательно так.
В примерах ниже сравниваются модели гауссовской смеси с фиксированным числом компонентов и вариационные модели гауссовской смеси с приором процесса Дирихле.
Здесь классическая гауссовская смесь обученная с 5 компонентами к набору данных, состоящему из 2 кластеров. Мы видим, что вариационная гауссовская смесь с приором процесса Дирихле способна ограничиться только 2 компонентами, в то время как гауссовская смесь обучает данные с фиксированным числом компонентов, которое должно быть задано пользователем заранее.
В данном случае пользователь выбрал n_components=5
, что не соответствует истинному генеративному распределению этого тестового набора данных.
Обратите внимание, что при очень малом количестве наблюдений вариационные модели гауссовой смеси с приором процесса Дирихле могут занять консервативную позицию и подбирать только один компонент.
На следующем рисунке мы обучаем набор данных, который плохо отображается гауссовой смесью.
Регулировка параметра weight_concentration_prior
класса BayesianGaussianMixture
управляет количеством компонентов, используемых для обучении этих данных.
На последних двух графиках мы также представляем случайную выборку, сгенерированную из двух полученных смесей.
Плюсы и минусы вариационного вывода с BayesianGaussianMixture.
Click for more details
¶
2.1.2.1. Процесс Дирихле¶
Здесь мы описываем алгоритмы вариационного вывода на смеси процессов Дирихле. Процесс Дирихле - это предварительное распределение вероятности для кластеризации с бесконечным, неограниченным числом разделов. Вариационные методы позволяют нам включить эту предварительную структуру в модели гауссовских смесей практически без потерь во времени вывода, по сравнению с моделью конечных гауссовских смесей.
Важным вопросом является то, как процесс Дирихле может использовать бесконечное, неограниченное число кластеров и при этом оставаться последовательным. Хотя полное объяснение не вписывается в рамки данного руководства, можно вспомнить аналогию с процессо разрушения палки, которая поможет понять его. Процесс разрушения палки - это генеративная история для процесса Дирихле. Мы начинаем с палки единичной длины и на каждом шаге отламываем часть оставшейся палки. Каждый раз мы связываем длину куска палки с долей точек, попадающих в ту или иную группу смеси. В конце, чтобы представить бесконечную смесь, мы связываем последний оставшийся кусок палки с долей точек, которые не попали во все остальные группы. Длина каждого куска является случайной величиной с вероятностью, пропорциональной параметру концентрации. При меньших значениях концентрации единица длины будет делиться на большие куски палки (определяя более концентрированное распределение). При больших значениях концентрации палки будет состоять из более мелких кусочков (увеличивается количество компонентов с ненулевыми весами).
Методы вариационного вывода для процесса Дирихле по-прежнему работают с конечным приближением к этой бесконечной модели смеси, но вместо того, чтобы априори указывать, сколько компонентов нужно использовать, достаточно указать параметр концентрации и верхнюю границу на число компонентов смеси (эта верхняя граница, если предположить, что она выше “истинного” числа компонентов, влияет только на алгоритмическую сложность, а не на фактическое число используемых компонентов).