Как боролись с неполной разметкой и скрытыми фродерами в данных
Что проверяют
Понимаете ли вы, что в антифроде отсутствие метки не означает «честный клиент», и умеете ли строить модель, когда положительные примеры известны лишь частично и с опозданием. Следом спросят, как вы оценивали качество, если истинную долю фрода никто не знает.
Как отвечать
Вопрос про ваш опыт, поэтому нужен свой проект: какие данные, откуда брались метки, что сделали и чем измеряли результат. Каркас, на который стоит опереться:
- природа меток: откуда они (чарджбэки, решения аналитиков, жалобы) и с какой задержкой. Чарджбэк может прийти через несколько недель, поэтому свежие данные размечены неполно;
- смещение разметки: размечено только то, что проверяли, а проверяли то, что уже подсветили правила или прошлая модель. Заблокированные операции вообще не получают метку;
- PU-обучение: неразмеченное трактуется как неизвестное, а не как отрицательный класс;
- поиск скрытых фродеров: аномалии через
IsolationForestили автоэнкодер, графовые признаки (общие устройства, карты, IP, связанные компоненты), распространение меток по графу на соседей известных мошенников; - псевдоразметка и active learning: в обучение идут только уверенные предсказания, спорные случаи уходят аналитикам на ручную проверку;
- валидация: разбиение по времени, окно созревания меток, PR-AUC и precision@k вместо accuracy. Долю пропущенного фрода оценивают по случайной выборке, которую аналитики проверили вручную.
Цифры результата называйте только свои и объясняйте, как их посчитали. Если такого опыта нет, скажите прямо и расскажите, как подошли бы к задаче, опираясь на похожий кейс: открытый датасет транзакций, учебный проект, соседнюю задачу с неполной разметкой.
Где спотыкаются
Считают всё неразмеченное отрицательным классом. Модель учится называть скрытых мошенников честными и отлично выглядит на валидации, которая размечена так же криво.
Валидируются случайным k-fold. Будущее протекает в обучение, одни и те же мошенники с разными операциями попадают в обе части, и метрики завышены.
Приносят «снизили потери на 20%» без понимания, как это посчитано. Первый же вопрос про контрольную группу или базовую линию разваливает историю.