Добро пожаловать на ступеньку контролируемого обучения. Сначала мы обсудим небольшой сценарий, который ляжет в основу будущего обсуждения. Далее мы обсудим математику апостериорной вероятности, также известной как теорема Байеса. Это основная часть наивного байесовского классификатора. Наконец, мы исследуем библиотеку sklearn для python и напишем небольшой код на наивном байесовском классификаторе на Python для проблемы, которую мы обсуждаем в начале.

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

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

Предположим, вы получили анонимное электронное письмо, отправителем которого может быть Алиса или Боб. Допустим, в электронном письме содержится «Я люблю пляжный песок. Кроме того, закат на пляже предлагает прекрасный вид »

Сможете угадать, кто мог быть отправитель?

Что ж, если вы догадались, что это Алиса, вы правы. Возможно, вы рассуждаете о том, что содержание содержит слова «любовь», «великий» и «замечательный», которые использует Алиса.

Теперь давайте добавим комбинацию и вероятность к имеющимся у нас данным. Предположим, Алиса и Боб используют следующие слова с вероятностями, как показано ниже. Теперь вы можете угадать, кто отправил контент: «Прекрасная любовь».

Что вы думаете?

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

Теорема Байеса

Он сообщает нам, как часто происходит A при условии, что происходит B, записывается как P (A | B), когда мы знаем, как часто происходит B при условии, что происходит A , написано P (B | A), и насколько вероятно, что A и B существуют сами по себе.

  • P (A | B) - это «Вероятность A при B», вероятность A при условии, что B происходит.
  • P (A) - вероятность A
  • P (B | A) - это «Вероятность B при A», вероятность B при условии, что A происходит.
  • P (B) - вероятность того, что B

Когда P (огонь) означает, как часто возникает огонь, а P (дым) означает, как часто мы видим дым, тогда:

P (Огонь | Дым) означает, как часто возникает огонь, когда мы видим дым.
P (Smoke | Fire) означает, как часто мы видим дым при пожаре.

Таким образом, формула говорит нам «вперед», когда мы знаем «назад» (или наоборот)

Пример: если опасные пожары случаются редко (1%), но дым довольно распространен (10%) из-за фабрик, а 90% опасных пожаров вызывают дым, то:

P (Огонь | Дым) = P (Огонь) P (Дым | Огонь) = 1% x 90% = 9% P (Дым) 10%

В этом случае в 9% случаев дым означает опасный пожар.

Теперь вы можете применить это к нашему примеру с Алисой и Бобом?

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

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

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

  • Прогнозирование в реальном времени
  • Классификация текста / фильтрация спама
  • Система рекомендаций

Итак, математически мы можем написать как

Если у нас есть некое событие E и тестовые акторы x1, x2, x3 и т. Д.

Сначала мы вычисляем P (x1 | E), P (x2 | E)… [читается как вероятность x1 данного события E], а затем выбираем тестового субъекта x с максимальным значением вероятности.

Надеюсь, это хорошо объясняет, что такое наивный байесовский классификатор. В следующей части мы будем использовать sklearn в Python и реализовать наивный байесовский классификатор для маркировки электронной почты как спама или ветчины. Прокомментируйте в разделе ниже, если вам нужна помощь или у вас есть предложения.

Кодируйте и внедряйте классификацию электронной почты на спам и не спам здесь (часть 2 главы 1).

О машине опорных векторов читайте в главе 2 здесь.