Зачастую метод машинного обучения преподносится разработчиками защитных решений как некая «серебряная пуля», волшебная универсальная технология, позволяющая защитить пользователя от широкого спектра угроз. Но что стоит за этими заявлениями? Без объяснения где именно и как используются эти технологии такие заявления воспринимаются просто как модные маркетинговые лозунги.
В наших продуктах технологии машинного обучения работают уже много лет и в одном мы уверены твердо — их нельзя воспринимать как некую супертехнологию, побеждающую все угрозы. Это высокоэффективный инструмент, но это всего лишь инструмент, один из многих. Мой коллега Алексей Маланов даже написал отдельную статью на тему мифов о машинном обучении в сфере кибербезопасности.
У нас в «Лаборатории Касперского» машинное обучение находит применение в самых разных областях, в частности, при решении такой интересной задачи, как детектирование спам-сообщений. Потому что эта проблема гораздо сложнее чем кажется на первый взгляд. Ведь спам-фильтр должен не просто выявить 100% писем с нежелательным контентом, гораздо важнее корректно доставить все важные для получателя письма. Говоря научным языком, нам надо минимизировать ошибки первого рода — ложные срабатывания, они же false positives (или на жаргоне спам-аналитиков — фолсы).
Еще одна задача, о которой также нельзя забывать, это обеспечение скорости реакции системы. Для того чтобы спам-фильтр не препятствовал нормальному обмену электронной почтой, система должна реагировать практически мгновенно.
Для наглядности можно провести аналогию с треугольником управления проектами, только в нашем случае вершинами будут скорость, отсутствие ложных срабатываний и высокое качество определения спама. И жертвовать чем-то мы не можем. Например, спам можно разбирать вручную — эффективность 100%, но скорость упадет до минимальной. Или можно задать жесткие правила и не пропускать вообще ничего. Тогда спама не будет, но и полезных писем никто не получит. Также можно отфильтровывать только заведомо известный спам, но тогда часть мусорных писем все равно дойдет до адресата. Именно для достижения баланса в этом треугольнике мы и используем технологии машинного обучения, в частности алгоритм, который позволяет классификатору безошибочно и быстро выносить вердикт, касающийся того или иного письма.
Как строится этот алгоритм? Разумеется, при помощи данных. Однако прежде чем эти данные «скармливаются» классификатору, следует решить еще одну проблему — очистить их от шумов. Ведь основная сложность фильтрации спама заключается в том, что критерии восприятия полезности сообщений у разных людей могут быть разными. Один пользователь будет воспринимать письма с предложениями по распродажам как жесткий спам, в то время как другой сочтет их потенциально полезной информацией. Письма такого рода создают шумы, затрудняющие построение качественного алгоритма машинного обучения. Говоря языком статистики, в нашем наборе данных могут быть так называемые выбросы, то есть результаты, резко выделяющиеся из общей выборки. И для решения этой проблемы мы внедрили автоматическую фильтрацию выбросов на базе адаптированного под наши нужды алгоритма Isolation Forest. Безусловно, она позволяет отсеивать только часть шумов, но это уже значительно упрощает жизнь нашим алгоритмам.
В результате мы получаем практически «чистые» данные. Наша следующая задача — преобразовать их в формат, понятный классификатору. То есть в набор признаков (или, как мы говорим, фичей). По большому счету можно выделить три основных типа таких фичей, используемых в нашем классификаторе:
- Текстовые фичи. С ними все более и менее понятно. Они представляют собой отрывки текста, которые часто встречаются в спам-письмах. После предварительной обработки этого текста (препроцессинга) мы получаем достаточно устойчивые признаки.
- Экспертные фичи. Это признаки, базирующиеся на экспертных знаниях, накопленных нашими базами данных за долгие годы работы. Связанные, например, с доменами, с частотностью служебных заголовков и т.д.
- Raw-features. Это, пожалуй, самый непонятный тип признаков. Мы используем части письма в «сыром виде» для выделения признаков, которые мы еще не учли. То есть текст либо трансформируется с использованием векторного представления слов или фраз (word embedding), либо приводится к модели Bag-of-Words (мультимножеству слов, не учитывающему грамматику и порядок), после чего передается классификатору, который самостоятельно выделяет признаки.
Все эти признаки и их различные комбинации помогут нам на последнем шаге – запуске классификатора.
Напомню, на выходе мы хотим получить систему, которая допускает минимум ложных срабатываний, быстра и при этом выполняет основное свое предназначение – ловит спам. Для этого мы строим ансамбль классификаторов, и для каждого набора признаков он свой. Например, для экспертных фичей лучшие результаты показал градиентный бустинг – процедура последовательного построения композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки всех предыдущих алгоритмов. Впрочем, это неудивительно, ведь бустинг показывает хорошие результаты для достаточно широкого круга задач, где представлены численные и категориальные признаки. В результате, вердикты всех классификаторов объединяют, и система выносит финальный вердикт.
Учитывают наши технологии и возможность возникновения такой проблемы как переобучение, то есть ситуации, в которой алгоритм хорошо работает на учебной выборке, но становится неэффективным на тестовой. Для того чтобы она не возникала, параметры алгоритмов классификации подбираются автоматически, при помощи алгоритма случайного поиска (Random Search).
Вот в общих чертах описание такого, как мы используем машинное обучение для борьбы со спамом. А о том, насколько эффективен применяемый нами метод лучше всего расскажут независимые тестирования.