Наивный байесовский алгоритм машинного обучения. Часть 1

машинное обучение

введение

Я читал статью раньше, иностранный программист написал несколько потрясающих сценариев оболочки, в том числе автоматические текстовые сообщения своей жене после работы ночью, автоматический обмен кофе, автоматическое сканирование электронной почты от администратора баз данных и т. д. Так что я также хочу использовать то, что я узнал, чтобы сделать что-то интересное. Мои мысли таковы:

  1. Сначала я пишу скрипт для сканирования шуток на веб-сайте.
  2. Затем напишите сценарий оболочки, чтобы автоматически получать последние шутки каждый день в 6 утра.
  3. Затем используйте модель наивного Байеса, чтобы определить, является ли текущая шутка шуткой для взрослых.
  4. Если это шутка для взрослых, используйте скрипт, чтобы автоматически отправить ее на почтовый ящик вашего приятеля.
  5. Если это не шутка для взрослых, напишите сценарий для автоматической отправки на электронную почту подруги.

Из этой серии статей вы узнаете:

  1. Математика наивного Байеса
  2. Конкретный рабочий процесс алгоритма (с примерами)
  3. Алгоритм быстрой реализации scikit-learn

Эта серия статей также потребует некоторых знаний о scrapy, pandas и numpy, Я объясню это подробно, когда столкнусь с этими знаниями. В этой серии статей я в основном подробно расскажу о процессе реализации третьего шага выше, а в остальном я выложу исходный код на github для ознакомления. Теперь давайте насладимся этим прекрасным путешествием.

Наивный байесовский обзор

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

Математика наивного Байеса

Апостериорные вероятности

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

Мы можем объяснить приведенную выше формулу на примере того, идет дождь или нет.

Мы видим, что если мы хотим предсказать вероятность определенного результата при данном явлении, мы должны знать: 1. Вероятность того, что это явление произойдет при данном исходе. 2. Вероятность такого исхода. 3, вероятность этого явления.

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

Цель Наивного Байеса — найти их по отдельности и выбрать наибольшую вероятность.

Ниже я объясню каждую из трех вышеприведенных вероятностей.

Условные вероятности

Независимость случайных величин означает, что присутствие одной переменной, о которой я вам говорю, не влияет на вашу веру в вероятность другой. Простейшим примером является подбрасывание монеты, где первая решка не влияет на ваш шанс выпадения решки снова (т.е. 0,5).

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

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

Теперь я проиллюстрирую изложенную выше концепцию на простом примере сортировки спама. Например, у меня есть 4 письма, 2 из которых являются спамом, и в векторе признаков есть 4 признака. Конкретная таблица выглядит следующим образом:

Образец серийного номера love buy deal cat Это спам
1 1 0 0 1 нет
2 0 1 1 0 да
3 0 1 0 1 да
4 1 0 1 1 нет

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

Априорные вероятности

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

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

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

Вероятность доказательств

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

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

Аддитивное сглаживание

Или в примере с электронным письмом выше, предположим, мы спросим, ​​мы обнаружим, что слово любовь не появляется в спам-письме, поэтому вероятность равна 0, если условная вероятность равна 0, то вся апостериорная вероятность равна 0. Чтобы избежать появления нулевой вероятности, мы можем добавить член сглаживания. Измените приведенную выше формулу условной вероятности к следующему виду:

  • Дополнительный параметр сглаживания. сглаживание по Лидстоуну; сглаживание по Лапласу.
  • количество функций

Суммировать

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