Подробное описание обнаружения спама для реальных SMS-сообщений

Введение

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

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

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

Модель и процедуры, описанные в этой статье, были реализованы в сотрудничестве с Филиппо Монари в рамках XpertAI.

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

Что такое спам и почему его следует предотвращать

Спам — это нежелательные и нежелательные сообщения, рассылаемые в электронном виде, содержание которых может быть вредоносным. Спам по электронной почте отправляется/получается через Интернет, тогда как SMS-спам обычно передается через мобильную сеть. Мы будем называть пользователей, рассылающих спам, «спаммерами». SMS-сообщения обычно очень дешевы (если не бесплатны) для отправки пользователем, что делает их привлекательными для неправомерной эксплуатации. Это еще больше усугубляется тем фактом, что SMS обычно рассматривается пользователем как более безопасная и заслуживающая доверия форма связи, чем другие источники, например. г., электронная почта.

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

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

Различия со спамом по электронной почте

В следующей таблице приведены основные различия между спамом в электронной почте и SMS.

Поведение спамеров

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

Состояние фильтрации спама в службе

На старте проекта действия против спамеров заключались только в блокировке пользователей, превысивших установленные дневные и часовые пороги по количеству отправленных SMS. В то время не существовало ни фильтрации контента, ни какого-либо рассмотрения на основе пользовательских метаданных. Это была система, основанная на правилах, которую было очень легко обойти и которая использовала очень мало данных.

Трудности

  • В открытом доступе нет больших наборов данных спам-СМС. Даже если бы они были, совсем не ожидается, что обучение на этих наборах данных приведет к хорошей производительности в нашем контексте. Следовательно, нет другого выбора, кроме как создать собственный набор данных из реальных данных, поступающих в систему.
  • Отсутствие конвейера для преобразования журналов SMS в структурированный и чистый набор данных.
  • Приложение доступно во многих странах и на многих языках, что добавляет еще один уровень сложности.
  • Конечная модель должна быть развернута и интегрирована в текущую инфраструктуру приложения, принимая необходимые меры предосторожности, чтобы избежать высоких затрат и задержек в доставке сообщений.
  • Субъективные критерии навешивания ярлыков: можно ли блокировать религиозную пропаганду, даже если она не является мошенничеством или мошенничеством? А что, если сообщение транслируется тысячам пользователей?
  • Неоднозначность сообщения: человеку даже может быть трудно отличить настоящие сообщения от спама.

Примеры

Это примеры, основанные на реальных сообщениях (не все из них были спамом):

- Ваша посылка ожидает доставки📥 bit.ly/xxxxxxx

- Насколько быстры ваши пальцы? Протестируйте сейчас! -› https://play.google.com/store/apps/details?idxxxxxxx)

- Добрый вечер, сэр, счастливого возобновления. Сегодня я звонил тебе по номеру, но ты его не взял. Пожалуйста, перешлите деньги за пароль на мой счет.

- Я использую PayTree, отправил вам до 25 евро. Зарегистрируйтесь по моей ссылке, чтобы подать заявку, а затем получите 300 000 евро на раздачу: https://palmpay.site/QXAfLgKsPhKA

- Вы получили 150 долларов США от Джона Карпентера (+1)11111111 на свой счет Mobile Money 2021–04–22 Сообщение от отправителя: Идентификатор транзакции: 2901380912. Для успешного вывода средств Ecobank свяжется с вами для получения дополнительных запросов.

- Перейдите по этой ссылке, чтобы присоединиться к моей группе WhatsApp: http://unnoficcial_whatsapp.com/download

- Пожалуйста, проверьте и пришлите мне мой результат 100 уровня третьего года. Имя: Джон-Пол Джиллиан Джамбая Электронная почта: [email protected] Jamb reg no. 49851407SA Метрический номер. Ю/14/6337 Пароль: 2352246811678 Я заплачу.

Сбор, извлечение и анализ данных

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

