Наивный байесовский алгоритм - это вероятностный алгоритм машинного обучения, основанный на теореме Байеса и используемый в самых разных задачах классификации. В этой статье мы разберем Наивный байесовский алгоритм и все основные понятия, чтобы не осталось места для сомнений в понимании .
Введение в Наивный байесовский алгоритм
Самые простые решения обычно оказываются самыми мощными, и Наивный байесовский алгоритм - хороший тому пример. Несмотря на прогресс в области машинного обучения за последние годы, этот алгоритм оказался не только простым, но и быстрым, точным и надежным.
Он успешно используется для многих целей, но особенно хорошо работает с проблемами обработки естественного языка (NLP).
Теорема Байеса
Теорема Байеса - это простая математическая формула, используемая для расчета условных вероятностей.
Условная вероятность - это мера вероятности того, что событие произойдет, учитывая, что другое событие (по предположению, допущению, утверждению или доказательству) произошло.
Формула выглядит так:
Которая говорит нам: как часто случается A, учитывая, что случается B, записывается P(A|B), также называемая апостериорной вероятностью, Когда мы знаем: как часто случается B, учитывая, что случается A, записывается P(B|A) и насколько вероятно A само по себе, записывается P(A) и насколько вероятно B само по себе, записывается P(B).
Проще говоря, теорема Байеса - это способ нахождения вероятности, когда нам известны некоторые другие вероятности.
Допущения
Давайте рассмотрим пример, чтобы лучше понять алгоритм. Рассмотрим проблему угона автомобиля со следующими атрибутами Цвет, Тип, Страна выпуска, Угон.
Пример
Набор данных представлен следующим образом.
Применительно к нашему набору данных концепцию допущений, сделанных алгоритмом, можно понять следующим образом:
- Мы предполагаем, что ни одна пара признаков не является зависимой. Например, цвет "красный" никак не связан с типом или происхождением автомобиля. Следовательно, признаки считаются независимыми.
- Во-вторых, каждому признаку придается одинаковое влияние (или важность). Например, зная только цвет и тип, невозможно идеально предсказать результат. Поэтому ни один из признаков не является неважным и предполагается, что они вносят одинаковый вклад в результат.
Примечание: Предположения, сделанные выше, как правило, не верны в реальных ситуациях. Предположение о независимости никогда не является верным. Отсюда и название "Наивный".
В нашем наборе данных нам нужно классифицировать, является ли автомобиль угнанным, учитывая особенности автомобиля. Столбцы представляют эти характеристики, а строки - отдельные записи. Если мы возьмем первую строку набора данных, то увидим, что автомобиль является угнанным, если цвет - красный, тип - спортивный и происхождение - отечественное. Таким образом, мы хотим классифицировать красный отечественный внедорожник как угоняемый или нет. Обратите внимание, что в нашем наборе данных нет примера красного отечественного внедорожника.
Согласно этому примеру, теорема Байеса может быть переписана как:
Переменная y - это классовая переменная(stolen?), которая представляет, является ли автомобиль угнанным или нет, учитывая условия. Переменная X представляет собой параметры/характеристики.
X задается как,
Здесь x1, x2..., xn п могут быть сопоставлены с цветом, типом и происхождением. Подставляя X получаем,
Теперь вы можете получить значения для каждого признака, просмотрев набор данных, и подставив их в уравнение. Для всех записей в наборе данных знаменатель не меняется, он остается статичным. Поэтому знаменатель можно убрать и ввести пропорцию.
В нашем случае переменная класса (y) имеет только два исхода - "да" или "нет". Возможны случаи, когда классификация может быть многомерной. Поэтому мы должны найти классовую переменную (y) с максимальной вероятностью.
Апостериорная вероятность P(y|X) может быть рассчитана путем создания таблицы частот для каждого признака относительно цели. Затем таблицы частот преобразуются в таблицы вероятностей и, наконец, с помощью уравнения Байеса вычисляется апостериорная вероятность для каждого класса. Класс с наибольшей апостериорной вероятностью является результатом прогноза. Ниже приведены таблицы частот и вероятностей для всех трех предикатов.
Итак, в нашем примере у нас есть 3 предиктора X.
В соответствии с уравнениями мы можем рассчитать апостериорную вероятность P(Yes | X) как :
и P(Нет | X):
Поскольку 0.144 > 0.048, это означает, что, учитывая признаки RED SUV и Domestic, наш пример классифицируется как "НЕТ", автомобиль не угнан.
Проблема нулевой частоты
Одним из недостатков Naïve-Bayes является то, что если у вас нет ни одного случая совпадения метки класса и определенного значения признака, то оценка вероятности на основе частоты будет равна нулю. И этот ноль будет получен при перемножении всех вероятностей.
Подход для преодоления этой "проблемы нулевой частоты" в байесовской среде заключается в добавлении единицы к подсчету для каждой комбинации атрибута-значения-класса, когда значение атрибута встречается не с каждым значением класса.
Например, предположим, что ваши учебные данные выглядят следующим образом:
𝑃(TimeZone=𝑈𝑆|Spam=𝑦𝑒𝑠)=10/10=1
𝑃(TimeZone=𝐸𝑈|Spam=𝑦𝑒𝑠)=0/10=0
Тогда вы должны прибавить единицу к каждому значению в этой таблице, когда используете ее для расчета вероятностей:
𝑃(TimeZone=𝑈𝑆|Spam=𝑦𝑒𝑠)=11/12
𝑃(TimeZone=𝐸𝑈|Spam=𝑦𝑒𝑠)=1/12
Так мы избавимся от получения нулевой вероятности.
Типы классификаторов Байеса
1. Мультиномиальный классификатор Байеса
Векторы признаков представляют собой частоты, с которыми определенные события были сгенерированы мультиномиальным распределением. Это модель событий, обычно используемая для классификации документов.
2. Классификатор Бернулли:
В многомерной событийной модели Бернулли признаки - это независимые булевы (двоичные переменные), описывающие входные даные. Как и мультиномиальная модель, эта модель популярна в задачах классификации документов, где используются бинарные признаки встречаемости терминов (т.е. встречается слово в документе или нет), а не частоты терминов (т.е. частота слова в документе).
3. Классификатор Гаусса:
В гауссовском классификаторе непрерывные значения, связанные с каждым признаком, предполагаются распределенными в соответствии с гауссовским распределением (нормальным распределением). При построении графика получается колоколообразная кривая, симметричная относительно среднего значения признака, как показано ниже:
Вероятность признаков предполагается гауссовской, следовательно, условная вероятность определяется как:
Теперь, если какой-либо признак содержит числовые значения вместо категорий, то есть распределение Гаусса.
Один из вариантов - преобразовать числовые значения в их категориальные аналоги перед созданием таблиц частот. Другим вариантом, как показано выше, может быть использование распределения числовой переменной, чтобы получить точное предположение о частоте. Например, одним из распространенных методов является использование нормального или гауссова распределения для числовых переменных.
Функция плотности вероятности для нормального распределения определяется двумя параметрами (средним значением и стандартным отклонением).
Рассмотрим проблему игры в гольф, здесь единственным призннаком является влажность, а целью - "Играть в гольф?". Используя приведенную выше формулу, мы можем рассчитать апостериорную вероятность, если нам известны среднее и стандартное отклонение.
Пример: Классификатор Байеса с нуля с помощью Python
Для любого крупного сайта сегодня существует проблема, как справиться с вирулентным и вызывающим негатив контентом. Quora хочет решить эту проблему, чтобы ее платформа оставалась местом, где пользователи могут чувствовать себя в безопасности, делясь своими знаниями со всем миром.
Quora - это платформа, которая дает людям возможность учиться друг у друга. На Quora люди могут задавать вопросы и общаться с другими людьми, которые предоставляют уникальные знания и качественные ответы. Основная задача - отсеять неискренние вопросы - те, которые основаны на ложных предпосылках, или те, которые направлены на утверждение, а не на поиск полезных ответов.
Цель - разработать классификационную модель Naïve Bayes, которая выявляет и помечает неискренние вопросы.
Набор данных можно загрузить отсюда. После загрузки обучающих и тестовых данных загрузите их и проверьте.
import numpy as np
import pandas as pd
import os
train = pd.read_csv('./drive/My Drive/train.csv')
print(train.head())test = pd.read_csv('./drive/My Drive/test.csv')
Давайте посмотрим, как выглядят искренние вопросы.
посмотрим, как выглядят неискренние вопросы.
Предварительная обработка текста
Следующим шагом является предварительная обработка текста перед разделением набора данных на обучающий и тестовый набор. Этапы предварительной обработки включают в себя: удаление цифр, удаление знаков препинания в строке, удаление стоп-слов, упорядочивание слов и лемматизация слов.
Построение классификатора Наивного Байеса
Объедините все методы предварительной обработки и создайте словарь слов и количество каждого слова в обучающих данных.
- Вычислите вероятность для каждого слова в тексте и отфильтруйте слова, вероятность которых меньше пороговой. Слова с вероятностью меньше пороговой вероятности являются нерелевантными.
- Затем для каждого слова в словаре создайте вероятность того, что это слово будет в неискренних вопросах, и его вероятность неискренних вопросов. Затем находим условную вероятность для использования в классификаторе наивного Байеса.
- Прогнозирование с использованием условных вероятностей.
Заключение
Алгоритмы Байеса часто используются в анализе настроений, фильтрации спама, рекомендательных системах и т.д. Они быстро и легко реализуются, но их самым большим
недостатком является требование, чтобы предикторы были независимыми.
Спасибо за внимание!