с примером реализации на Python

Предисловие. Эта статья представляет собой сводную информацию по основной теме и не может считаться оригинальной работой. Информация и код перепрофилируются в нескольких онлайн-статьях, исследовательских статьях, книгах и с открытым исходным кодом.

Введение

Алгоритм ожидания-максимизации, или сокращенно EM-алгоритм, представляет собой подход к оценке максимального правдоподобия в присутствии скрытых переменных. Алгоритм EM был объяснен и получил свое название в классической статье 1977 года А. Демпстера и Д. Рубина в Журнале Королевского статистического общества.

Во-первых, вспомним типы методов кластеризации:

  • жесткая кластеризация: кластеры не перекрываются (элемент либо принадлежит кластеру, либо нет) - например, К-означает, К-Медоид.
  • мягкая кластеризация: кластеры могут перекрываться (сила связи между кластерами и экземплярами) - например, модель смеси с использованием алгоритма ожидания-максимизации.

Кластеризация GMM более гибкая, но не обязательно должна быть более точной, чем K-среднее, потому что вы можете рассматривать ее как метод нечеткой или мягкой кластеризации. Методы мягкой кластеризации присваивают оценку точке данных для каждого кластера. Значение оценки указывает на силу связи точки данных с кластером. В отличие от методов жесткой кластеризации, методы мягкой кластеризации гибки в том смысле, что они могут назначать точку данных более чем одному кластеру. При кластеризации с GMM оценка является апостериорной вероятностью.

Смешанные модели:

  • вероятностно-обоснованный способ выполнения мягкой кластеризации
  • каждый кластер: генеративная модель (гауссова или полиномиальная)
  • параметры (например, среднее значение / ковариация неизвестны)

Реализация GMM на Python

Полный код доступен в виде Блокнота Jupyter на GitHub.

Давайте создадим образец набора данных, в котором точки создаются на основе одного из двух процессов Гаусса. Первое распределение будет иметь среднее значение 100, второе распределение - 90; и стандартное отклонение наших распределений будет 5 и 2 соответственно.

В первом процессе у нас будет 60 000 баллов; 50 000 очков во втором процессе и смешайте их вместе.

Итак, после объединения процессов у нас есть набор данных, который мы видим на графике. Мы можем заметить 2 пика: около 90 и 100, но для многих точек в середине пиков неоднозначно, из какого распределения они были взяты. Так как же нам подойти к этой проблеме?

Итак, здесь мы должны оценить в общей сложности 5 параметров:

где p - вероятность того, что данные получены из первого распределения Гаусса, а 1-p - из второго распределения Гаусса.

Мы можем использовать модель гауссовой смеси, которая будет оценивать параметры распределений с помощью алгоритма максимизации ожидания (EM).

EM чередуется между выполнением E-шага ожидания, который вычисляет математическое ожидание вероятности путем включения скрытых переменных, как если бы они наблюдались, и M-step максимизации, который вычисляет оценки максимального правдоподобия параметров путем максимизации найденного ожидаемого правдоподобия. на шаге E. Параметры, найденные на M-шаге, затем используются для начала другого E-шага, и процесс повторяется до сходимости.

Из sklearn мы используем класс GaussianMixture, который реализует алгоритм EM для подбора смеси гауссовых моделей.

Класс позволяет нам указать предполагаемое количество базовых процессов, используемых для генерации данных, с помощью аргумента n_components при определении модели. Мы установим это значение на 2, так как у нас есть два процесса (или дистрибутива).

Если количество процессов было неизвестно, можно было бы протестировать ряд различного количества компонентов и выбрать модель с наилучшим соответствием, где модели можно было бы оценивать с использованием таких баллов, как Akaike или байесовский информационный критерий (AIC или BIC).

Есть также много способов настроить модель для включения другой информации, которую мы можем знать о данных, например, как оценить начальные значения для распределений. В этом случае мы будем случайным образом угадывать начальные параметры, задав для аргумента init_params значение «random».

Выполнение примера соответствует модели гауссовой смеси на подготовленном наборе данных с использованием алгоритма EM. После подбора модель используется для прогнозирования значений скрытых переменных для примеров в наборе обучающих данных.

Мы можем видеть, что, по крайней мере, для первых нескольких и нескольких последних примеров в наборе данных, модель в основном предсказывает правильное значение для скрытой переменной. Метод pred_proba () предсказывает апостериорную вероятность каждого компонента с учетом данных. В нашем случае вероятность того, что точка 105.0 принадлежит каждому гауссовскому процессу, равна 0.501 и 0.499.

В общем, k-средних и EM могут работать лучше или хуже, в зависимости от природы данных, которые мы хотим кластеризовать, и наших критериев того, что определяет хороший результат кластеризации.

Для многомерных гауссианов ситуация немного сложнее и выглядит следующим образом:

  • Данные с атрибутами d из k источников
  • Каждый источник c является гауссовским
  • Итеративно оцените параметры:

- какой% случаев ранее был получен из источника c?

- среднее: ожидаемое значение атрибута j из источника c

- ковариация: насколько взаимосвязаны атрибуты j и k в источнике c?

- на основе: наше предположение об источнике для каждого экземпляра

Применение алгоритма EM

Модель скрытых переменных имеет несколько реальных приложений в машинном обучении:

  • Используется для расчета гауссовой плотности функции.
  • Полезно заполнить отсутствующие данные во время выборки.
  • Используется для поиска значений скрытых переменных.
  • Используется для реконструкции изображений в области медицины и строительной инженерии.
  • Он находит широкое применение в различных областях, таких как Обработка естественного языка (NLP), Компьютерное зрение и т. Д.
  • Используется для оценки параметров скрытой марковской модели (HMM), а также для некоторых других смешанных моделей, таких как модели гауссовой смеси и т. Д.

Преимущества и недостатки алгоритма EM

Преимущества

  • Два основных шага алгоритма EM, то есть E-шаг и M-шаг, часто довольно просты для многих задач машинного обучения с точки зрения реализации.
  • Решение M-шагов часто существует в замкнутом виде.
  • Всегда гарантируется, что значение вероятности будет увеличиваться после каждой итерации.

Недостатки

  • Имеет медленную сходимость.
  • Он чувствителен к начальной точке, сходится только к локальному оптимуму.
  • Он не может обнаружить K (вероятность растет с увеличением количества кластеров)
  • Он учитывает как прямую, так и обратную вероятности. В этом отличие от численной оптимизации, которая учитывает только прямые вероятности.

Использованная литература:

Максимизация ожиданий: как это работает - https://youtu.be/iQoXFmbXRJA

Вычислительная статистика в Python: алгоритм максимизации ожиданий (EM) - https://people.duke.edu/~ccc14/sta-663/EMAlgorithm.html

Обучение без учителя: кластеризация: модели гауссовской смеси (GMM) - https://www.python-course.eu/expectation_maximization_and_gaussian_mixture_models.php

Введение в скрытые марковские модели и байесовские сети - http://mlg.eng.cam.ac.uk/zoubin/papers/ijprai.pdf

Спасибо за чтение. Если у вас есть какие-либо отзывы, пожалуйста, свяжитесь с нами, прокомментировав этот пост, отправив мне сообщение в LinkedIn или отправив мне электронное письмо ([email protected])