Вероятность

Условная вероятность и правило Байеса

Обусловливание — это переход в новый универсум, а Байес всего лишь переворачивает дробь

Шаг 35 из 117 · ~32 мин

Определение и его смысл

P(AB)=P(AB)P(B),P(B)>0P(A \mid B) = \frac{P(A \cap B)}{P(B)}, \qquad P(B) > 0

Формулу стоит читать не как правило вычисления, а как смену универсума. Мы узнали, что произошло BB, и всё, что вне BB, больше не рассматриваем. Числитель — та часть AA, которая выжила; знаменатель — нормировка, чтобы новый универсум снова имел полную вероятность единицу.

Отсюда видно, почему требуется P(B)>0P(B) > 0: обусловливаться на невозможном событии бессмысленно, делить не на что.

Немедленное следствие — правило умножения:

P(AB)=P(AB)P(B)=P(BA)P(A)P(A \cap B) = P(A \mid B)\,P(B) = P(B \mid A)\,P(A)

Одно и то же пересечение разложено двумя способами. Приравняв их, мы уже получим Байеса — но сначала о том, как считать знаменатель.

Формула полной вероятности

Если события H1,,HnH_1, \ldots, H_n разбивают Ω\Omega (попарно несовместны и в объединении дают всё), то

P(E)=iP(EHi)P(Hi)P(E) = \sum_i P(E \mid H_i)\,P(H_i)

Читается как «взвешенное среднее по сценариям». Вероятность улики EE складывается из вкладов каждой гипотезы, взвешенных её собственной вероятностью.

Правило Байеса

Приравняем два разложения пересечения и поделим:

P(HE)=P(EH)P(H)P(E)\htmlData{k=post}{P(H \mid E)} = \frac{\htmlData{k=like}{P(E \mid H)}\,\htmlData{k=prior}{P(H)}}{\htmlData{k=ev}{P(E)}}

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

Механика простая: Байес переворачивает обусловливание. У нас есть P(EH)P(E \mid H) — модель того, как гипотеза порождает наблюдения, — а нужно P(HE)P(H \mid E), вывод о гипотезе по наблюдению. Именно это и делает почти всё машинное обучение.

Почему хороший тест не даёт уверенности

Классический пример. Болезнь встречается у 1% людей. Тест выявляет её в 99% случаев и даёт 5% ложных срабатываний на здоровых. Тест положительный. Какова вероятность болезни?

Интуиция говорит «около 99%». Правильный ответ — 16.7%.

Квадрат ниже показывает, почему. Ширина левого столбца — prior, то есть 1%. Внутри столбцов высота разделена по вероятностям срабатывания теста. Обусловливание на положительном результате означает: оставить только две обведённые пунктиром области и сравнить их площади.

верно положительные: 0.0099 ложно положительные: 0.0495
P(H) — распространённость 0.01
P(E|H) — чувствительность 0.99
P(E|¬H) — ложные срабатывания 0.05
P(H)
0.01
P(E)
0.0594
P(H|E)
0.1667

Тест выглядит превосходно, а posterior всё равно ниже половины. Причина видна на картинке: ложные срабатывания собираются с гораздо более широкого столбца, чем верные. Это ошибка базовой ставки.

Ключ к пониманию — сравнить площади, а не проценты. Верных срабатываний 0.01×0.990.00990.01 \times 0.99 \approx 0.0099. Ложных — 0.99×0.050.04950.99 \times 0.05 \approx 0.0495, то есть в пять раз больше. Пять процентов от огромной группы здоровых дают больше случаев, чем 99% от крошечной группы больных.

P(HE)=0.00990.0099+0.04950.167P(H \mid E) = \frac{0.0099}{0.0099 + 0.0495} \approx 0.167

Подвигайте ползунки и убедитесь в двух вещах. Во-первых, чтобы posterior добрался до 50%, ложные срабатывания должны опуститься примерно до 1% — то есть до уровня самой распространённости. Во-вторых, при росте prior всё становится нормально: диагностическая ценность теста зависит не только от теста.

Байесовский взгляд

Ту же формулу можно записать так:

posteriorlikelihood×prior\text{posterior} \propto \text{likelihood} \times \text{prior}

Знак пропорциональности избавляет от знаменателя: он не зависит от HH и нужен только для нормировки. В этой форме Байес читается как правило обновления убеждений: у вас было мнение, пришли данные, мнение сдвинулось — тем сильнее, чем лучше данные различают гипотезы.

Здесь же корень практических следствий, к которым вернёмся:

  • MAP-оценка — максимум posterior, и регуляризация оказывается prior’ом;
  • evidence P(E)P(E) — тот самый неберущийся интеграл маргинализации из блока 2, из-за которого существуют вариационные методы и ELBO;
  • naive Bayes — классификатор, который прямо считает эту дробь, приняв дополнительное предположение из следующего урока.

Частая ошибка: путать направления

P(EH)P(E \mid H) и P(HE)P(H \mid E)разные числа, и обычно очень разные. В примере выше первое равно 0.990.99, второе 0.1670.167.

Смешение этих двух вещей настолько распространено, что имеет собственное имя — «ошибка прокурора». Формулировки вроде «вероятность такого совпадения случайно равна одному на миллион, значит подсудимый виновен с вероятностью 0.999999» подменяют P(данныеневиновен)P(\text{данные} \mid \text{невиновен}) на P(невиновенданные)P(\text{невиновен} \mid \text{данные}), молча выбрасывая prior.

Проверка простая: если в рассуждении не участвует базовая ставка, то оно почти наверняка про likelihood, а не про posterior.

Источники

  • Blitzstein, Hwang — Introduction to Probability, гл. 2 — Условная вероятность, правило Байеса, формула полной вероятности
  • Bishop — Pattern Recognition and Machine Learning, гл. 1.2 — Правила суммы и произведения, байесовская интерпретация

Проверки

0 из 2
  1. Ошибка базовой ставки

    Болезнь есть у 2%2\% людей. Тест выявляет её в 90%90\% случаев и даёт 10%10\% ложных срабатываний у здоровых.

    Тест положительный. Какова вероятность болезни? Ответ — доля от нуля до единицы, округлите до трёх знаков.

    Считайте площадями: верно положительные это 0.02×0.90.02 \times 0.9, ложно положительные — 0.98×0.10.98 \times 0.1.

  2. Posterior по нескольким гипотезам

    Реализуйте posterior(priors, likelihoods) — верните список апостериорных вероятностей всех гипотез.

    Аргументы — списки одинаковой длины: priors[i] это P(Hi)P(H_i), а likelihoods[i] это P(EHi)P(E \mid H_i). По правилу Байеса

    P(HiE)=P(EHi)P(Hi)jP(EHj)P(Hj)P(H_i \mid E) = \frac{P(E \mid H_i)\,P(H_i)}{\sum_j P(E \mid H_j)\,P(H_j)}

    Знаменатель — формула полной вероятности, то есть просто сумма числителей. Отсюда практический порядок действий: посчитайте все числители, сложите, поделите.

    Если сумма нулевая (наблюдение невозможно при всех гипотезах), верните null (в Python None) — обусловливаться на невозможном событии нельзя.

    Ответ обязан суммироваться в единицу; это самая быстрая проверка вашего кода.

    функция posterior

    Загрузка редактора…

    Ctrl/⌘ + Enter