Учебники

Алгоритмы классификации — Наивный Байес

Наивные байесовские алгоритмы — это метод классификации, основанный на применении теоремы Байеса с сильным предположением, что все предикторы независимы друг от друга. Проще говоря, предполагается, что наличие функции в классе не зависит от присутствия любой другой функции в том же классе. Например, телефон может считаться умным, если у него есть сенсорный экран, интернет, хорошая камера и т. Д. Хотя все эти функции зависят друг от друга, они независимо влияют на вероятность того, что телефон является смартфоном.

В байесовской классификации основной интерес заключается в том, чтобы найти апостериорные вероятности, то есть вероятность метки с учетом некоторых наблюдаемых признаков,, (? | ????????). С помощью теоремы Байеса мы можем выразить это в количественной форме следующим образом:

P(L|функция)= гидроразрывP(L)P(функции|L)P(функция)

Здесь (? | ????????) — апостериорная вероятность класса.

? (?) — априорная вероятность класса.

? (???????? | ?) — это вероятность, которая является вероятностью предиктора данного класса.

? (????????) — априорная вероятность предиктора.

Построение модели с использованием Наивного Байеса в Python

Библиотека Python, Scikit learn — самая полезная библиотека, которая помогает нам построить наивный байесовскую модель в Python. У нас есть следующие три типа наивной модели Байеса в Scikit learn Python library —

Гауссовский наивный байесовский

Это самый простой наивный байесовский классификатор, предполагающий, что данные из каждой метки взяты из простого распределения Гаусса.

Полиномиальный Наивный Байес

Другим полезным наивным байесовским классификатором является многочленный наивный байесовский, в котором предполагается, что признаки взяты из простого мультиномиального распределения. Такие наивные байесовские модели наиболее подходят для функций, представляющих дискретные значения.

Бернулли Наивный Байес

Другая важная модель — это наивный байесовский метод Бернулли, в котором предполагается, что особенности являются бинарными (0 и 1). Классификация текста с помощью модели «мешка слов» может быть применена Бернулли Наивным Байесом.

пример

В зависимости от нашего набора данных мы можем выбрать любую из наивных байесовских моделей, описанных выше. Здесь мы реализуем гауссовскую наивную байесовскую модель в Python —

Начнем с необходимого импорта следующим образом:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

Теперь, используя функцию make_blobs () Scikit learn , мы можем генерировать капли точек с гауссовым распределением следующим образом:

from sklearn.datasets import make_blobs
X, y = make_blobs(300, 2, centers = 2, random_state = 2, cluster_std = 1.5)
plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = 'summer');

Далее, для использования модели GaussianNB нам нужно импортировать и сделать ее объект следующим образом:

from sklearn.naive_bayes import GaussianNB
model_GBN = GaussianNB()
model_GNB.fit(X, y);

Теперь мы должны сделать прогноз. Это можно сделать после генерации некоторых новых данных следующим образом:

rng = np.random.RandomState(0)
Xnew = [-6, -14] + [14, 18] * rng.rand(2000, 2)
ynew = model_GNB.predict(Xnew)

Далее мы строим новые данные, чтобы найти их границы —

plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = 'summer')
lim = plt.axis()
plt.scatter(Xnew[:, 0], Xnew[:, 1], c = ynew, s = 20, cmap = 'summer', alpha = 0.1)
plt.axis(lim);

Теперь с помощью следующей строки кодов мы можем найти апостериорные вероятности первой и второй метки —

yprob = model_GNB.predict_proba(Xnew)
yprob[-10:].round(3)

Выход

array([[0.998, 0.002],
   [1. , 0. ],
   [0.987, 0.013],
   [1. , 0. ],
   [1. , 0. ],
   [1. , 0. ],
   [1. , 0. ],
   [1. , 0. ],
   [0. , 1. ],
   [0.986, 0.014]])

За и против

Pros

Ниже приведены некоторые преимущества использования наивных байесовских классификаторов —

  • Наивная байесовская классификация легко реализуема и быстра.

  • Он будет сходиться быстрее, чем дискриминационные модели, такие как логистическая регрессия.

  • Это требует меньше тренировочных данных.

  • Это очень масштабируемый характер, или они масштабируются линейно с количеством предикторов и точек данных.

  • Он может делать вероятностные прогнозы и может обрабатывать как непрерывные, так и дискретные данные.

  • Наивный байесовский алгоритм классификации можно использовать как для бинарных, так и для мультиклассовых задач классификации.

Наивная байесовская классификация легко реализуема и быстра.

Он будет сходиться быстрее, чем дискриминационные модели, такие как логистическая регрессия.

Это требует меньше тренировочных данных.

Это очень масштабируемый характер, или они масштабируются линейно с количеством предикторов и точек данных.

Он может делать вероятностные прогнозы и может обрабатывать как непрерывные, так и дискретные данные.

Наивный байесовский алгоритм классификации можно использовать как для бинарных, так и для мультиклассовых задач классификации.

Cons

Ниже приведены некоторые недостатки использования наивных байесовских классификаторов —

  • Одним из наиболее важных минусов наивной байесовской классификации является ее сильная независимость признаков, поскольку в реальной жизни практически невозможно иметь набор функций, которые полностью независимы друг от друга.

  • Еще одна проблема, связанная с наивной байесовской классификацией, заключается в ее «нулевой частоте», которая означает, что если у категориальной переменной есть категория, но она не наблюдается в наборе обучающих данных, то наивная байесовская модель присвоит ей нулевую вероятность, и она не сможет прогнозирование.

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

Еще одна проблема, связанная с наивной байесовской классификацией, заключается в ее «нулевой частоте», которая означает, что если у категориальной переменной есть категория, но она не наблюдается в наборе обучающих данных, то наивная байесовская модель присвоит ей нулевую вероятность, и она не сможет прогнозирование.

Применение наивной байесовской классификации

Ниже приведены некоторые общие применения классификации наивного байесовского

Прогнозирование в реальном времени. Благодаря простоте реализации и быстрым вычислениям его можно использовать для прогнозирования в режиме реального времени.

Предсказание нескольких классов — Наивный байесовский алгоритм классификации можно использовать для прогнозирования апостериорной вероятности нескольких классов целевой переменной.

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

Система рекомендаций — наряду с такими алгоритмами, как совместная фильтрация, Наив Байес создает систему рекомендаций, которую можно использовать для фильтрации невидимой информации и прогнозирования погоды, которой пользователь захочет получить данный ресурс или нет.