Наивный байесовский классификатор. Основная идея, модификации и реализация с нуля на Python |
||||||||||||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-03-24 12:05 теория вероятности, актуальная математика, алгоритмы машинного обучения Наивный байесовский классификатор (Naive Bayes classifier) — вероятностный классификатор на основе формулы Байеса со строгим (наивным) предположением о независимости признаков между собой при заданном классе, что сильно упрощает задачу классификации из-за оценки одномерных вероятностных плотностей вместо одной многомерной. Помимо теории и реализации с нуля на Python, в данной статье также будет приведён небольшой пример использования наивного Байеса в контексте фильтрации спама со всеми подробными расчётами вручную.
В данном случае, одномерная вероятностная плотность — это оценка вероятности каждого признака отдельно при условии их независимости, а многомерная — оценка вероятности комбинации всех признаков, что вытекает из случая их зависимости. Именно по этой причине данный классификатор называется наивным, поскольку позволяет сильно упростить вычисления и повысить эффективность алгоритма. Однако такое предположение не всегда является верным на практике и в ряде случаев может привести к значительному ухудшению качества прогнозов. Сама же формула Байеса выглядит следующим образом:
где:
А в контексте машинного обучения формула Байеса приобретает следующий вид:
где:
Если объект описывается не одним, а несколькими признаками X1, X2,...,Xn, то формула принимает вид: На практике числитель данной формулы представляет наибольший интерес, поскольку знаменатель зависит только от признаков, а не от класса, и поэтому часто он опускается при сравнении вероятностей разных классов. В конечном счёте правило классификации будет пропорционально выбору класса с максимальной апостериорной вероятностью:
Для оценки параметров модели, то есть вероятностей и , обычно применяется метод максимального правдоподобия, который в данном случае основан на частотах встречаемости классов и признаков в обучающей выборке. Разновидности наивного Байеса В библиотеке scikit-learn есть несколько реализаций наивного байесовского классификатора, отличающиеся предположениями о распределении признаков при заданном классе. К таковым относятся следующие:
где и — это среднее и стандартное отклонения признака в классе . Эти параметры оцениваются с помощью метода максимального правдоподобия по обучающим данным.
где — это количество раз, когда признак встречается в классе ; — общее количество всех признаков в классе ; — количество различных признаков; а — сглаживающий параметр, предотвращающий возникновение нулевых вероятностей.
где — это оценка вероятности признака при дополнении класса , которая вычисляется с помощью сглаживающего параметра и частоты признака во всех классах кроме (в данном случае — это количество раз, когда признак встречается в классе ); — это нормированный вес признака для класса . Предсказанный класс для заданного вектора признаков будет выглядеть следующим образом:
где — это вероятность того, что признак принимает значение 1 (истина) при условии, что объект принадлежит классу ; — значение признака (0 или 1). Категориальный наивный байесовский классификатор (CategoricalNB) — вариант для категориально распределенных данных, основанный на предположении, что каждый описываемый индексом признак имеет своё собственное категориальное распределение. Вероятность признака при заданном классе вычисляется по формуле:
где — это количество раз, когда признак принимает значение в классе ; — общее количество всех признаков в классе в обучающих данных; — сглаживающий параметр; — количество доступных значений признака . Принцип работы наивного байесовского классификатора c гауссовским распределением Алгоритм строится следующим образом:
Наивный Байес в задачах фильтрации спама В контексте фильтрации спама наивный байесовский классификатор основан на частоте появления слов в сообщениях для спама и не спама, и максимизации произведения их вероятностей. Наивность в данном случае будет заключаться в предположении о независимости слов в сообщении от порядка и контекста. Тогда формула Байеса приобретает следующий вид: где:
Для лучшего понимания рассмотрим следующий пример. Предположим, мы хотим классифицировать сообщение "Hi, you won a discount and you can get the prize this evening." и у нас есть обучающая выборка, состоящая из следующих сообщений:
Первым делом необходимо рассчитать частоту появления всех уникальных слов и их общее количество в сообщениях для спама и не спама. Затем производится расчёт вероятностей встретить каждое слово в спам и не спам сообщениях на основе этих частот. Когда в сообщении есть слова, которые раньше не встречались в обучающей выборке, используется сглаживание. Существует много различных видов сглаживаний, но суть самого простого из них заключается в добавлении 1 при подсчёте частот слов в сообщениях. Такой приём позволяет избежать проблему нулевой вероятности. Ниже приведена таблица с расчётом вероятностей для всех слов. В конце рассчитываются вероятности сообщения быть спамом или не спамом, а итоговым прогнозом будет класс с максимальной вероятностью. Где:
Вероятность сообщения быть спамом: Вероятность того, что сообщение не является спамом: Поскольку сообщение является спамом.
Импорт необходимых библиотек Реализация на Python с нуля Код для отрисовка графика Загрузка датасета Обучение моделей и оценка полученных результатов Не смотря на свою простоту, в данном случае алгоритм показал отличный результат, классифицировав правильно абсолютно все образцы, что возможно благодаря построению гибкой решающей границы с высокой обобщающей способностью. Из этого можно сделать интересный вывод, что в некоторых ситуациях более простые модели могут работать гораздо лучше, чем сложные, что можно будет заметить в дальнейшем на примере других алгоритмов. Naive Bayes Naive Bayes (scikit-learn) Преимущества и недостатки наивного байесовского классификатора Преимущества:
Недостатки:
Дополнительные источники Статья «Bayes and Naive-Bayes Classifier», Rajiv Gandhi, Andhra Pradesh. Документация: Видео: один, два, три, четыре. Метод опорных векторов (SVM) ? Источник: habr.com Комментарии: |
|||||||||||