Ядерная оценка плотности распределения и алгоритм максимизации ожиданий

Ядерная оценка плотности распределения

Здравствуйте и вновь добро пожаловать на занятия по теме «Кластерный анализ и машинное обучение без учителя на языке Python».

В этой лекции мы поговорим о ядерной оценке плотности распределения.

Ядерная оценка плотности распределения – это всего лишь подгонка распределения вероятности. Но прежде, чем обсуждать ядерную оценку плотности, давайте обсудим, каково простейшее решение данной задачи, поскольку его очень легко упустить из виду при разборе всех наших сложных методов машинного обучения.

Итак, каково же это решение? Да просто оценка частоты, возможно, уже встречавшаяся вам в виде гистограммы.

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

А как происходит ядерная оценка плотности распределения? Простейший способ мы уже обсудили.

Так вот, на самом деле гауссова смесь распределения и является проведением ядерной оценки плотности распределения, но с гауссианами в качестве ядер. Однако, проблема остаётся, если у нас в наличии есть только гауссоподобные формы в распределении данных. Та же проблема встречается и в методе k-средних, когда нам необходимо определить истинное количество компонент (кластеров).

Один из способов – просто посмотреть на распределение данных и выбрать количество компонент, равное количество пиков, различимых на гистограмме.

Другой способ – использовать гауссианы с одной и той же дисперсией h, установить количество гауссиан равным количеству точек данных и использовать для обработки алгоритм гауссовой смеси распределений:

P(x)=\frac{1}{N} \sum_{i=1}^{N} \frac{1}{(2\pi h^2)^{\frac{D}{2}}} * e^-{\frac {||x-x_{n}||^2}{2h^2}.

Величина h в этом случае называется размером окна. Разумеется, вам придётся поэкспериментировать, чтобы найти подходящий размер окна для вашего распределения.

Преимуществом здесь является тот факт, что исчезает необходимость подбирать количество компонент (кластеров).

Есть и другие ядра, которые можно использовать, но, как правило, гауссианы вполне хорошо работают. Если хотите, то рекомендую поэкспериментировать с ними с помощью соответствующих библиотек, таких как SciPy.

Алгоритм максимизации ожиданий

А сейчас мы с абстрактной точки зрения обсудим алгоритм гауссовой смеси распределения и рассмотрим алгоритм максимизации ожиданий, также известный как EM-алгоритм. Этот алгоритм обобщает некоторые уже упоминавшиеся понятия, такие как латентные, или скрытые, переменные, координатный спуск и гарантия увеличения целевой функции на каждой итерации. Тут есть немного математики, так что если вас интересует сугубо практическое применение, эту лекцию вы можете пропустить.

Прежде всего напомним, что мы стараемся максимизировать функцию правдоподобия. У нас есть некоторые данные X и некоторая модель θ, а мы стараемся максимизировать величину P(X| θ) или её логарифм log P(X|θ). Введя некоторую переменную Z, мы можем переформулировать задачу в виде частного распределения

P(X|\theta)=\sum_z P (X,Z|\theta).

Учитывая это, мы можем продолжить:

P(X|\theta)=\sum_z P (X,Z|\theta) = \sum_z P (X|Z,\theta) P(Z|\theta).

Далее идёт ещё много промежуточных операций, пока не получится алгоритм максимизации ожиданий, но и уже описанные должны дать вам представление, о чём идёт речь.

Далее, в алгоритме максимизации ожиданий есть два главных этапа. В первом мы устанавливаем значение Z, а во втором – значение θ. Первый этап, называемый ещё E-этапом, можно рассматривать как нахождение распределения с заданным текущим значением θ. Второй же, M-этап, можно рассматривать как нахождение наилучшего значения θ, при котором максимизируется объединённое распределение  Но вместо того, чтобы пытаться его максимизировать напрямую, мы максимизируем ожидаемое значение этого распределения, найденное на предыдущем этапе (то есть P(Z|X,\theta_n)):

\theta_{n+1}=argmax \; E [logP(X,Z|\theta)].

Алгоритмы обучения без учителя, которые вы изучите в дальнейшем

Я создал этот курс не только для того, чтобы познакомить вас с некоторыми классическими алгоритмами машинного обучения, применяемыми в обучении без учителя, но и чтобы связать их с рядом более продвинутых и современных методов, используемых в наше время.

Я хотел бы показать дальнейшее применение обучения без учителя в двух главных направлениях.

Первое – расширение идеи скрытых переменных и смесей распределений для изучения скрытых марковских моделей. Они применяются для изучения последовательностей данных, например, для моделирования таких последовательностей, как нити ДНК, строки текста, аудио, цены на акции.

Второе – изучение дальнейших алгоритмов обучения без учителя, которые могут быть привязаны к таким объектам глубокого обучения, как собственно нейронные сети.

Спасибо за изучение курса и до новых встреч!

Андрей Никитенко
Андрей Никитенко
Задать вопрос эксперту
Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Share via
Copy link