Журналы собираются из их хранилища S3, расшифровываются и анализируются, чтобы отделить метаданные журнала от SMS-сообщений. На этом этапе сообщения классифицируются как отправленные, полученные, OTP и не пройденные. OTP означает Одноразовый пароль и отправляется приложением для регистрации и входа в системув то время как ошибка означает, что при доставке была зарегистрирована ошибка. Одноразовые пароли страдают от других видов мошенничества, отличных от СПАМ, которые могли бы быть темой совершенно другой статьи.

После этого выполняется еще один шаг синтаксического анализа, чтобы извлечь тело сообщения, метаинформацию, такую ​​как номер телефона отправителя, провести различие между групповыми и одноранговыми сообщениями и отделить фактическое тело сообщения от автоматически сгенерированного содержимого. например, нижние колонтитулы, ссылающиеся на загрузку приложения, или гиперссылки на домашнюю страницу службы. Затем следует декодирование строки SMS из кодировки UTF-16_LE, которая оказалась более эффективной, чем другие доступные альтернативы.

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

В конце концов, обработанные сообщения сохраняются в другой корзине S3, подключенной к таблицам Athena (обновляемым ежедневно с помощью Crawler), что обеспечивает удобный способ просмотра проанализированных сообщений и выполнения SQL-запросов к набору данных. Из-за огромного объема данных (миллионы сообщений) этапы синтаксического анализа выполняются в кластере, на котором запущено приложение Spark.

На рисунке ниже показан конвейер ETL, развернутый для сбора и обработки ежедневных журналов, необходимых для создания набора данных:

Моделирование

Проблема обнаружения спама может быть решена несколькими способами: от очень простых (например, набор слов) до очень сложных (полная модель НЛП).
Мы остановились на промежуточном подходе, при котором многие особенности сообщения анализируются и передаются в алгоритм машинного обучения, чтобы обнаружить базовые шаблоны, которые помогают различать спам и обычные сообщения.

Тип проблемы

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

Позже эти вероятности спама будут сравниваться с пороговым значением, которое затем приведет к таким действиям, как:

  • Разрешить сообщение
  • Разрешить сообщение и сохранить счетчик предупреждений
  • Заблокировать сообщение
  • Заблокировать сообщение и пользователя

Тип модели

Выбранной архитектурой модели является XGBoost, оптимизированная распределенная библиотека повышения градиента, основанная на методах Gradient Boosting. Он разработан, чтобы быть эффективным, гибким и портативным, и считается одним из лучших по производительности для табличных данных только с числовыми функциями.

XGBoost — это ансамблевая модель, состоящая из ряда слабых обучаемых (по крайней мере, лучше, чем случайное угадывание), которые вместе и работают как «комитет» обеспечивают гораздо лучший прогноз, чем по отдельности. Поскольку новые учащиеся последовательно добавляются в группу, чтобы сосредоточиться на самых больших ошибках предыдущего учащегося, они улучшаются по сравнению с простым «голосованием». Эти слабые ученики обычно представляют собой деревья решений, которые работают, разбивая набор данных на определенные значения по выбранным функциям.

Несмотря на то, что проблема теперь представляет собой проблему регрессии с целями от 0 до 1, мы по-прежнему обучаем модель с потерями binary:logistic для двоичной классификации, которая выводит вероятность.

Процедура маркировки

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

Чтобы решить эту проблему, мы придумали подход, основанный на очень простом принципе: спам-сообщения рассылаются очень часто и пачками с высокой частотой. Это связано с тем, что спамеры хотят распространять свой контент, будь то мошенничество, мошенничество, пропаганда или что-то еще.
Идея состоит в том, чтобы начать с упорядоченного списка сообщений, параметр упорядочения которого мы назовем оценка спама. Это будет представлять собой некоторое вычисление количества раз, когда сообщение было отправлено, и для этого есть много возможных вариантов. Простейший из них — это просто подсчет повторений данного сообщения, но его можно усложнить (не обязательно лучше), рассмотрев, например: сколько разных пользователей отправляют одно и то же сообщение, в сколько разных дней, с какой разницей во времени между последовательными сообщениями. сообщения и т. д.
В конце концов, каждому сообщению будет присвоена оценка спама, которая будет использоваться для определения вероятности спама.

