Наивный алгоритм Байеса в машинном обучении

⚡ Умное резюме

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

  • 🔘 Определение: Классификатор, который присваивает записи метку, сравнивая апостериорную вероятность каждого потенциального класса.
  • ☑️ Наивное предположение: Каждая характеристика рассматривается как условно независимая, что редко выполняется, но тем не менее позволяет делать хорошие прогнозы.
  • ✅ Формула Байеса: P(A|B) равно P(B|A), умноженному на P(A) и деленному на P(B).
  • 🧪 Реализованный пример: День недели, скидка и бесплатная доставка в совокупности обеспечивают вероятность покупки в 97.33 процента.
  • 🇧🇷 Три варианта: Многомерное распределение для подсчета слов, распределение Бернулли для определения наличия слов, распределение Гаусса для непрерывных значений.
  • ⚠️ Ограничение: Коррелированные признаки игнорируются, поэтому деревья решений или SVM лучше подходят для зависимых данных.

Наивный алгоритм Байеса в машинном обучении

Наивный алгоритм байесовского классификатора

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

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

Приведенная ниже диаграмма иллюстрирует этот процесс.

Классификатор наивного Байеса присваивает метку класса входной записи.

Наивный Байес используется для решения задач классификации. Он прогнозирует на основе вероятности объекта. Наивный Байес основан на теореме Байеса и в основном используется для классификации текста. Наивный Байес — это алгоритм вероятностной классификации, который легко реализовать и быстро обучать.

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

Почему это называется наивным байесовским классификатором?

Название «наивный Байес» состоит из двух частей: «наивный» и «байес». Почему «наивный»? Алгоритм игнорирует порядок появления признаков, поэтому «Вы есть» и «Вы есть» выглядят для него одинаково. Он также предполагает, что ни один признак не влияет на другой. Чтобы распознать яблоко, вы используете красный цвет, сферическую форму и сладкий вкус, и алгоритм рассматривает каждый из этих признаков как отдельное, независимое доказательство.

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

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

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

Чтобы понять теорему Байеса, рассмотрим простой пример наивного байесовского классификатора — подбрасывание двух монет. Пространства элементарных исходов, полученные подбрасыванием двух монет, выглядят следующим образом: {HH, HT, TH, TT}. Вероятности этих событий будут:

  • Получение двух голов = 1/4
  • Хотя бы один хвост = 3/4
  • Вторая монета имеет решку, учитывая, что первая монета имеет решку = 1/2.
  • Получение двух орлов, учитывая, что первая монета - орел = 1/2.

Теорема Байеса вычисляет вероятность наступления события на основе вероятности другого события, которое уже произошло. Формула теоремы Байеса выглядит следующим образом:

P(A|B) = (P(B|A) * P(A)) / P(B)

P(A|B) — это вероятность события A, когда событие B уже произошло. Вероятность P(B) не должна быть равна нулю.

  • Вам нужно найти вероятность события А, которая дается, когда событие Б (доказательство) истинно.
  • P(A) — это априорная вероятность события A, то есть вероятность события до появления каких-либо доказательств. Здесь событие B — это значение неизвестного экземпляра.
  • P(A|B) — это апостериорная вероятность события A, то есть вероятность события A после рассмотрения доказательств B.

Рабочий пример наивного байесовского классификатора

Самый быстрый способ убедиться в работоспособности формулы — проверить её вручную.

Рассмотрим в качестве примера магазин.ping Чтобы понять принцип работы наивного байесовского классификатора. В этом наборе данных представлен небольшой пример, состоящий из 30 строк.

Dataset

Образцовый магазинping Набор данных из 30 строк, содержащий столбцы «День», «Скидка», «Бесплатная доставка» и «Купить».

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

В частотной таблице подсчитаны результаты «Покупка» и «Не покупка» для каждого значения атрибута.

Шаг 1) Мы создадим таблицы частот для каждого атрибута, используя типы входных данных, упомянутые в наборе данных, такие как дни, скидки и бесплатная доставка.

Частотные таблицы для атрибутов «День доставки», «Скидка» и «Бесплатная доставка».

