Джереми Педерсен

Спам!? Спам.

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

Спам-почта когда-то казалась неудержимой безжалостной силой. Когда я получил свой первый ноутбук в начале 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, можно найти прямо здесь.

Шаги просты

  1. Зарегистрируйте учетную запись Alibaba Cloud
  2. Загрузите код Jupyter Notebook и набор данных Kaggle, следуя этим инструкциям
  3. Включите PAI и настройте блокнот PAI DSW (небольшой блокнот подойдет, нет необходимости в большом количестве ОЗУ или графическом процессоре)
  4. Загрузите файл блокнота Jupyter (.ipynb файл) и данные электронной почты
  5. Запустите код в блокноте

Вот и все! Обязательно прочитайте код, чтобы понять, что он делает. На странице GitHub есть более подробная информация (см. ссылки выше), если вам интересно, какие библиотеки используются.

Дальнейшее обучение

Хотите узнать больше? Ознакомьтесь с этими курсами в Alibaba Cloud Academy:

Оригинальный источник: