1.9. Байесовский метод наивного предположения
Методы Байеса с наивным предположением — это набор алгоритмов обучения с учителем, основанных на применении теоремы Байеса с «наивным» предположением о условной независимости каждой пары признаков при заданном значении переменной класса. Теорема Байеса описывает следующие отношения, учитывая переменную класса \(y\) и вектор зависимых признаков \(x_1\) до \(x_n\):
Используя наивное предположение об условной независимости
для всех \(i\), это соотношение упрощается до
Поскольку \(P(x_1, \dots, x_n)\) является константой при заданном вводе, мы можем использовать следующее правило классификации:
и мы можем использовать оценку максимального апостериорного значения (MAP), чтобы оценить \(P(y)\) и \(P(x_i \mid y)\); первое — это относительная частота класса \(y\) в обучающей выборке.
Различные классификаторы Байеса с наивным предположением различаются в основном предположениями о распределении \(P(x_i \mid y)\).
Несмотря на их, по-видимому, чрезмерно упрощенные предположения, классификаторы Байеса с наивным предположением работали довольно хорошо во многих реальных ситуациях, например, в классификации документов и фильтрации спама. Для оценки необходимых параметров требуется небольшое количество обучающих данных. (Для теоретических объяснений, почему Байесовский метод с наивным предположением работает хорошо и на каких типах данных, см. ссылки ниже.)
Обучающие и классифицирующие алгоритмы Байеса с наивным предположением могут быть чрезвычайно быстрыми по сравнению с более сложными методами. Разделение условных распределений признаков по классам означает, что каждое распределение может быть независимо оценено как одномерное распределение. Это, в свою очередь, помогает смягчить проблемы, связанные с проклятием размерности.
С другой стороны, хотя Байесовский метод с наивным предположением известен как неплохой классификатор, он известен как плохая оценка, поэтому вероятностные выводы из predict_proba не следует воспринимать слишком серьезно.
Ссылки
- H. Zhang (2004). Оптимальность наивного байесовского метода. Труды FLAIRS.
1.9.1. Гауссовский байесовский метод наивного предположения
GaussianNB реализует алгоритм Гауссовского Байеса с наивным предположением для классификации. Вероятность признаков предполагается гауссовской:
Параметры \(\sigma_y\) и \(\mu_y\) оцениваются с использованием максимального правдоподобия.
>>> from sklearn.datasets import load_iris
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.naive_bayes import GaussianNB
>>> X, y = load_iris(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
>>> gnb = GaussianNB()
>>> y_pred = gnb.fit(X_train, y_train).predict(X_test)
>>> print("Number of mislabeled points out of a total %d points : %d"
... % (X_test.shape[0], (y_test != y_pred).sum()))
Number of mislabeled points out of a total 75 points : 4
1.9.2. Мультиномиальный байесовский метод наивного предположения
MultinomialNB реализует алгоритм Байеса с наивным предположением для данных с мультиномиальным распределением и является одним из двух классических вариантов Байеса с наивным предположением, используемых в классификации текста (где данные обычно представлены в виде подсчета векторов слов, хотя векторы tf-idf также известны как хорошо работающие на практике). Распределение параметризуется векторами \(\theta_y = (\theta_{y1},\ldots,\theta_{yn})\) для каждого класса \(y\), где \(n\) — количество признаков (в классификации текста — размер словаря), а \(\theta_{yi}\) — вероятность \(P(x_i \mid y)\) появления признака \(i\) в образце, принадлежащем классу \(y\).
Параметр \(\theta_y\) оценивается с помощью сглаженного варианта максимального правдоподобия, т.е. подсчета относительной частоты:
где \(N_{yi} = \sum_{x \in T} x_i\) — количество раз, когда признак \(i\) появляется во всех образцах класса \(y\) в обучающей выборке \(T\), и \(N_{y} = \sum_{i=1}^{n} N_{yi}\) — общее количество всех признаков для класса \(y\).
Сглаживающие параметры \(\alpha \ge 0\) учитывают признаки, отсутствующие в образцах обучения, и предотвращают нулевые вероятности в дальнейших вычислениях. Присвоение \(\alpha = 1\) называется сглаживанием Лапласа, а \(\alpha < 1\) — сглаживанием Лидстоуна.
1.9.3. Дополнительный метод наивного Байеса
ComplementNB реализует алгоритм дополнительного наивного Байеса (CNB). CNB — это адаптация стандартного алгоритма мультиномиального наивного Байеса (MNB), который особенно подходит для несбалансированных наборов данных. В частности, CNB использует статистику из *дополнительного* каждого класса для вычисления весов модели. Авторы CNB эмпирически показали, что оценки параметров для CNB более устойчивы, чем для MNB. Кроме того, CNB регулярно превосходит MNB (часто с значительным отрывом) при задачах классификации текста.
Вычисление весов
Процедура вычисления весов следующая:
где суммы по всем документам \(j\), не принадлежащим классу \(c\), \(d_{ij}\) — либо счетчик, либо значение tf-idf термина \(i\) в документе \(j\), \(\alpha_i\) — сглаживающий гиперпараметр, подобный тому, что используется в MNB, и \(\alpha = \sum_{i} \alpha_i\). Вторая нормализация устраняет тенденцию, при которой более длинные документы доминируют в оценках параметров в MNB. Правило классификации:
т.е. документ назначается классу, который является *наихудшим* соответствием дополнения.
Ссылки
- Rennie, J. D., Shih, L., Teevan, J., & Karger, D. R. (2003). Решение проблем с плохими предположениями классификаторов текста на основе наивного Байеса. В ICML (т. 3, с. 616-623).
1.9.4. Наивный байесовский классификатор Бернулли
BernoulliNB реализует алгоритмы обучения и классификации наивного Байеса для данных, распределённых по многомерным распределениям Бернулли; то есть, может быть несколько признаков, но каждый из них предполагается бинарной (бернуллиевской, булевой) переменной. Поэтому этот класс требует, чтобы образцы представлялись как бинарные векторные признаки; если ему передаётся другой тип данных, экземпляр BernoulliNB может бинаризовать свой вход (в зависимости от параметра binarize).
Правило принятия решения для наивного байесовского классификатора Бернулли основано на
что отличается от правила многомерного наивного Байеса тем, что оно явно штрафует за отсутствие признака \(i\), являющегося индикатором класса \(y\), где многомерный вариант просто игнорирует отсутствующий признак.
В случае классификации текста могут использоваться векторы частоты появления слов (а не векторы счётчиков слов) для обучения и использования этого классификатора. BernoulliNB может работать лучше на некоторых наборах данных, особенно на наборах с короткими документами. Желательно оценить обе модели, если позволяет время.
Список литературы
- C.D. Manning, P. Raghavan and H. Schütze (2008). Введение в информационный поиск. Cambridge University Press, стр. 234-265.
- A. McCallum and K. Nigam (1998). Сравнение моделей событий для классификации текстов с помощью наивного Байеса. Proc. AAAI/ICML-98 Workshop on Learning for Text Categorization, стр. 41-48.
- V. Metsis, I. Androutsopoulos and G. Paliouras (2006). Филтрирование спама с помощью наивного Байеса — Какой наивный Байес? 3-я конф. по электронной почте и антиспаму (CEAS).
1.9.5. Категориальный наивный Байес
CategoricalNB реализует алгоритм категориального наивного Байеса для категориально распределённых данных. Он предполагает, что каждый признак, описываемый индексом \(i\), имеет собственное категориальное распределение.
Для каждого признака \(i\) в наборе данных обучения \(X\), CategoricalNB оценивает категориальное распределение для каждого признака i of X, обусловленного классом y. Множество индексов образцов определяется как \(J = \{ 1, \dots, m \}\), где \(m\) — количество образцов.
Расчёт вероятностей
Вероятность категории \(t\) в признаке \(i\) при заданном классе \(c\) оценивается как:
где \(N_{tic} = |\{j \in J \mid x_{ij} = t, y_j = c\}|\) — количество раз, когда категория \(t\) встречается в образцах \(x_{i}\), которые относятся к классу \(c\), \(N_{c} = |\{ j \in J\mid y_j = c\}|\) — количество образцов с классом c, \(\alpha\) — параметр сглаживания, а \(n_i\) — количество доступных категорий признака \(i\).
CategoricalNB предполагает, что матрица образцов \(X\) закодирована (например, с помощью OrdinalEncoder), таким образом, что все категории для каждого признака \(i\) представлены числами \(0, ..., n_i - 1\), где \(n_i\) — количество доступных категорий признака \(i\).
1.9.6. Обучение моделей наивного Байеса вне области памяти
Модели наивного Байеса могут использоваться для решения задач классификации большой размерности, для которых весь набор данных обучения может не поместиться в памяти. Для этого случая MultinomialNB, BernoulliNB и GaussianNB предоставляют метод partial_fit, который может использоваться инкрементально, как и с другими классификаторами, как показано в Классификация текстовых документов вне области памяти. Все классификаторы наивного Байеса поддерживают взвешивание образцов.
В отличие от метода fit, первый вызов метода partial_fit должен быть передан с перечнем всех ожидаемых меток классов.
Обзор доступных стратегий в scikit-learn также см. в документации обучения вне области памяти.
Примечание
Вызов метода partial_fit моделей наивного Байеса вносит некоторую вычислительную нагрузку. Рекомендуется использовать размеры фрагментов данных, которые максимально велики, то есть, насколько позволяет доступная оперативная память.
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/naive_bayes.html