Пусть событие «Покупка» обозначено как «А», а независимые переменные, а именно «Скидка», «Бесплатная доставка» и «День», обозначены как «В». Мы будем использовать эти события и переменные для применения теоремы Байеса.

Шаг 2) Теперь давайте посчитаем таблицы правдоподобия одну за другой.

Таблица вероятностей для атрибута «День» в сравнении с вариантами «Покупка» и «Непокупка».

Пример 1:

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

P(A) = P(No Buy) = 6/30 = 0.2
P(B) = P(Weekday) = 11/30 = 0.37
P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33

И найдите P(A/B) с помощью теоремы Байеса:

P(A/B)
= P(No Buy / Weekday)
= P(Weekday / No Buy) * P(No Buy) / P(Weekday)
= (2/6 * 6/30) / (11/30)
= 0.1818

Аналогично, если A — покупка, то

= P(Buy / Weekday)
= P(Weekday / Buy) * P(Buy) / P(Weekday)
= (9/24 * 24/30) / (11/30)
= 0.8181

Примечание: Поскольку P(Купить | Будний день) больше, чем P(Нет покупки | Будний день), мы можем заключить, что покупатель, скорее всего, купит товар в будний день.

Шаг 3) Аналогичным образом мы можем рассчитать вероятность возникновения события на основе всех трех переменных. Теперь мы рассчитаем таблицы правдоподобия для всех трех переменных, используя приведенные выше таблицы частот.

Таблицы вероятностей для доставки в течение дня, со скидкой и бесплатной доставки, используемые в объединенном расчете.

Пример 2:

Теперь, используя эти три таблицы вероятности, мы рассчитаем, вероятно ли, что клиент совершит покупку, основываясь на определенной комбинации «День», «Скидка» и «Бесплатная доставка».

Здесь давайте возьмем комбинацию этих факторов:

  • День = Праздник
  • Скидка = Да
  • Бесплатная доставка = Да

Когда А = Купить

Рассчитайте условную вероятность покупки при следующей комбинации дня, скидки и бесплатной доставки.

Где Б:

  • День = Праздник
  • Скидка = Да
  • Бесплатная доставка = Да

И А = Купить

Следовательно,

= P(A/B)
= P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30)
= 0.986

Когда A = Нет покупки

Аналогично рассчитайте условную вероятность покупки при следующей комбинации дня, скидки и бесплатной доставки.

Где Б:

  • День = Праздник
  • Скидка = Да
  • Бесплатная доставка = Да

И A = Нет покупки

Следовательно,

= P(A/B)
= P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30)
= 0.027

Шаг 4) Следовательно,

Вероятность покупки = 0.986

Вероятность отсутствия покупки = 0.027.

Наконец, у нас есть условные вероятности покупки в этот день. Давайте теперь обобщим эти вероятности, чтобы получить вероятность событий.

  • Сумма вероятностей = 0.986 + 0.027 = 1.013
  • Вероятность покупки = 0.986/1.013 = 97.33 %.
  • Вероятность отсутствия покупки = 0.027/1.013 = 2.67 %.

Сумма двух оценок составляет 1.013, а не 1, поскольку предположение о независимости делает каждую оценку приблизительной, поэтому деление на общую сумму переводит их в проценты.

Обратите внимание, что 97.33% больше, чем 2.67%. Можно сделать вывод, что среднестатистический покупатель купит в праздник со скидкой и бесплатной доставкой.

Типы наивной байесовской модели

Существует много типов наивных классификаторов Байеса. Здесь мы обсудили мультиномиальные классификаторы, классификаторы Бернулли и гауссовские наивные байесовские классификаторы.

Вариант Тип функции Типичное использование
Полиномиальный Количество слов Классификация тем и документов
Бернулли Бинарные флаги присутствия или отсутствия Короткие текстовые сообщения и фильтрация спама
Гауссовым Непрерывные числовые значения Показания и измерения датчиков

1. Полиномиальный наивный байесовский анализ

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

2. Наивный байесовский метод Бернулли

