Перевод статьи подготовлен специально для студентов базового и продвинутого курсов «Математика для Data Science».
Теорема Байеса – одна из самых известных теорем в статистике и теории вероятности. Даже если вы не работаете с расчетами количественных показателей, вероятно, вам в какой-то момент пришлось познакомиться с этой теоремой во время подготовки к экзамену.
P(A|B) = P(B|A) * P(A)/P(B)
Вот так она выглядит, но что это значит и как работает? Сегодня мы это узнаем и углубимся в теорему Байеса.
Основания для подтверждения наших суждений
В чем вообще заключается смысл теории вероятности и статистики? Одно из наиболее важных применений относится к принятию решений в условиях неопределенности. Когда вы принимаете решение совершить какое-либо действие (если, конечно, вы человек разумный), вы делаете ставку на то, что после завершения этого действия оно повлечет за собой результат лучший, чем если бы этого действия не произошло… Но ставки – это вещь ненадежная, как же вы в конечном итоге принимаете решение делать ли тот или иной шаг или нет?
Так или иначе вы оцениваете вероятность успешного исхода, и, если эта вероятность выше определенного порогового значения, вы предпринимаете шаг.
Таким образом, возможность точно оценить вероятность успеха имеет решающее значение для принятия правильных решений. Несмотря на то, что случайность всегда будет играть определенную роль в конечном исходе, вам следует учиться правильно использовать эти случайности и оборачивать их в свою пользу с течением времени.
Именно здесь вступает в силу теорема Байеса – она дает нам количественную основу для сохранения нашей веры в исход действия по мере изменений окружающих факторов, что, в свою очередь, позволяет нам со временем совершенствовать процесс принятия решений.
Разберем формулу
Давайте еще раз посмотрим на формулу:
P(A|B) = P(B|A) * P(A)/P(B)
Здесь:
- P(A|B) – вероятность наступления события А, при условии, что событие В уже случилось;
- P(B|A) – вероятность наступления события В, при условии, что событие А уже случилось. Сейчас это выглядит как какой-то замкнутый круг, но мы скоро поймем, почему формула работает;
- P(A) – априорная (безусловная) вероятность наступления события А;
- P(B) – априорная (безусловная) вероятность наступления события В.
P(A|B) – это пример апостериорной (условной) вероятности, то есть такой, которая измеряет вероятность какого-то определенного состояния окружающего мира (а именно состояния, при котором произошло событие В). Тогда как P(A) – это пример априорная вероятности, которая может быть измерена при любом состоянии окружающего мира.
Давайте посмотрим на теорему Байеса в действии на примере. Предположим, что недавно вы закончили курс по анализу данных от bootcamp. Вы еще не получили ответа от некоторых компаний, в которых вы проходили собеседование, и начинаете волноваться. Итак, вы хотите рассчитать вероятность того, что конкретная компания сделает вам предложение об устройстве на работу, при условии, что уже прошло три дня, а они вам так и не перезвонили.
Перепишем формулу в терминах нашего примера. В данном случае, исход А (Offer) – это получения предложения о работе, а исход В (NoCall) – «отсутствие телефонного звонка в течение трех дней». Исходя из этого, нашу формулу можно переписать так:
P(Offer|NoCall) = P(NoCall|Offer) * P(Offer) / P(NoCall)
Значение P(Offer|NoCall) — это вероятность получения предложения при условии, что звонка нет в течение трех дней. Эту вероятность оценить крайне сложно.
Однако обратной вероятности, P(NoCall|Offer), то есть отсутствию телефонного звонка в течение трех дней, при учете, что в итоге вы получили предложение о работе от компании, вполне можно привязать какое-то значение. Из разговоров с друзьями, рекрутерами и консультантами вы узнаете, что эта вероятность небольшая, но иногда компания все же может сохранять тишину в течение трех дней, если она все еще планирует пригласить вас на работу. Итак, вы оцениваете:
P(NoCall|Offer) = 40%
40% — это неплохо и кажется, еще есть надежда! Но мы еще не закончили. Теперь нам нужно оценить P(Offer), вероятность выхода на работу. Все знают, что поиск работы – это долгий и трудный процесс, и возможно вам придется проходить собеседование несколько раз, прежде чем вы получите это предложение, поэтому вы оцениваете:
P(Offer) = 20%
Теперь нам осталось оценить P(NoCall), вероятность, что вы не получите звонок от компании в течение трех дней. Существует множество причин, по которым вам могут не перезвонить в течение трех дней – они могут отклонить вашу кандидатуру или до сих пор проводить собеседования с другими кандидатами, или рекрутер просто заболел и поэтому не звонит. Что ж, есть множество причин, по которым вам могли не позвонить, так что эту вероятность вы оцениваете как:
P(NoCall) = 90%
А теперь собрав это все вместе, мы можем рассчитать P(Offer|NoCall):
P(Offer|NoCall) = 40% * 20%/90% = 8.9%
Это довольно мало, так что, к сожалению, рациональнее оставить надежду на эту компанию (и продолжать отправлять резюме в другие). Если это все еще кажется немного абстрактным, не переживайте. Я чувствовал то же самое, когда впервые узнал про теорему Байеса. Теперь давайте разберемся, как мы пришли к этим 8,9% (имейте в виду, что ваша изначальная оценка в 20% уже была низкой).
Интуиция, стоящая за формулой
Помните, мы говорили о том, что теорема Байеса дает основания для подтверждения наших суждений? Так откуда же они берутся? Они берутся из априорной вероятности P(A), которая в нашем примере зовется P(Offer), по сути, это и есть наше изначальное суждение том, насколько вероятно, что человек получит предложение о работе. В нашем примере вы можете считать, что априорная вероятность – это вероятность того, что вы получите предложение о работе в тот же момент, когда покинете собеседование.
Появляется новая информация – прошло 3 дня, а компания вам так и не перезвонила. Таким образом мы используем другие части уравнения, чтобы скорректировать нашу априорную вероятность нового события.
Давайте рассмотрим вероятность P(B|A), которая в нашем примере называется P(NoCall|Offer). Когда вы впервые видите теорему Байеса, вы задаетесь вопросом: Как понять откуда взять вероятность P(B|A)? Если я не знаю, чему равна вероятность P(A|B), то каким магическом образом я должен узнать, чему равна вероятность P(B|A)? Я вспоминаю фразу, которую однажды сказал Чарльз Мангер:
«Переворачивайте, всегда переворачивайте!»
— Чарльз Мангер
Он имел в виду, что, когда вы пытаетесь решить сложную задачу, ее нужно перевернуть с ног на голову и посмотреть на нее под других углом. Именно это и делает теорема Байеса. Давайте переформулируем теорему Байеса в терминах статистики, чтобы сделать ее более понятной (об это я узнал отсюда):
Для меня, например, такая запись выглядит понятнее. У нас есть априорная гипотеза (Hypothesis) — о том, что мы получили работу, и наблюдаемые факты — доказательства (Evidence) – телефонного звонка нет в течение трех дней. Теперь мы хотим узнать вероятность того, что наша гипотеза верна, с учетом предоставленных фактов. Как бы решили выше, у нас есть вероятность P(A) = 20%.
Время переворачивать все с ног на голову! Мы используем P(Evidence|Hypothesis), чтобы посмотреть на задачу с другой стороны и спрашиваем: «Какова вероятность наступления этих событий-доказательств в мире, где наша гипотеза верна?». Итак, если вернуться к нашему примеру, мы хотим знать, насколько вероятно, что, если нам не звонят в течение трех дней, нас все равно возьмут на работу. В изображении выше я пометил P(Evidence|Hypothesis), как “scaler” (скейлер), потому что это слово хорошо отражает суть значения. Когда мы умножаем его на априорное значение, он уменьшает или увеличивает вероятность события, в зависимости от того «вредит» ли какое-либо событие-доказательство нашей гипотезе. В нашем случае, чем больше дней проходит без звонка, тем меньше вероятность того, что нас позовут на работу. 3 дня тишины – это уже плохо (они сокращают нашу априорную вероятность на 60%), тогда как 20 дней без звонка полностью уничтожат надежду на получение работы. Таким образом, чем больше накапливается событий-доказательств (больше дней проходит без телефонного звонка), тем быстрее скейлер уменьшает вероятность. Скейлер – это механизм, который теорема Байеса использует для корректировки наших суждений.
Есть одна вещь, с которой я боролся в оригинальной версии этой статьи. Это была формулировка того, почему P(Evidence|Hypothesis) легче оценить, чем P(Hypothesis|Evidence). Причина этого заключается в том, что P(Evidence|Hypothesis) – это гораздо более ограниченная область суждений о мире. Сужая область, мы упрощаем задачу. Можно провести аналогию с огнем и дымом, где огонь – это наша гипотеза, а наблюдение дыма – событие, доказывающее наличие огня. P(огонь|дым) оценить сложнее, поскольку много чего может вызвать дым – выхлопные газы автомобилей, фабрики, человек, который жарит гамбургеры на углях. При этом P(дым|огонь) оценить проще, поскольку в мире, где есть огонь, почти наверняка будет и дым.
Значение вероятности уменьшается по мере того, сколько проходит дней без звонка.
Последняя часть формулы, P(B) или же P(Evidence) – это нормализатор. Как следует из названия, его цель – нормализовать произведение априорной вероятности и скейлера. Если бы у на не было нормализатора, мы бы имели следующее выражение:
Заметим, что произведение априорной вероятности и скейлера равно совместной вероятности. И поскольку одно из составляющих в нем P(Evidence), то на совместную вероятность повлияла бы маленькая частота событий.
Это проблема, поскольку совместная вероятность – это значение, включающее в себя все состояния мира. Но нам то не нужны все состояния, нам нужны только те состояния, которые были подтверждены событиями-доказательствами. Другими словами, мы живем в мире, где события – доказательства уже произошли, и их количество уже не имеет значения (поэтому мы не хотим, чтобы они влияли на наши расчеты в принципе). Деление произведения априорной вероятности и скейлера на P(Evidence) меняет его с совместной вероятности на условную(апостериорную). Условная вероятность учитывает только те состояния мира, в которых произошло событие-доказательство, именно этого мы и добиваемся.
Еще одна точка зрения, с которой можно взглянуть на то, почему мы делим скейлер на нормализатор, заключается в том, что они отвечают на два важных вопроса – и их отношение объединяет эту информацию. Давайте возьмем пример из моей недавней статьи про Байеса. Предположим, мы пытаемся выяснить, является ли наблюдаемое животное кошкой, основываясь на единственном признаке – ловкости. Все, что мы знаем, так это то, что животное, о котором мы говорим, проворное.
- Скейлер говорит нам о том, у какого процента кошек хорошо с ловкостью. Это значение должно быть довольно высоким, допустим, 0.90.
- Нормализатор говорит нам, какой процент животных ловок в принципе. Это значение должно быть средним, скажем, 0.50.
- Отношение 0.90/0.50 = 1.8 говорит о том, что нужно изменить априорную вероятность, поскольку, если вы раньше считали иначе, настало время изменить свое мнение, поскольку вы скорее всего имеете дело с кошкой. Причина, по которой так можно считать заключается в том, что мы наблюдали некоторые доказательство того, что животное ловкое. Затем мы выяснили, что доля ловких кошек больше, чем доля ловких животных в целом. Учитывая, что на данный момент мы знаем только такую доказательную часть и ничего больше, разумно было бы пересмотреть наши убеждения в сторону мыслей о том, что мы все-таки наблюдаем кошку.
Подведем итог
Теперь, когда мы знаем, как трактовать каждую часть формулы, мы можем наконец собрать все воедино и посмотреть на то, что получилось:
- Сразу после собеседования, мы устанавливаем априорную вероятность – шанс того, что нас возьмут на работу равен 20%.
- Чем больше дней без звонка проходит, тем меньше становится вероятность того, что нас возьмут на работу. Например, после трех дней без звонка, мы считаем, что в мире, где мы эту работу можем получить, есть всего 40% вероятность того, что компания будет тянуть так долго, прежде чем вам позвонит. Умножаем скейлер на априорную вероятность и получаем 20% * 40% = 8%
- Наконец, мы понимаем, что 8% было рассчитано для всех состояний, в которых может находиться мир. Но нас волнуют только те состояния, где нам не позвонили в течение трех дней. Для того, чтобы работать только с этими состояниями, мы принимаем за 90% априорную вероятность того, что в течение трех дней звонка не будет и получаем нормализатор. Мы делим ранее полученные 8% на нормализатор 8% / 90% = 8.9% и получаем окончательный ответ. Итого, при всех состояниях мира, если вы не получили звонка от компании в течение трех дней, вероятность получить работу составляет всего 8.9%.
Надеюсь, эта статья оказалась для вас полезной!
Автор: Дмитрий