От оценки к вероятности

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

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

Самый простой способ преобразовать оценки спама в диапазоне от 0 до +∞ — применить к этим значениям смещенную сигмовидную кривую. Это гарантирует, что наши значения всегда лежат в диапазоне [0,1].

Более подробно процедура выглядит следующим образом. Из-за очень большого диапазона показателей спама мы сначала логарифмируем, чтобы получить значения журнала спама. Поскольку существует уникальная сигмоида, проходящая через две разные точки, выбрав пары (q1,p1) (q2,p2), мы определяем нашу сигмовидную функцию, которая преобразует оценки спама в вероятности спама. Эти пары представляют собой **(процентиль, вероятность)** по сравнению со спамом в журналах.

С этими параметрами можно подобрать сигмоиду S следующего вида:

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

Обратите внимание, что S становится равным 1, когда x стремится к бесконечности, а S(x) > 0 для всех x.

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

В нашем случае мы выбрали (0,75, 0,05) и (0,99, 0,90), чтобы соответствовать сигмовидной. Это означает, что мы решили, что нижние 75 процентилей всех сообщений будут иметь вероятность спама не более 5%, а нижние 99 процентилей сообщений будут иметь вероятность спама 90% или меньше.

Несмотря на то, что эти 4 значения не участвуют в реальном моделировании, их можно рассматривать как гиперпараметры конвейера, поскольку они играют важную роль в способе получения меток и, таким образом, сильно влияют на эффективность обучения. .
Выбор неправильных значений для этих параметров может сгруппировать все вероятности спама вокруг значения, которое может даже сделать невозможным получение какого-либо значимого обучения. К сожалению, установка этих параметров сильно зависит от данных, поскольку разные наборы данных будут содержать разное количество спама.

Распределение баллов

Вот распределение оценок спама в журналах по определенным процентилям:

На следующем рисунке показано количество оценок нежелательной почты в журнале на левой оси Y. Обратите внимание на логарифмическую шкалу по оси y и на то, что значение 0 (соответствующее сообщениям, отправленным один раз) является наиболее частым. Также показаны вертикальные линии, обозначающие процентили оценки спама в журнале.

Далее показаны вероятности спама. Баллы, используемые для соответствия сигмовидной функции, также указаны на рисунке вместе с некоторыми примерами сообщений и присваиваемыми им оценками спама.

Улучшения в маркировке

Даже если ранее описанный выбор для маркировки является разумным, есть случаи, когда частота сообщений сама по себе не будет хорошим показателем для оценки спама. К таким случаям относятся спам-сообщения, которые следуют одному и тому же шаблону, но с очень небольшими вариациями, например, числом или символами URL-адреса.
Кроме того, очень частым сообщениям, таким как "Доброе утро", также будет присвоен высокий рейтинг спама. Эта проблема по большей части устранена, но с учетом минимальной длины сообщения.
Наконец, законные широковещательные сообщения, такие как групповые события или объявления, будут отправлены несколько раз, что присвоит им промежуточную вероятность спама. Однако это может быть разумным ярлыком, поскольку он может помочь модели научиться назначать промежуточные вероятности массовым сообщениям, которые не являются чистым спамом.

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

Последствия решения проблемы как регрессии