Это похоже на полиномиальный Наивный Байес. Классификатор Бернулли Наивного Байеса используется для задач классификации документов. Однако он использует логические предикторы. Он показывает, присутствует ли слово или нет, и принимает только значения «Да» или «Нет». Классификатор вычисляет вероятности на основе того, встречается ли слово в тексте или нет.

3. Гауссовский наивный байесовский метод

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

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

Формула условной вероятности изменится на:

Формула условной вероятности Гаусса наивного Байеса с использованием среднего значения и дисперсии.

scikit учиться Библиотека добавляет еще два варианта: наивный байесовский классификатор с дополнением для несбалансированного текста и категориальный наивный байесовский классификатор для дискретных категорий.

Преимущества и ограничения наивного байесовского классификатора

Алгоритм Наивного Байеса в машинном обучении имеет различные преимущества и недостатки.

Преимущества наивного байесовского классификатора

  • Простота и эффективность: Наивный Байес прост в обучении и реализации. Это эффективно из-за низких вычислительных затрат. Он может эффективно обрабатывать большие наборы данных.
  • Быстрое обучение и прогнозирование: Наивный байесовский классификатор не требует большого объема обучающих данных из-за независимости признаков. Он может быстро делать прогнозы после обучения модели.
  • Масштабируемость. Наивный Байес может обрабатывать многомерные наборы данных с большим количеством функций. Он работает хорошо, даже если количество функций превышает количество обучающих примеров. Он масштабируется в зависимости от количества точек данных и предикторов. Он обрабатывает как непрерывные, так и дискретные данные.
  • Устойчивость к несущественным функциям: Он не чувствителен к несущественным функциям.
  • Хорошо работает с небольшими обучающими наборами: Наивный байесовский классификатор может давать приемлемые результаты даже при ограниченном объеме обучающих данных. Он способен справляться с ситуациями, когда количество обучающих примеров невелико.

Ограничение наивного байесовского классификатора

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

Второе предостережение: сообщаемые вероятности классов плохо откалиброваны, поэтому показатель достоверности, присвоенный прогнозу, не является надежной вероятностью.

Чтобы преодолеть эту проблему, вы можете использовать Деревья решенийСлучайные леса, машины опорных векторов (SVM), Нейронные сети и т. д. Эти алгоритмы способны изучать сложные взаимосвязи и зависимости между признаками в данных. Поэтому они могут предсказывать более точные результаты.

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

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

Обнаружение спама

Электронная почта (Такие, как GmailИспользуйте этот алгоритм, чтобы определить, является ли электронное письмо спамом. Этот алгоритм отлично подходит для фильтрации спама.

Анализ настроений

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

Классификация документов

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

Рекомендательные Системы

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

Этот алгоритм классификации также используется в распознавании лиц, прогнозировании погоды, медицинской диагностике и розничной торговле.pingКлассификация новостей и т. д. Вы можете реализовать наивный байесовский классификатор в Pythonгде модуль sklearn.naive_bayes предоставляет все описанные выше варианты.

Часто задаваемые вопросы (FAQ)

Импортируйте необходимый вариант из sklearn.naive_bayesРазделите данные с помощью функции train_test_split, затем вызовите функцию fit() для обучающих строк и predict() для тестовых строк. GaussianNB подходит для непрерывных признаков, в то время как MultinomialNB и BernoulliNB обрабатывают подсчет текста и бинарные флаги слов.

Если категория никогда не встречается вместе с классом в обучающей выборке, её условная вероятность становится равной нулю и обнуляет всё произведение. Сглаживание Лапласа добавляет единицу к каждому значению, поэтому ничто не обнуляется. Scikit-learn отображает это как параметр alpha.

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

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

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

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

Автоматизированные инструменты машинного обучения ищут значения сглаживания, представления признаков и варианты выбора, а затем ранжируют кандидатов по результатам перекрестной проверки. Это исключает большую часть ручных проб и ошибок — вы по-прежнему решаете, какой показатель важен и ведет ли себя победитель разумно.

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

Подведем итог этой публикации следующим образом: