Джереми Педерсен
Спам!? Спам.
Мы все уже получали спам-письма. Эти раздражающие, а иногда и опасные сообщения могут поступать из разных источников: мошенники, пытающиеся украсть ваши деньги, недобросовестные компании, пытающиеся продвигать свои продукты, даже преступники, пытающиеся собрать адреса электронной почты или уговорить ваш компьютер запустить вирусы или вредоносное ПО.
Спам-почта когда-то казалась неудержимой безжалостной силой. Когда я получил свой первый ноутбук в начале 2004 года, я получал 10 или 20 спам-сообщений в день, и всегда было 2 или 3, которые проходили через мой спам-фильтр и попадали в мой почтовый ящик.
Но за последние 20 лет спам почти перестал быть проблемой. Когда я вхожу в свои учетные записи Outlook или Gmail, я почти никогда не вижу спама. Фактически, последний раз, когда я видел настоящее спам-сообщение в своем почтовом ящике Gmail, это было более десяти лет назад.
Итак, что случилось? Наконец-то закон настиг спамеров? Покаялись ли они и перешли к более полезной деятельности? Как раз наоборот: по некоторым оценкам, сейчас спам составляет 90% всей рассылаемой электронной почты. Так что же изменилось? Где весь спам?
Это все в цифрах
В начале 2002 года Пол Грэм опубликовал на своем личном сайте эссе под названием План против спама. В нем он описал, как использовал наивный байесовский классификатор для обнаружения и блокировки спама.
Идея старше, чем эссе Пола Грэма, но он был первым, кто применил ее на практике таким простым и эффективным способом.
Наивный байесовский классификатор — это метод машинного обучения, основанный на теореме Байеса, важной идее из теории вероятностей и статистики.
Теорема Байеса позволяет вам предсказать вероятность чего-либо, учитывая предварительные знания об условиях, связанных с тем, что вы хотите предсказать. Какое это имеет отношение к спаму? Теорема Байеса может помочь вам рассчитать вероятность того, что сообщение является спамом, на основе слов, содержащихся в сообщении.
Наивный байесовский подход прост. Вы начинаете с набора известных спамовых и не спамовых сообщений. Это ваши тренировочные данные. Вы подсчитываете все слова, которые найдете в каждом из этих двух наборов почты. Затем вы можете присвоить оценку (вероятность) каждому слову в зависимости от того, как часто оно встречается в спамовых и не спамовых сообщениях.
Теперь, когда вы получаете новое электронное письмо, вы можете разделить новое электронное письмо на его компоненты (слова) и вычислить, используя теорему Байеса, насколько вероятно, что сообщение является спамом, учитывая, что вы видели определенное слово.
Суммируя оценки для всех слов в электронном письме, мы получаем общую оценку вероятности спама, которая говорит нам, следует ли нам бросать электронное письмо в папку «Спам».
Удивительно то, насколько хорошо это работает. Даже если вы предполагаете, что все слова в письме независимы друг от друга (это не так: в конце концов, в английском языке есть грамматические правила), вы можете все равно сортировать спам с поразительной точностью. Еще лучше то, что уровень ложных срабатываний (скорость, с которой настоящая электронная почта ошибочно идентифицируется как спам) очень низок.
Самое приятное в этом то, что эта система может обучаться. Каждое спам-сообщение, прошедшее через фильтр, может быть помечено как спам вами, пользователем: эти новые спам-сообщения затем добавляются в модель, поэтому будущий спам не попадает в ваш почтовый ящик.
Так что же случилось со всем спамом? Машинное обучение произошло! Благодаря наивным байесовским классификаторам большинство современных пользователей электронной почты просто не видят большого количества спама: большая часть его улавливается современными спам-фильтрами, которые постоянно учатся идентифицировать даже самые изощренные спам-сообщения.
Построение классификатора
Вы можете попробовать это сами. Общедоступные наборы данных электронной почты легко найти на таких сайтах, как Kaggle, и большую часть предварительной обработки электронной почты (открытие электронных писем, разбиение их на наборы слов и т. д.) можно выполнить с помощью существующих библиотек Python.
У Alibaba Cloud Academy есть страница на GitHub, где мы объясняем, как это сделать с помощью Платформы для искусственного интеллекта (PAI) от Alibaba Cloud. В частности, используется PAI DSW (Data Science Workshop), который представляет собой веб-консоль, которая дает вам легкий доступ к пространству проекта с 5 ГБ бесплатного хранилища, с интерфейсом Jupyter Notebook, который позволяет вам использовать мощное оборудование для запуска моделей с помощью популярных инструментов, таких как Tensorflow.
Весь код и инструкции, необходимые для создания собственного спам-фильтра в Alibaba Cloud, можно найти прямо здесь.
Шаги просты
- Зарегистрируйте учетную запись Alibaba Cloud
- Загрузите код Jupyter Notebook и набор данных Kaggle, следуя этим инструкциям
- Включите PAI и настройте блокнот PAI DSW (небольшой блокнот подойдет, нет необходимости в большом количестве ОЗУ или графическом процессоре)
- Загрузите файл блокнота Jupyter (
.ipynb
файл) и данные электронной почты - Запустите код в блокноте
Вот и все! Обязательно прочитайте код, чтобы понять, что он делает. На странице GitHub есть более подробная информация (см. ссылки выше), если вам интересно, какие библиотеки используются.
Дальнейшее обучение
Хотите узнать больше? Ознакомьтесь с этими курсами в Alibaba Cloud Academy:
- Алгоритм машинного обучения. Серия 2. Наивный байесовский классификатор
- Внедрение машины опорных векторов через PAI