Важно отметить, что когда принимается решение отказаться от проблемы бинарной классификации и вместо этого переопределить ее как проблему регрессии, которая выводит вероятность спама, мы вводим базовую структуру результатов, а именно то, что сообщения являются не просто Ham/Spam, а существует шкала спама, отражающая, насколько сообщение является спамовым.
Эта структура может быть бессмысленной в других задачах классификации, а в некоторых случаях даже ухудшать производительность. Однако в нашей проблеме это дополнительное «упорядочение», создаваемое моделью на основе прогнозируемой вероятности спама, на самом деле является преимуществом в том смысле, что оно может создавать некоторые неудобства при классификации.
Другими словами, сообщения, которые получают промежуточную вероятность спама, могут отражать двусмысленность сообщения и могут быть сохранены для последующей проверки человеком, в то время как сообщения, которые явно являются спамом/ветчиной, будут накапливаться в направлении 1/0, а фактическая вероятность значение становится несколько неуместным.

Язык

Поскольку SMS исходит из приложения для обмена сообщениями в нескольких странах, языки этих сообщений, конечно, очень разные. Английский и французский языки являются первым и вторым по распространенности языками, но были обнаружены десятки других языков, включая арабский, китайский и местные африканские языки.
Существует также сильная зависимость некоторых функций, которые вводятся в модель, от языка. Это означает, что для их использования нам нужен конвейер, в котором эти функции вычисляются для любого языка (с минимальное количество данных для каждого языка, чтобы модель научилась чему-либо осмысленному) o ограничить задачу одним языком, в нашем случае английским.
Учитывая, что спам-сообщения в подавляющем большинстве написаны на английском языке, вероятно, из-за попытки спамеров охватить более широкую аудиторию, анализ сообщений только на английском языке кажется разумным выбором. Мы использовали 60% как минимальную достоверность для принятия определения языка.
Тем не менее, модель, не зависящая от языка, в которой учитываются только признаки, независимые от языка текста, также может быть вариантом, хотя и с возможно сниженной прогностической способностью из-за потери многих признаков.
Важно уточнить, что язык SMS оценивается по чистой версии сообщения. В этом контексте чистый означает токенизированную версию сообщения в нижнем регистре, в которой некоторые функции заменены заполнителями (см. несколько примеров в конце раздела о моделировании).

Длина сообщения

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

Разумный диапазон минимальной длины сообщения составляет от 30 до 50 символов из-за наличия URL-адресов, номеров телефонов и адресов электронной почты в спам-сообщениях, которые занимают много символов. Это может варьироваться в зависимости от проблемы и контекста, в котором создаются сообщения. Довольно часто спамеры сокращают и сокращают свои сообщения после того, как заметят применяемые меры противодействия. Это может привести к необходимости изменить минимальную длину сообщения с необходимым переобучением модели на теперь большем наборе данных.

Разработка функций

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

Первое принятое решение — удалить любое сообщение длиной менее 40 символов в необработанном (необработанном) виде. Затем, по мере извлечения признаков, содержимое очищается до тех пор, пока не будет получена окончательная чистая «токенизированная» версия сообщения, в которой остаются только символы.
Для решения данной задачи использовались следующие функции:

  • Спам-слова (см. следующий раздел)
  • Общие характеристики сообщения
    — Длина
    — Количество слов до и после очистки и их соотношение
    — Средняя длина слова
  • Количество вхождений и соотношение к общему количеству слов конкретных понятий.
    — Адреса электронной почты
    — Общие URL-адреса
    — Время
    — дни недели/месяцы< br /> — Номера телефонов
    — Религиозные слова и содержание
  • Количество вхождений и соотношение к общему количеству символов конкретных символов
    — Заглавные буквы
    — Символы валюты
    — Цифры
    — Знаки препинания (звездочки, восклицательные/вопросительные знаки, хэштеги и т. д.)
     – количество различных символов в сообщении.

Используются и другие менее распространенные функции.

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

Спам-слова

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

  • Количество спам-слов в сообщении
  • Отдельные спам-слова
  • Отношение спамовых слов к не спамовым словам
  • Индивидуальные функции подсчета появления спам-слова

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

Важное примечание: несмотря на название, эти слова не вызывают подозрения в спаме. Они используются моделью для создания функций, связанных с каждым словом.

Оценка модели

Каждая модель обучения с учителем будет измерять потери, полученные путем сравнения истинной и прогнозируемой меток. Обычно обнаружение спама — это проблема классификации, поэтому для оценки производительности модели используются обычные показатели, такие как точность, полнота, точность, значение f1. В нашем случае мы могли бы полагаться на функцию потерь, которую модель использует для обучения, но она не интерпретируется человеком.

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

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

Что еще нужно учитывать

Время выполнения и затраты

Запуск модели в облаке в качестве AWS Lambda требует затрат каждый раз, когда вызывается лямбда (Цены AWS) и запускается модель. Сумма счета зависит от используемой памяти и времени, необходимого для запуска. Развернутая модель очень легкая и быстрая, использует менее 1000 МБ за прогон и занимает менее 10 мс. Для необработанных сообщений, то есть тех, которые не проходят через модель из-за того, что они слишком короткие, официальные или не на английском языке) время выполнения составляет около 2 мс. Для справки: в день с 80 тыс. необработанных сообщений и 27 тыс. сообщений, проходящих через модель, общая стоимость составляет около четверти доллара.

Жестко закодированные правила

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

Исправленные сообщения

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

Обновление модели

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

Возмездие спамеру

Спамеры могут быть очень полны решимости донести свой «контент», и как только они обнаружат, что мы знаем об их попытках, они изменят свое поведение.
Они будут тестировать систему, чтобы определить проверки и блокировки, чтобы обойти их, немного изменить свое сообщение, если система полагается на запоминание или фиксированные правила, проверить пороги длины сообщения и объема сообщения и т. д. .

Ниже приведен пример очень активного и настойчивого спамера:

- Пожалуйста, отправьте вашу фамилию на [email protected] для невостребованных средств, которые были обнаружены на вашей фамилии.
- Пожалуйста, отправьте вашу фамилию на [email protected] для ваших невостребованных средств
- Невостребованный фонд, который был обнаружен на вашей фамилии, отправьте свою фамилию на [email protected] для претензии и проверки и дополнительных запросов о фонде.
- [email protected] для проверки и претензии
- Отправьте свою фамилию на [email protected] 4 претензия
- Пожалуйста, отправьте свою фамилию 2 [email protected] для невостребованных средств, которые обнаружены на вашей фамилии
- Укажите ваше 1-е имя 2 [email protected] 4 ур обнаружил наследство
- фамилия 2 [email protected] 4 невостребованный фонд на ур фамилию
- ур фамилию 2 [email protected] 4 ур фонд
- И т. д.

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

Развертывание

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

В случае нашего приложения модель вызывается всякий раз, когда запрос сообщения поступает в службу обмена сообщениями XMPP. Если содержание сообщения превышает минимальную длину, оно отправляется модели, которая определяет язык сообщения и запускает предиктор спама по его содержимому. Затем модель вернет файл json с выходными данными, включая язык, временную метку, функции отладки (если требуется) и, наконец, вероятность спама.

Сводка

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

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

  1. Реальные данные будут использоваться для будущих итераций модели.
  2. Средство извлечения признаков, определенное на этапах обучения, должно быть точно таким же в реальной среде. В противном случае модель либо выдаст ошибку несовместимости, либо даст неожиданные результаты.
  3. После обучения удовлетворительная модель развертывается в реальной среде. Сначала он некоторое время тестируется в теневом режиме, чтобы получить оценочные показатели без прерывания работы службы. Время вывода также проверяется на этом этапе. Через некоторое время модель в полном объеме внедряется в продакшн-среду.
  4. Результаты, полученные после внедрения модели, должны быть зарегистрированы и сохранены для получения измерений производительности. В зависимости от этого мы можем принять решение о переподготовке и повторном развертывании. Ожидается, что производительность ухудшается со временем, когда новые распределения SMS смещаются от распределения в обучающем наборе.

Полученные результаты

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

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

Последующие действия в зависимости от вероятности спама

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

