в чем наивность наивного байеса

Наивный Байес, или о том, как математика позволяет фильтровать спам

Привет! В этой статье я расскажу про байесовский классификатор, как один из вариантов фильтрации спам-писем. Пройдемся по теории, затем закрепим практикой, ну и в конце предоставлю свой набросок кода на мною обожаемом языке R. Буду стараться излагать максимально легкими выражениями и формулировками. Приступим!

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Без формул никуда, ну и краткая теория

Байесовский классификатор относится к разряду машинного обучения. Суть такова: система, перед которой стоит задача определить, является ли следующее письмо спамом, заранее обучена каким-то количеством писем точно известных где «спам», а где «не спам». Уже стало понятно, что это обучение с учителем, где в роли учителя выступаем мы. Байесовский классификатор представляет документ (в нашем случае письмо) в виде набора слов, которые якобы не зависят друг от друга (вот от сюда и вытекает та самая наивность).

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

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса
в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса— вхождение слова в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байесав документ класса в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса(со сглаживанием)*
в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса— количество слов входящих в документ класса в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса
М — количество слов из обучающей выборки
в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса— количество вхождений слова в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байесав документ класса в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса
в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса— параметр для сглаживания

Когда объем текста очень большой, приходится работать с очень маленькими числами. Для того чтобы этого избежать, можно преобразовать формулу по свойству логарифма**:

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Подставляем и получаем:

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

*Во время выполнения подсчетов вам может встретиться слово, которого не было на этапе обучения системы. Это может привести к тому, что оценка будет равна нулю и документ нельзя будет отнести ни в одну из категорий (спам/не спам). Как бы вы не хотели, вы не обучите свою систему всем возможным словам. Для этого необходимо применить сглаживание, а точнее – сделать небольшие поправки во все вероятности вхождения слов в документ. Выбирается параметр 0 А тут, собственно, и сам код

Спасибо большое за потраченное время на чтение моей статьи. Надеюсь, Вы узнали для себя что-то новое, или просто пролили свет на непонятные для Вас моменты. Удачи!

Источник

Наивный Байесовский классификатор в 25 строк кода

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

Немного теории

Пусть у нас есть строка текста O. Кроме того, имеются классы С, к одному из которых мы должны отнести строку. Нам необходимо найти такой класс с, при котором его вероятность для данной строки была бы максимальна. Математически это записывается так:

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Вычислить P(C|O) сложно. Но можно воспользоваться теоремой Байеса и перейти к косвенным вероятностям:

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Так как мы ищем максимум от функции, то знаменатель нас не интересует (он в данном случае константа). Кроме того, нужно взглянуть на строку O. Обычно, нет смысла работать со всей строкой. Намного эффективней выделить из нее определенные признаки (features). Таким образом формула примет вид:

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Знаменатель нас не интересует. Числитель же можно переписать так.

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Но это опять сложно. Здесь включаем «наивное» предположение о том, что переменные O зависят только от класса C, и не зависят друг от друга. Это сильно упрощение, но зачастую это работает. Числитель примет вид:

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Финальная формула примет вид:

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса(1)

Т.е. все что нужно сделать, это вычислить вероятности P( C ) и P(O|C). Вычисление этих параметров и называется тренировкой классификатора.

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

В функции train первые пять строк производят подсчет количества классов C, а также частоту появления фич O и С в одном семпле. Вторая часть метода просто нормирует эти частоты. Таким образом на выходе получаются вероятности P© и P(O|C).

В функции classify происходит поиск наиболее вероятного класса. Единственное отличие от формулы (1) в том, что я заменяю произведение вероятностей на сумму логарифмов, взятых с отрицательным знаком, и вычисляю не argmax, а argmin. Переход к логарифмам — распространненный прием чтобы избежать слишком маленьких чисел, которые могли бы получится при произведении вероятностей.
Число 10(^-7), которое подставляется в логарифм, это способ избежать нуля в аргументе логарифма (т.к. он будет иначе он будет неопределен).

Чтобы натренировать классификатор возьмем размеченный список мужских и женских имен и воспользуемся этим кодом:

Файл ‘names.txt’ можно скачать здесь.

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

Алгоритм можно использовать для произвольного числа классов. К примеру, можно попробовать построить классификатор текстов по эмоциональной окраске.

Источник

Что такое «наивный» в наивном классификаторе Байеса?

что наивного в наивном Байесе?

4 ответов

на самом деле есть очень хороший пример Википедии:

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

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

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

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

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

Это действительно помогает не заботиться о зависимости между атрибутами в значительной степени.

Источник

🤖 Наивный байесовский алгоритм классификации: преимущества и недостатки

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Alex Maszański

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Что это такое?

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

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

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

Теоретическая составляющая алгоритма

Теорема Байеса позволяет рассчитать апостериорную вероятность P(A | B) на основе P(A), P(B) и P(B | A).

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Реализация на языке python

Результат работы кода:

Плюсы и минусы

В каких областях использовать?

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

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

Из этого руководства вы узнали о наивном байесовском алгоритме классификации, его работе, проблемах, реализации, преимуществах и недостатках.

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

Источник

🤖 Наивный байесовский алгоритм классификации: преимущества и недостатки

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Alex Maszański

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Что это такое?

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

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

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

Теоретическая составляющая алгоритма

Теорема Байеса позволяет рассчитать апостериорную вероятность P(A | B) на основе P(A), P(B) и P(B | A).

в чем наивность наивного байеса. Смотреть фото в чем наивность наивного байеса. Смотреть картинку в чем наивность наивного байеса. Картинка про в чем наивность наивного байеса. Фото в чем наивность наивного байеса

Реализация на языке python

Результат работы кода:

Плюсы и минусы

В каких областях использовать?

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

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

Из этого руководства вы узнали о наивном байесовском алгоритме классификации, его работе, проблемах, реализации, преимуществах и недостатках.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *