Реальные проблемы Data Science очень далеки от того, что мы видим в соревнованиях Kaggle или на различных онлайн-хакатонах. До того, как стать профессионалом, я думал о Data Science, что мне сначала будут даны некоторые данные. Затем мне нужно немного его очистить (несколько обычных шагов), разработать некоторые функции, забрать несколько моделей из Sklearn или Keras и обучить.

Тадаааа, я закончил.

Но все не так просто. На первом этапе получения точных данных решается, будет ли ваша модель давать хорошие результаты или нет. В большинстве случаев существуют некоторые функции, которые наблюдаются в одних случаях и недоступны для других (которые мы очень легко берем на себя). И если мы сможем определить эти недостающие функции, наши прогнозы будут намного лучше, чем заменять их NaN, средним или каким-либо другим способом.

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

Я сам слышал это несколько дней назад, когда просматривал некоторые статьи об алгоритмах токенизации в НЛП.

Алгоритм EM помогает нам делать выводы (делать выводы) об этих скрытых переменных, используя те, которые наблюдаются в наборе данных, и тем самым делает наши прогнозы еще лучше.

Не поняли?

Примеры всегда помогают

Рассмотрим 2 необъективные монеты.

Предположим, что смещение для 1-й монеты составляет ‘_A’, а для 2-ой - ‘Θ_B’, где Θ_A & Θ_B находится между 0 ‹x‹ 1. Под смещением ‘_A’ & ‘Θ_B’ я подразумеваю, что вероятность выпадения орлов с 1-й монетой составляет не 0,5 (для несмещенной монеты), а ‘Θ_A’, и аналогично для 2-й монеты эта вероятность равна ‘Θ_B’.

Можем ли мы оценить ‘_A’ и ‘Θ_B’, если нам дадут несколько попыток (результатов подбрасывания) этих монет?

Простой!!

Считайте синие ряды попытками второй монеты, а красные - попытками первой монеты.

Что я могу сделать, так это подсчитать количество голов для общего количества образцов для монеты и просто вычислить среднее значение. Это может довольно легко дать нам значение для ‘_A’ & ‘Θ_B’. Мы можем просто усреднить количество орлов для общего количества подбрасываний конкретной монеты, как показано ниже.

Θ_A = 24/30=0.8

Θ_B=9/20=0.45

Но что, если я дам вам следующее условие:

Здесь мы не можем различить образцы, какая строка принадлежит какой монете.

Как тогда я могу рассчитать ‘_A’ и ‘_B’?

Мы все еще можем получить оценку ‘_A’ & ‘_B’ с использованием алгоритма EM !!

Алгоритм выполняется итеративно в 2 этапа: Ожидание и максимизация.

  • Ожидайте: оцените ожидаемое значение скрытой переменной.
  • Максимум: оптимизируйте параметры, используя максимальное правдоподобие.

Обратите внимание на изображение ниже:

Шаги алгоритма EM:

  1. Предположите случайные значения для скрытых переменных:

Θ_A = 0,6 & Θ_B = 0,5 в нашем примере

Кстати, вы где-нибудь в школьной жизни помните биномиальное распределение?

Если нет, давайте сделаем репортаж и для этого.

Биномиальное распределение используется для моделирования вероятности системы только с двумя возможными исходами (бинарными), где мы выполняем «K» испытаний и хотим знать вероятность определенной комбинации успеха и неудачи. используя формулу

Где

  • n = общее количество испытаний
  • X = общее количество успешных событий
  • p = вероятность успешного события
  • q = вероятность неудачного события

Чтобы освежить свои представления о биномиальном распределении, отметьте здесь.

Теперь, если у вас хорошая память, вы можете вспомнить, почему мы умножаем константу Combination (n! / (n-X)! * X!)?

Этот термин используется, когда мы не осознаем последовательность происходящих событий. Нравиться,

Предположим, я сказал, что у меня было 10 бросков, из которых 5 были орлом и остальными решками. Здесь мы будем умножать эту константу, поскольку мы не знаем, в какой последовательности это произошло (HHHHHTTTTT или HTHTHTHTHT или какая-либо другая последовательность, существует ряд последовательностей, в которых это могло произойти). Но если мне дана последовательность событий, мы можем отбросить это постоянное значение.

