DEV//UNIT

Наивный Байес

Теорема Байеса с наивной независимостью: произведение вероятностей признаков.

время O(признаки · классы)память O(признаки)уровень: начальный
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function naiveBayes(
2 train: Array<[win: 0 | 1, free: 0 | 1, meet: 0 | 1, spam: 0 | 1]>,
3 query: [win: 0 | 1, free: 0 | 1, meet: 0 | 1],
4): { pSpam: number, pHam: number } {
5 const spam = train.filter((r) => r[3] === 1)
6 const ham = train.filter((r) => r[3] === 0)
7
8 // наивность: признаки независимы — вероятности перемножаются
9 const pSpam = spam.length / train.length *
10 query.reduce((p: number, v: 0 | 1, i: number) => p * ((spam.filter((r) => r[i] === v).length + 1) / (spam.length + 2)), 1)
11 const pHam = ham.length / train.length *
12 query.reduce((p: number, v: 0 | 1, i: number) => p * ((ham.filter((r) => r[i] === v).length + 1) / (ham.length + 2)), 1)
13
14 return { pSpam, pHam }
15}

Проблема

Теорема Байеса с наивной независимостью: произведение вероятностей признаков.

Что вы видите

P(класс|признаки) ∝ P(класс)·ΠP(признак|класс) с сглаживанием +1.

Как это работает

Обучение — один проход по данным (просто счётчики). Наивность неверна, но работает удивительно хорошо; сглаживание Лапласа спасает от нулей.

Пошаговый разбор

  1. 01

    Априорные

    Доли классов.

  2. 02

    Условные

    Признак|класс.

  3. 03

    Байес

    Произведение и сравнение.

Complexity и ограничения

time
O(признаки · классы)
space
O(признаки)

Сложность см. в шапке страницы.

Edge cases

  • Пустой вход

    Корректная тривиальная обработка.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

Спам

Классический фильтр почты.

Категоризация

Тексты/новости.

Рекомендации

Совместные признаки.

Связанные алгоритмы

Shorts

«Спам-фильтр, обучающийся за один проход»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Спам-фильтр, обучающийся за один проход
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/naive-bayes