Детекция спама: определение задачи¶
~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 |
| 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
Постановка задачи¶
Функциональные требования¶
- Real-time Classification: Решение до доставки
- Multi-modal: Text, links, sender reputation
- Feedback Loop: Учёт пользовательских репортов
- Low False Positives: Не блокировать легитимное
- 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 по сравнению с единой моделью.
Ключевые вопросы для интервью¶
- Тип спама? (email, SMS, reviews)
- Объём? (messages per day)
- Текущий spam rate?
- Latency requirements?
- Есть ли historical data?
- Feedback mechanism? (user reports)
- Quarantine vs Block vs Flag?
- 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."