Помните это !!

Возвращаясь к алгоритму EM, то, что мы сделали до сих пор, предполагает два значения для «Θ_A» и «Θ_B».

2. Шаг ожидания:

Следует предположить, что любой эксперимент / испытание (эксперимент: каждая строка с последовательностью орлов и решек в серой рамке на изображении) проводился с использованием только определенной монеты (1-й или 2-й, но не обеих). Серый ящик содержит 5 экспериментов.

Посмотрите на первый эксперимент с 5 головами и 5 хвостами (1-й ряд, серый блок).

Теперь, используя биномиальное распределение, мы попытаемся оценить вероятность 1-го эксперимента, проведенного с 1-й монетой, имеющей смещение ‘_A’ (где _A = 0,6 на 1-м шаге).

Поскольку мы уже знаем последовательность событий, я опущу постоянную часть уравнения. Следовательно, вероятность таких результатов, если 1-й эксперимент принадлежал 1-й монете, равна

(0,6) ⁵x (0,4) ⁵ = 0,00079 (Поскольку p (успех, т.е. голова) = 0,6, p (неудача, то есть решка) = 0,4)

Аналогично, если 1-й эксперимент принадлежал 2-й монете со смещением ‘_B’ (где Θ_B = 0,5 для 1-го шага), вероятность таких результатов будет:

0,5⁵x0,5⁵ = 0,0009 (Поскольку p (Успех) = 0,5; p (Неудача) = 0,5)

Нормализовав эти две вероятности, мы получим

  • P (1-я монета, использованная для 1-го эксперимента) = 0,45
  • P (2-я монета, использованная для 1-го эксперимента) = 0,55

Точно так же для 2-го эксперимента у нас есть 9 голов и 1 хвост.

Следовательно,

  • P (1-я монета используется для 2-го эксперимента) = 0,6⁹x0,4¹ = 0,004
  • P (2-я монета, использованная для 2-го эксперимента) = 0,5⁹x0,5 = 0,0009

При нормализации значения, которые мы получаем, составляют примерно 0,8 и 0,2 соответственно.

Проверьте тот же расчет и для других экспериментов.

Переход ко 2-му шагу:

Теперь мы будем умножать вероятность принадлежности эксперимента к конкретной монете (рассчитанной выше) на количество орлов и решек в эксперименте, т.е.

0,45 * 5 решек, 0,45 * 5 решек = 2,2 решки, 2,2 решки за 1-ю монету (смещение ‘Θ_A’)

Сходным образом,

0,55 * 5 решек, 0,55 * 5 решек = 2,8 решки, 2,8 решки для 2-й монеты

Мы можем рассчитать и другие значения, чтобы заполнить таблицу справа.

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

Для 1-й монеты у нас 21,3 H и 8,6 T;

Для 2-й монеты, 11,7 H и 8,4 T

Шаг максимизации:

Теперь то, что мы хотим сделать, - это сойтись к правильным значениям «_A» и «Θ_B».

Поскольку смещение представляет собой вероятность выпадения головы, мы рассчитаем исправленное смещение:

‘Θ_A’ = Остроты из-за 1-й монеты / Наблюдаются все головы = 21,3 / 21,3 + 8,6 = 0,71

Сходным образом,

Θ_B = 0,58, как показано в приведенном выше уравнении. Теперь мы снова вернемся к этапу ожидания, используя исправленные смещения.

На 10 таких итерациях получим _A = 0.8 & Θ_B = 0.52

Вы заметили одну вещь !!

Эти значения довольно близки к значениям, которые мы вычислили, когда мы знали идентичность монет, используемых для каждого эксперимента, которые были Θ_A = 0,8 & Θ_B = 0,45 (взяв среднее значение в самом начале поста).

Значит, алгоритм работает !!!

Если вы найдете этот предмет интересным, вы обязательно найдете что-то еще для себя ниже.