Например:

  1. Установите предопределенные процентили Q1 и Q2 и получите пороговые значения T1 и T2 для вероятностей спама, соответствующие этим процентилям. Эти значения будут меняться в зависимости от того, является ли целью отзыв (максимальное обнаружение спам-сообщений) или точность (максимальное процент сообщений, правильно помеченных как СПАМ) и должен решаться владельцами продуктов, желательно со знанием предметной области.
  2. Отслеживайте и записывайте сообщение, отправителя и получателя сообщений с вероятностью спама в течение T1 и T2.
  3. Если сообщение превышает T1, есть несколько вариантов:

продвижение приложения — пока ничего не делать

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

— Полностью заблокировать сообщение без уведомления пользователя

4. Если сообщение превышает T2, рассмотреть аналогичные (но более строгие) варианты, что и в предыдущем случае.

5. Сохранять счетчик на пользователей с сообщениями через T1 и T2

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

Использование вероятностей спама

Важно интерпретировать результаты модели в том контексте, в котором она была обучена. Как объяснялось в разделе о моделировании, метки были получены путем подгонки сигмоиды на основе нескольких выбранных вручную критериев. Таким образом, ожидается, что результаты будут поняты с этими критериями. Вероятность спама 0,1 может показаться очень низкой, но в нашем случае она превышает 70% всех сообщений. На самом деле только 10% сообщений имеют вероятность спама выше 0,5.

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

В любом случае рекомендуется учитывать выбранные сообщения, используемые на этапе оценки, при принятии решения о том, как интерпретировать вероятность спама (например, при выборе порогового значения).

Примеры

Вот несколько примеров анализа сообщений, извлечения признаков и прогнозирования вероятности спама. Показана только небольшая часть функций.

Пример 1. Спам-реклама приложения

Пример 2: обычное сообщение

Пример 3: обычное сообщение с эмодзи

Пример 4. Спам-сообщение для подозрительной компании.

Видно, что сообщения 1 и 4, скорее всего, являются спамом, и им присваивается высокая вероятность спама, хотя вероятность сообщения 4 могла быть выше. Вполне вероятно, что модель впервые видит такую ​​закономерность, но она все же обнаруживает некоторые закономерности, связанные со спамом, так что вероятность спама превышает почти 90% всех сообщений.
Сообщениям 2 и 3 правильно присвоена очень низкая вероятность спама в соответствии с выбранными параметрами для обучения.

Выводы

Выводы

  • Автоматическая маркировка на основе частоты позволяет разумно создавать набор данных с метками.
  • Обнаружение спама можно переформулировать как проблему регрессии, а добавленная структура вероятности спама сообщений обеспечивает более тонкую классификацию.
  • Модель успешно обнаруживает новые шаблоны спама, которых нет в обучающем наборе.
  • Результаты значительно улучшаются за счет более качественных этикеток.
  • Вероятность спама не следует интерпретировать в вакууме, а скорее в контексте проблемы и анализируемого набора данных.
  • Запуск модели в облаке очень дешев из-за его скорости и низкого использования памяти.

Возможные улучшения

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

В текущих рамках

  1. Улучшить этикетки. Это, безусловно, самое главное. Качество данных очень сильно коррелирует с качеством прогнозов. Вот некоторые из возможных вариантов:
    — используйте кластеризацию сообщений после извлечения признаков, чтобы сгруппировать похожие сообщения вместе и вручную пометить представителя группы. Затем метка передается всем точкам данных в группе.
     — Придумайте лучшую эвристику маркировки.
     – Используйте внешние данные, такие как отправитель, оператор связи, местоположение и т. д., чтобы распознавать спамеров и маркировать всех их сообщения как спам.
    — Используйте спам-данные из других источников (с осторожностью), если это помогает обучению.
    — Больше ручной маркировки.

2. Попробуйте различные архитектуры моделей и настройте гиперпараметры.

3. Калибровка модели таким образом, чтобы вероятность спама фактически представляла собой математическо определенную вероятность.

Вне текущей структуры

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

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