Перейти к содержанию

Детекция спама: определение задачи

~4 минуты чтения

Предварительно: Подготовка к интервью MLSD | Материалы MLSD

По данным Google, Gmail ежедневно блокирует более 15 миллиардов спам-писем -- это 45% всего входящего трафика. Системы детекции спама обрабатывают 300+ миллиардов сообщений в день с latency < 50ms и precision > 99%, что делает их одними из самых масштабных ML-систем в production. На MLSD-интервью эта задача проверяет понимание adversarial ML, multi-signal fusion и trade-off между precision и recall.

Бизнес-контекст

Spam Detection -- ML-система для обнаружения нежелательных сообщений (спам) в email, SMS, социальных сетях, отзывах и комментариях.

Примеры применения

Платформа Тип спама Объём Challenge
Gmail Email spam 300B emails/day Sophisticated phishing
WhatsApp Message spam 100B msgs/day End-to-end encryption
Amazon Fake reviews Millions/day Coordinated attacks
Twitter/X Bot spam Millions/day Automated accounts
SMS Smishing Billions/day Short text, no context

Типы спама

1. Email Spam

  • Commercial spam (продажи)
  • Phishing (кража данных)
  • Malware distribution
  • Nigerian prince scams

2. Social Media Spam

  • Bot accounts
  • Fake engagement
  • Scam links
  • Propaganda

3. Review Spam

  • Fake positive reviews
  • Fake negative reviews (competitors)
  • Review bombing

4. Comment Spam

  • Link spam (SEO)
  • Promotional spam
  • Bot comments

5. SMS Spam (Smishing)

  • Phishing SMS
  • Promotional SMS
  • OTP fraud

Постановка задачи

Функциональные требования

  1. Real-time Classification: Решение до доставки
  2. Multi-modal: Text, links, sender reputation
  3. Feedback Loop: Учёт пользовательских репортов
  4. Low False Positives: Не блокировать легитимное
  5. Explainability: Почему заблокировано

Нефункциональные требования

Метрика Требование Обоснование
Latency < 50ms Не задерживать доставку
Precision > 99% Минимум ложных блокировок
Recall > 95% Ловить большую часть спама
Throughput 1M msg/sec Gmail-scale

Challenges

1. Adversarial Environment

Спамеры постоянно адаптируются:
- Новые темы и форматы
- Обфускация текста
- Image spam (text in images)
- Typosquatting domains

Model быстро устаревает.

2. Class Imbalance

Spam rate varies:
- Email: ~45% spam
- SMS: ~2% spam
- Reviews: ~5% fake

При 99% precision на 2% spam:
- 1% of spam blocked incorrectly
- But 1% of 98% legit = много FP

3. Cold Start

Новые отправители:
- Нет истории
- Могут быть легитимными
- Или новые спамеры

4. Evolving Patterns

Спам меняется со временем:
- COVID спам в 2020
- Crypto scams в 2021
- AI-generated spam в 2023

Нужно быстро адаптироваться.

Метрики успеха

ML Metrics

Метрика Описание Target
Precision Legit среди заблокированных > 99%
Recall Пойманный спам > 95%
F1 Score Баланс > 0.97
FPR False Positive Rate < 0.1%

Business Metrics

Метрика Описание
User Reports Репорты на пропущенный спам
Complaint Rate Жалобы на ложные блокировки
Time to Catch Время до обнаружения нового типа

Feature Categories

1. Content Features

  • Text patterns (keywords, phrases)
  • Links and domains
  • Attachments
  • Language and encoding

2. Sender Features

  • Sender reputation
  • Account age
  • Sending volume
  • Previous spam history

3. Network Features

  • IP reputation
  • Sending patterns
  • Recipient clusters
  • Graph connections

4. Behavioral Features

  • Sending velocity
  • Time patterns
  • Response rates
  • Bulk sending

Architecture Overview

graph TD
    MSG["MESSAGE"] --> RULES["Rule-based Filters"]
    RULES --> ML["ML Model"]
    ML --> ENS["Ensemble Decision"]
    ENS --> INBOX["INBOX"]
    ENS --> SPAM["SPAM"]
    ENS --> REVIEW["REVIEW"]

    style MSG fill:#e8eaf6,stroke:#3f51b5
    style RULES fill:#fff3e0,stroke:#ef6c00
    style ML fill:#e8f5e9,stroke:#4caf50
    style ENS fill:#f3e5f5,stroke:#9c27b0
    style INBOX fill:#e8f5e9,stroke:#4caf50
    style SPAM fill:#fce4ec,stroke:#c62828
    style REVIEW fill:#fff3e0,stroke:#ef6c00

Trade-offs

Аспект Strict Lenient
Spam caught More Less
False positives More Fewer
User complaints Blocked legit Spam in inbox
Resource usage Higher Lower

Типичные заблуждения

Заблуждение: высокий Recall важнее Precision в спам-детекции

Наоборот: ложная блокировка легитимного письма (FP) обходится в 10-100x дороже пропущенного спама. Gmail таргетирует Precision > 99.9% при Recall ~95%. Пропущенный спам -- раздражение, заблокированное деловое письмо -- потерянная сделка или пропущенный дедлайн.

Заблуждение: ML-модель достаточна для борьбы со спамом

Rule-based фильтры (blocklists, SPF/DKIM/DMARC, regex) перехватывают 60-70% спама с latency < 0.1ms и Precision ~100%. ML нужен для оставшихся 30-40% sophisticated спама. Без rules-first архитектуры ML-модель будет тратить ресурсы на тривиальные случаи.

Заблуждение: одна модель справится со всеми типами спама

Email spam, SMS smishing и fake reviews -- принципиально разные задачи. Email имеет headers, sender reputation, DKIM. SMS -- короткий текст без контекста. Fake reviews -- координированные атаки с нормальным языком. Ensemble из специализированных моделей даёт +15-20% F1 по сравнению с единой моделью.

Ключевые вопросы для интервью

  1. Тип спама? (email, SMS, reviews)
  2. Объём? (messages per day)
  3. Текущий spam rate?
  4. Latency requirements?
  5. Есть ли historical data?
  6. Feedback mechanism? (user reports)
  7. Quarantine vs Block vs Flag?
  8. Explainability requirements?

Вопросы с оценкой ответов

Как вы выберете метрику для спам-детекции: Precision или Recall?

❌ "Нужен высокий Recall, чтобы ловить весь спам" -- игнорирует стоимость FP для пользователя

✅ "Precision приоритетнее: заблокированное легитимное письмо стоит 10-100x дороже пропущенного спама. Таргетирую Precision > 99% с Recall > 95%. Для неуверенных случаев использую quarantine вместо block -- пользователь может проверить сам. Порог решения зависит от типа: transactional email -- ниже threshold (не блокировать), promotional -- выше."

Как бороться с adversarial спамерами, которые постоянно адаптируются?

❌ "Переобучать модель чаще" -- необходимо, но недостаточно

✅ "Multi-signal fusion: контент -- только один сигнал. Добавляю sender reputation (account age, bounce rate), network features (IP reputation, domain age), behavioral patterns (sending velocity, recipient diversity). Спамер может изменить текст, но не может одновременно подделать все сигналы. Плюс adversarial training на known evasion techniques (l33t speak, unicode tricks) и daily model updates с user feedback loop."