Диагностика Mock-интервью
Главная · Основы машинного обучения

Теорема Байеса и наивный Байес

Теорема Байеса — правило пересчёта вероятностей при появлении улик: prior, likelihood и posterior на примере медицинского теста. Наивный Байес (Naive Bayes) — классификатор на её основе: спам-фильтр, сглаживание Лапласа и классика собеседований про генеративные и дискриминативные модели.

Интуиция: задача, на которой ошибаются даже врачи

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

Интуиция кричит «около 95%» — так отвечает большинство, включая врачей в реальных исследованиях. Правильный ответ — примерно 16%. Проверим на 10 000 человек:

Эта ошибка интуиции называется игнорированием базовой частоты (base rate neglect): мы смотрим на точность теста и забываем, насколько редка сама болезнь. Здоровых так много, что даже редкие ложные срабатывания дают целую гору ложных тревог, в которой тонут настоящие больные.

Как это работает: формула

Теорема Байеса (Bayes' theorem) формализует этот пересчёт:

P(A | B) = P(B | A) · P(A) / P(B)

Словами, на нашем примере:

💡 Ключевая мысль Posterior ∝ prior × likelihood: новое знание — это старое знание, умноженное на убедительность улик. Поменяешь приор — при тех же самых уликах получишь другой ответ.

Наивный Байес: спам-фильтр в три строчки

Теперь сделаем из теоремы классификатор. Гипотезы — классы («спам» / «не спам»), улики — слова письма:

P(спам | слова) ∝ P(спам) · P(w1 | спам) · P(w2 | спам) · … · P(wn | спам)

Здесь спрятано «наивное» предположение: слова условно независимы при данном классе — вероятность встретить «бесплатно» не зависит от того, было ли рядом «выигрыш». Это очевидно неверно (слова в языке сильно скоррелированы), но модель всё равно отлично работает: для верного вердикта достаточно, чтобы правильный класс просто набрал больше очков, а точная калибровка вероятностей не нужна.

Две инженерные детали, о которых спрашивают:

Когда наивный Байес хорош — и кто его главный конкурент

Сильные стороны: обучение — это просто подсчёт частот за один проход по данным, поэтому NB молниеносен, работает при малом числе примеров и почти не переобучается. Классические ниши — тексты (спам, тональность, рубрикация), высокая размерность «мешка слов» и роль быстрого бейзлайна: прежде чем городить трансформер, полезно узнать, сколько выжимает NB. Проигрывает он там, где взаимодействия признаков важны: скоррелированные фичи он «считает» по несколько раз, а его вероятности плохо откалиброваны.

Классическое сравнение — с логистической регрессией. Наивный Байес — генеративная (generative) модель: он моделирует совместное распределение P(x, y) = P(x | y) · P(y), то есть «как выглядят данные каждого класса», и выводит ответ через Байеса. Логистическая регрессия — дискриминативная (discriminative): она сразу учит P(y | x), границу между классами, не тратя силы на моделирование самих данных. При малых данных генеративный NB часто выигрывает (его приоры-допущения помогают), при больших — дискриминативная модель обгоняет, потому что не опирается на неверное предположение независимости.

⚠️ Подводный камень Не верь вероятностям наивного Байеса буквально. Из-за нарушенной независимости он «пересчитывает» скоррелированные улики несколько раз и выдаёт переуверенные оценки вроде 0.9999. Порядок классов обычно верный, но использовать эти числа как откалиброванные вероятности (например, для порогов риска) нельзя без калибровки.
🎤 На собеседовании
  • «Болезнь у 1%, тест точен на 95%, тест положительный — вероятность болезни?» — решай по шагам на 10 000 человек: 95 истинных срабатываний против 495 ложных → 95/590 ≈ 16%. Назови эффект: base rate neglect.
  • «Чем генеративная модель отличается от дискриминативной?» — генеративная учит P(x|y)·P(y) и выводит ответ через Байеса (NB), дискриминативная сразу учит P(y|x) (логрег).
  • «Зачем сглаживание Лапласа?» — без него слово, не встречавшееся в классе, даёт нулевую вероятность и зануляет всё произведение.
  • «Почему считают в логарифмах?» — произведение сотен малых вероятностей уходит в underflow; сумма логарифмов численно стабильна.