Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Naive Bayes

Классификаторы наивного Байеса применяют теорему Байеса и предполагают, что признаки независимы при заданном классе. Разбираем варианты, фильтрацию спама, ограничения и код на Python.

Наивный Байес — семейство вероятностных классификаторов, применяющих теорему Байеса при «наивном» предположении, что признаки независимы друг от друга, если известен класс. Это предположение позволяет модели отдельно обучаться распределению каждого признака внутри каждого класса, поэтому обучение сводится к одному проходу подсчёта по обучающим данным, а для предсказания нужно объединить несколько сохранённых вероятностей. Мехран Сахами и его коллеги применили этот метод к нежелательной почте в 1998 году; фильтры спама на основе Байеса получили широкое распространение в начале 2000-х, а сам метод по-прежнему остаётся быстрым и надёжным базовым вариантом для обучения с учителем на текстовых и других данных очень высокой размерности.

Как работает наивный Байес#

Теорема Байеса позволяет вычислить вероятность класса C при наличии признаков x₁ … xₙ: P(C | x) = P(C)·P(x | C) / P(x). Оценка P(x | C) для каждого сочетания значений признаков потребовала бы огромного набора данных, поэтому наивный Байес предполагает условную независимость признаков и раскладывает вероятность на множители P(x₁ | C)·P(x₂ | C)·…·P(xₙ | C). Классификатор выбирает класс с наибольшим произведением априорной вероятности P(C) и этих множителей, а P(x) отбрасывает, поскольку она одинакова для всех классов. Вместо перемножения вероятностей реализации складывают логарифмы вероятностей: произведение тысяч малых чисел приводит к потере точности при вычислениях с плавающей точкой.

Подсчёт порождает один тип ошибки: если слово ни разу не встретилось с каким-либо классом в обучающих данных, его вероятность становится равной нулю, что обнуляет вероятность этого класса для любого документа с таким словом — независимо от остальных свидетельств. Проблему решает аддитивное сглаживание, при котором к каждому подсчёту добавляется псевдосчёт α; α = 1 соответствует сглаживанию Лапласа и используется по умолчанию в scikit-learn.

Типы классификаторов наивного Байеса#

Варианты отличаются распределением, которое они предполагают для каждого признака внутри класса. Мультиномиальный наивный Байес моделирует количества, например частоту появления каждого слова в документе, и обычно используется для текста. Бернуллиевский наивный Байес моделирует наличие или отсутствие признака и также учитывает отсутствие слов, характерных для класса. Гауссовский наивный Байес подбирает нормальное распределение с собственными средним и дисперсией для каждого непрерывного признака в каждом классе. Комплементарный наивный Байес оценивает статистику слов для каждого класса по всем остальным классам, что подходит для несбалансированных текстовых наборов данных; категориальный наивный Байес работает с признаками, принимающими фиксированный набор категориальных значений.

В этом примере MultinomialNB из scikit-learn обучается на частотах слов в шести размеченных сообщениях, а затем оценивает два новых сообщения:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

# Tiny labeled corpus: 1 = spam, 0 = legitimate
texts = [
    "win a free prize now",
    "free cash bonus click now",
    "claim your free reward today",
    "meeting moved to monday",
    "lunch with the team today",
    "project review notes attached",
]
labels = [1, 1, 1, 0, 0, 0]

# Count words, then learn class priors and per-class word probabilities (alpha=1 is Laplace smoothing)
vectorizer = CountVectorizer()
model = MultinomialNB(alpha=1.0)
model.fit(vectorizer.fit_transform(texts), labels)

new = vectorizer.transform(["free prize today", "notes from the monday meeting"])
print(f"P(spam): {model.predict_proba(new)[:, 1].round(3)}")

Вероятность спама для первого сообщения равна 0,881, поскольку слова «бесплатно» и «приз» встречаются только в спаме; для второго она равна 0,053, поскольку слова «заметки», «понедельник» и «встреча» встречаются только в обычной почте. Без сглаживания вероятность слова «бесплатно» для обычной почты была бы равна нулю, и любое обычное сообщение с этим словом классифицировалось бы как спам с полной уверенностью.

Преимущества и ограничения#

Обучение и предсказание выполняются за время, линейно зависящее от числа примеров и признаков, поэтому наивный Байес обрабатывает миллионы документов с очень низкой задержкой вывода, а реализации scikit-learn обновляются на новых пакетах через partial_fit, поддерживая онлайн-обучение. Для обучения также нужно мало данных: Ng и Jordan (2001) показали, что наивный Байес приближается к своей асимптотической ошибке при меньшем количестве обучающих примеров, чем логистическая регрессия, которая достигает меньшей ошибки, когда данных становится достаточно. Предсказания классов часто точны даже при коррелирующих признаках, поскольку достаточно правильно ранжировать классы.

Однако сами вероятности калиброваны плохо. Коррелирующие признаки учитывают одни и те же свидетельства несколько раз, из-за чего оценки смещаются к 0 или 1; поэтому в приложениях, которым нужны надёжные значения уверенности, вероятности перекалибровывают на отложенных данных. Мешок независимых слов также не может представлять порядок слов или их взаимодействие, поэтому фраза «не хорошо» выглядит как сочетание отрицания и положительного слова, тогда как модели с механизмом внимания, например трансформеры, учитывают контекст.

Применение#

  • Фильтрация спама: Почтовые фильтры оценивают каждое сообщение по содержащимся в нём словам, особенностям отправителя и ссылкам, а затем обновляют статистику слов, когда пользователи помечают сообщения как спам.
  • Анализ тональности: Отзывы и обращения в службу поддержки помечают как положительные или отрицательные в зависимости от использованных слов; это распространённая базовая модель перед тонкой настройкой языковой модели.
  • Маршрутизация документов: Новостные статьи, юридические документы и обращения в службу поддержки сортируются по темам или очередям; если одни категории встречаются намного реже других, часто используют комплементарный наивный Байес.
  • Базовые модели для обработки естественного языка (NLP): Наивный Байес используют для быстрой оценки качества распознавания языка и классификации тем — более дорогие модели должны превосходить этот базовый результат.

Наивный Байес в компьютерном зрении#

Соседние пиксели сильно коррелируют, поэтому представление исходных пикселей в виде независимых признаков теряет информацию о границах и текстурах, определяющих объекты; свёрточные нейронные сети учитывают эту информацию, совместно обрабатывая соседние области. До появления глубокого обучения подход «мешок визуальных слов» применял наивный Байес к гистограммам локальных дескрипторов, например SIFT, сгруппированных в визуальные слова с помощью кластеризации k-средних — визуального аналога подсчёта слов. Количества классов объектов, обнаруженных YOLO26 с помощью обнаружения объектов, образуют такой же вектор количеств, поэтому мультиномиальная модель наивного Байеса может классифицировать сцену как улицу, кухню или офис, используя только результаты обнаружения.

  • Байесовские сети: Наивный Байес — простейшая байесовская сеть: класс является единственным родителем каждого признака, а связей между признаками нет. В общих байесовских сетях такие связи добавляют, чтобы моделировать зависимости.
  • Байесовский вывод: «Байес» в наивном байесовском классификаторе отсылает к теореме Байеса. Стандартный наивный Байес оценивает каждую вероятность как сглаженную частоту — одну точечную оценку, тогда как полностью байесовские методы задают распределение для каждого параметра.
  • Методы опорных векторов (SVM): Они напрямую обучают дискриминативную границу, но требуют больших затрат на обучение. Для классификации тональности Wang и Manning (2012) обнаружили, что наивный Байес точнее SVM на коротких фрагментах, а SVM точнее на полноразмерных отзывах.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения