Здесь мы продемонстрируем, как наивный байесовский классификатор решает давнюю интернет-проблему - «спам». Чтобы решить эту проблему, мы выполним
несколько простых шагов. Прежде чем продолжить, я предполагаю, что вы имеете базовое представление о наивных байесовских классификаторах, если
нет - NB Classifiers - это алгоритм классификации, используемый для решения определенных задач классификации.
Под "определенным" значением наивного байесовского классификатора использование наивного байесовского классификатора было бы неправильным алгоритмом
в сценарии, в котором точки набора данных зависят, NBC делает предположение о ваших данных, каждой функции будет
масштабироваться одинаково, отсюда и имя.

Что нам нужно?
1. Образец набора данных о спаме и законных темах электронной почты, чтобы сузить наш список слов. Поскольку это в основном демонстрация, мы не будем работать с большими наборами данных, довольно популярными темами спам-писем. Обратите внимание, что при работе над крупномасштабными проектами наборы данных должны быть надежными.
2. Python3.x Intepreter
3. Глубокие знания полиномиальной наивной байесовской классификации.

Как мы это делаем?
У нас есть образцы популярных тем спама с сайта wordsthatclick.com
1. Сэкономьте на всех автомобилях
2. Растопите жир < br /> 3. Вас рекомендовали в глобальную профессиональную сеть
4. Как вырасти на 3+ дюйма всего за несколько недель
5. Вы выиграли лотерею
Мы также есть образцы электронных писем без спама
1. Спасибо за подписку на нашу рассылку
2. Ваш профиль был недавно изменен
3. Подтвердите новую учетную запись
4. Рекомендуемые курсы для вас
5. Счет клиента
Но имейте в виду, что спамеры не глупы, они все лучше обходят обнаружение спама, а это означает, что чем лучше
наборы данных, тем лучше алгоритм.

Технические вопросы?
1. Преобразуйте данные (как спам, так и не спам) в таблицу частот, это будет сделано в коде, и здесь любимый питомец искусственного интеллекта - Python;

2. Создайте таблицу правдоподобия
3. Используйте наивное уравнение Байеса для вычисления апостериорной вероятности для каждого класса (спам или отсутствие спама). Класс с наивысшей апостериорной вероятностью - это
результат прогнозирования, заданный письмо с темой «Вам рекомендуются новые профессиональные курсы»

4. Шаги 3 и 4 будут решаться одновременно, путем вычисления апостериорной вероятности каждого слова в новой строке темы, и мы будем применять сглаживание Лапласа, чтобы исправить пропущенные слова в наших наборах данных. Затем мы складываем результаты каждого из этих слов. Класс с наивысшей апостериорной вероятностью
- это категория, к которой относится это новое письмо.
Во-первых, мы вычисляем апостериорную вероятность классового спама с учетом предиктора («вам рекомендуются новые профессиональные курсы»).

Апостериорная вероятность класса «спам» с учетом предиктора (новая строка темы письма) оказалась равной 0,8839285714285714.

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

При этом апостериорная вероятность равна 1,4375. Наконец, поскольку это универсальная правда, что 1,4375 ›0,8839285714285714, новое письмо в нашем почтовом ящике с темой« Вам рекомендуется новый профессиональный курс », было классифицировано алгоритмом как« не спам ». Мы в безопасности. :)

Полный исходный код можно найти на моем github https://github.com/0xskywalker/NaiveBayes_SpamDetection.git

Спасибо.