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

Генеративные и дискриминационные алгоритмы:

Генеративный алгоритм создает модель, похожую на то, как класс может генерировать некоторые входные данные. При обнаружении спама электронные письма, помеченные как спам, содержат такие слова, как CASH, Prize, WON,. Наивный байесовский классификатор, как и генеративный классификатор, классифицирует новое электронное письмо на основе этих атрибутов.

Примеры: наивный байесовский метод, HMM (скрытая марковская модель)

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

Пример: логистическая регрессия

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

Наивный Байес — это вероятностный классификатор, который предсказывает класс «c-hat» для данного документа «d», документ может быть обзором, электронной почтой или любым фрагментом текста.

Для тех, кто не знает, что такое функция argmax(), она доступна в пакете Numpy и просто принимает массив аргументов и возвращает индекс максимального значения.

Мы все знали теорему Байеса,

Если мы применим теорему Байеса к самой первой функции argmax, то она станет

Мы могли бы удобно опустить знаменатель P(d), потому что мы будем вычислять условную вероятность (правило Байеса) для каждого возможного класса, P(d) не получит изменения для каждого класса.

Мы прогнозируем наиболее подходящий класс для данного документа, выбирая класс, который имеет наибольшее произведение двух вероятностей:

1. Априорная вероятность P(c) 2. Вероятность P(d|c).

Мы закончили с теоремами, давайте интуитивно разберемся с наивным байесовским алгоритмом на примере.

Вот как выглядит наш набор данных о настроениях,

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

Здесь обзоры — это не что иное, как набор слов, мы называем это «функции», первое утверждение в нашем наборе данных содержит 3 слова, поэтому оно имеет 3 функции, а второе — 5 и так далее.

поэтому мы можем переписать приведенное выше уравнение как

Во-первых, мы собираемся вычислить априорный P(c) для всех классов, но здесь у нас есть только два класса: положительный и отрицательный.

P(Отрицательный) = 3/5 ; так как у нас есть 3 утверждения, поддерживающие класс Negative из 5 утверждений

P(положительный результат) = 3/5 ; только 2 утверждения, поддерживающие класс Positive

Прежде чем двигаться дальше, мы должны знать о предположениях, которых придерживается Наивный Байес.

  1. Неизвестные слова: как Наивный Байес отнесется к слову, которое никогда не встречалось во время обучения? Наивный Байес спокойно игнорирует такие неизвестные слова

Далее нам нужно подсчитать частоты, чтобы вычислить вероятность.

Чтобы получить вероятность P(f_i|c), нам просто нужно подсчитать количество вхождений слова «f» в словарь, что такое словарь (V)? все уникальные слова во всех документах.

Сначала мы объединяем все документы, относящиеся к положительному классу «c», затем мы используем частоту w_i в объединенном документе, чтобы получить максимальную вероятность вероятности

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

где w — все уникальные слова в словаре, имеющие тег «положительный».

Наивный байесовский метод умножает вероятности всех признаков, поэтому, если какая-либо вероятность становится равной нулю, вероятность всего класса становится равной нулю. Чтобы избежать этого, мы можем использовать сглаживание, здесь мы собираемся добавить единицу к числителю и знаменателю (Лаплас).

Давайте вернемся к нашему примеру, мы собираемся выяснить настроение отзыва S= «предсказуемо, но не весело»

Слово «with» недоступно в тренировочном наборе, поэтому мы можем его игнорировать.

После применения сглаживания Лапласа вероятность правдоподобия выглядит следующим образом:

где |V| количество уникальных слов в словаре.

мы вычисляем вероятность для каждого уникального слова в утверждении S

Общее количество слов во всех утверждениях принадлежит классу Negative = 14.

Общее количество слов во всех утверждениях, принадлежащих классу Positive = 9

Общее количество уникальных слов в словаре = 20

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

Понятно, что модель предсказывает класс «Отрицательный» для тестового предложения S.

Использованная литература :

[1] Обработка речи и языка Даниэля Джурафски и Джеймса Х.Мартина.

[2] Учебник по машинному обучению Михаила Эрика