Формула Байеса: тест на болезнь
Главная формула пересмотра убеждений и её самый знаменитый парадокс — точный медицинский тест на редкую болезнь.
Формула Байеса переворачивает условную вероятность: зная $P(B\mid A)$, она даёт $P(A\mid B)$ с учётом априорной вероятности $A$.
Мы умеем считать $P(B\mid A)$ — например, вероятность положительного теста при болезни. Но в жизни нас интересует обратное: $P(A\mid B)$ — вероятность болезни при положительном тесте. Формула Байеса связывает эти два направления, и её ответ часто шокирует. Эта теорема — не просто школьная формула, а целое мировоззрение. Байесовский взгляд состоит в том, что вероятность выражает степень нашей уверенности, и эта уверенность обновляется с каждым новым свидетельством. У нас есть априорное мнение (что мы думали до наблюдения), приходит свидетельство, и формула выдаёт апостериорное мнение (что разумно думать после). На этом принципе построены фильтры спама, медицинская диагностика, навигаторы, уточняющие ваше положение по сигналам GPS, и значительная часть современного машинного обучения. Понять Байеса один раз — значит навсегда изменить то, как вы взвешиваете доказательства в любой области жизни.
Вывод формулы
Из определения условной вероятности $P(A\cap B)$ можно записать двумя способами: $P(A)P(B\mid A)$ и $P(B)P(A\mid B)$. Приравняв и разделив, получаем теорему Байеса:
$$P(A\mid B)=\frac{P(B\mid A)\,P(A)}{P(B)}.$$
Знаменатель $P(B)$ обычно раскрывают формулой полной вероятности по гипотезам «$A$» и «не $A$»:
$$P(B)=P(B\mid A)P(A)+P(B\mid \bar{A})P(\bar{A}).$$
Парадокс редкой болезни
Пусть болезнь встречается у $1\%$ людей: $P(D)=0{,}01$. Тест точен: при болезни даёт «+» в $99\%$ случаев ($P(+\mid D)=0{,}99$), а у здорового ошибочно срабатывает лишь в $5\%$ ($P(+\mid \bar{D})=0{,}05$). У вас тест положителен. Какова вероятность, что вы больны? Интуиция кричит «99%». Посчитаем по Байесу:
$$P(D\mid +)=\frac{0{,}99\cdot 0{,}01}{0{,}99\cdot 0{,}01+0{,}05\cdot 0{,}99}=\frac{0{,}0099}{0{,}0594}\approx 0{,}1667.$$
Всего около $17\%$. Причина в том, что здоровых очень много, и даже маленький процент их ложных срабатываний даёт больше положительных тестов, чем все настоящие больные. Проверим симуляцией.
import random
random.seed(8)
n = 2000000
sick_and_pos = 0
pos = 0
for _ in range(n):
sick = random.random() < 0.01
if sick:
test = random.random() < 0.99
else:
test = random.random() < 0.05
if test:
pos += 1
if sick:
sick_and_pos += 1
print("P(болен | +) симуляция:", round(sick_and_pos / pos, 4))
print("Теория: ", round(0.99*0.01/(0.99*0.01+0.05*0.99), 4))Вывод:
P(болен | +) симуляция: 0.1664 Теория: 0.1667
Спам-фильтр — та же логика
Байесовский спам-фильтр работает точно так же: слово «выигрыш» встречается в $80\%$ спама и лишь в $4\%$ обычных писем. Зная априорную долю спама и эти условные вероятности, фильтр пересчитывает $P(\text{спам}\mid \text{слово})$. Каждое подозрительное слово сдвигает оценку, и письма сортируются по накопленной байесовской вероятности.
Как работает под капотом
Симуляция буквально строит две группы людей: больных (их мало) и здоровых (их много), прогоняет каждого через тест с его процентом срабатывания и считает, какая доля среди всех положительных оказалась реально больной. Это и есть $P(D\mid +)$ по определению. Никакой формулы код не использует — он честно перебирает популяцию. Совпадение с формулой Байеса доказывает, что она просто аккуратно учитывает, насколько редко событие до наблюдения.
Частые ошибки
Главная ошибка — «подмена условия»: принимать высокую точность теста $P(+\mid D)$ за вероятность болезни $P(D\mid +)$. Это и есть знаменитая «ошибка прокурора». Вторая — игнорировать априорную вероятность (базовую частоту): при редком событии она решает всё. Третья — забыть про ложные срабатывания у здоровых; именно их абсолютное число «топит» истинных больных, когда болезнь редка.
Итог
- Формула Байеса даёт $P(A\mid B)$ из $P(B\mid A)$ и априорной $P(A)$.
- При редком событии даже точный тест даёт много ложных тревог.
- Базовую частоту (априор) игнорировать нельзя — она определяет ответ.
- Спам-фильтры и медицина используют ровно эту логику пересмотра убеждений.