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

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

Раздел: [Основы машинного обучения](https://ml-book.com/s/ml-basics/) · Страница темы: https://ml-book.com/t/naive-bayes/ · Обновлено: 2026-07-07 · Источник: ml-book.com, учебник делается сообществом

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

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

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

- больны 100 человек (1%), тест увидит 95 из них;
- здоровы 9 900, у 5% из них тест ложно сработает — это 495 человек;
- всего положительных тестов 95 + 495 = 590, и лишь 95 из них — настоящие больные: 95 / 590 ≈ 16%.

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

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

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

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

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

- **Приор** (prior) P(A) — вера до улик: болезнь встречается у 1%.
- **Правдоподобие** (likelihood) P(B | A) — насколько улика ожидаема при гипотезе: вероятность положительного теста у больного, 95%.
- **Апостериорная вероятность** (posterior) P(A | B) — обновлённая вера после улик: вероятность болезни при положительном тесте.
- **Свидетельство** (evidence) P(B) — полная вероятность улики по всем гипотезам; это просто нормировка, и при сравнении классов её можно не считать: она одинакова для всех.

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

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

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

`P(спам | слова) ∝ P(спам) · P(w_1 | спам) · P(w_2 | спам) · … · P(w_n | спам)`

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

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

- **Лог-пространство.** Произведение сотен чисел вида 0.001 быстро уходит в машинный ноль (underflow). Поэтому считают сумму логарифмов: log P(спам) + Σ log P(w_i | спам) — произведение превращается в сумму, и переполнения нет.
- **Сглаживание Лапласа** (Laplace smoothing). Если слово ни разу не встречалось в спаме обучающей выборки, то P(w | спам) = 0 — и один ноль убивает всё произведение, каким бы «спамным» ни было остальное письмо. Лечение: добавить каждому слову виртуальный счётчик +1: P(w | спам) = (count(w) + 1) / (N + V), где V — размер словаря.

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/naive-bayes/

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

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

Классическое сравнение — с [логистической регрессией](https://ml-book.com/t/logistic-regression/). Наивный Байес — **генеративная** (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; сумма логарифмов численно стабильна.

## Связанные темы

- [Логистическая регрессия и классификация](https://ml-book.com/t/logistic-regression/)
- [Метрики качества](https://ml-book.com/t/metrics/)
- [Типы обучения: с учителем, без и с подкреплением](https://ml-book.com/t/learning-paradigms/)
- [Что такое машинное обучение](https://ml-book.com/t/intro-ml/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/naive-bayes/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
