False positive антифрода: как калибровать правила и не отклонять хороший трафик

Как измерять ложные срабатывания антифрода: confusion matrix, проверочная выборка, денежная функция потерь, shadow mode, reason codes и контроль дрейфа.

Оглавление11 разделов

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

Главная проблема

Истинную метку нельзя брать из решения той же системы. Нужен независимый review, подтверждённый outcome или иной эталон с описанной неопределённостью.

Confusion matrix

Факт / решениеЗаблокированоРазрешено
НедопустимоеTrue positiveFalse negative
ДопустимоеFalse positiveTrue negative

False positive rate = FP / (FP + TN), а precision блокировки = TP / (TP + FP). Метрики отвечают на разные вопросы и публикуются с числителями, знаменателями и интервалами.

Стратифицированная проверка

Отбирайте строки по rule, score band, source, GEO и денежному влиянию. При итоговой оценке возвращайте веса реальных страт, иначе усиленная проверка редкой причины завысит её долю.

Воспроизводимая выборка
WITH ranked AS (
 SELECT e.*,row_number() OVER(
  PARTITION BY reason_code,score_band,source_id
  ORDER BY md5(event_id||:audit_salt)) rn
 FROM antifraud_decisions e
)
SELECT * FROM ranked WHERE rn<=:per_stratum;

Денежная функция потерь

Цена порога
expected_loss =
 FP * loss_of_rejected_good_event
 + FN * loss_of_missed_abuse
 + review_volume * review_unit_cost

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

Shadow mode и canary

Новое правило сначала рассчитывает решение без влияния на поток. После оценки объёма и outcomes включается небольшой canary с kill switch. Полное включение получает новую rule_version.

Reason codes и апелляции

Каждая блокировка получает reason_code, rule_version и evidence reference. Апелляция создаёт новую версию решения, не стирая исходную. Успешные апелляции становятся calibration signal.

Контроль дрейфа

  • Распределение score bands
  • FP и FN зрелой проверки
  • Approval апелляций
  • Mix источников и устройств
  • Время review
  • Денежный impact
Rejected не всегда fraud

Eligibility, duplicate, technical и policy требуют отдельных категорий и доказательств.

Неизвестная истина и disagreement review

Во многих случаях окончательная метка недоступна даже эксперту. Храните verdict confirmed_good, confirmed_abuse и unresolved, а не заставляйте reviewer выбирать бинарный ответ. Строки, где модель, правило и два проверяющих расходятся, формируют отдельную очередь: именно они лучше всего показывают неоднозначность определения.

Интервалы для редких ошибок

Доля false positive на двадцати проверках не должна выводиться с точностью до десятых процента. Показывайте количество, оценку и интервал Уилсона либо Bayesian posterior. Сравнение версий выполняется на одинаковом audit design; иначе изменение состава выборки выглядит как улучшение правила.

Взвешенная оценка по стратам
FP_rate = sum_h(population_weight_h * FP_rate_h)

population_weight_h — реальная доля страты,
а не доля строк в усиленной audit-выборке.

Локальная калибровка вместо общего порога

Одинаковый score может иметь разный смысл для нового устройства и знакомого маршрута, крупной суммы и обычной, GEO с хорошей разметкой и сегмента с пропусками. Если вводятся разные пороги, они получают собственные rule_version, функцию потерь и минимальный объём проверки. Скрытая ручная корректировка недопустима.

Критерий безопасного выпуска

  • Shadow не ухудшает weighted false-positive loss
  • Canary не нарушает денежный guardrail
  • Reason codes покрывают основную массу решений
  • Unresolved не маскируется как abuse
  • Апелляция воспроизводима по сохранённой версии
  • Есть автоматический rollback по зрелому сигналу

Вывод

Калибровка антифрода балансирует две ошибки и цену проверки. Независимая выборка измеряет false positive, функция потерь выбирает порог, а shadow и canary защищают production.

Станьте партнёром и начните работать

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

СТАТЬ ПАРТНЁРОМ

Связанные материалы

Все статьи
Аналитика

Бюджет первого теста: как рассчитать сумму, которой хватит для решения

Как рассчитать бюджет теста рекламы через частоту события, MDE, power, стоимость трафика, зрелость, технический этап, лимит потерь и оборотный капитал.

Аналитика

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

Как построить аналитическую витрину арбитража: grain, факты, измерения, click ID, статусы, валюты, ревизии, late events, тесты и воспроизводимые отчёты.

Аналитика

Statistical power и MDE: как планировать тест конверсии до запуска

Подробный разбор statistical power, MDE и размера выборки для конверсии: baseline, alpha, beta, абсолютный эффект, кластеры, лаг и симуляция дизайна.