Привет! На связи Кристина Желтова, ментор курса «ML-инженер».
На практике нередкая ситуация, когда ML-специалист или даже целая команда празднуют победу — их модель показывает на локальных экспериментах отличное качество, а значит, задача решена!
Модель проходит код-ревью, готовится к раскатке в прод и пилотированию или A/B-тестированию, и вот час настал — её выпускают в настоящую жизнь, в production. Но через какое-то время разгневанные заказчики приходят и сетуют на сошедшую с ума модель, которая одобрила кредиты всем подряд или рекомендовала потратить весь бюджет маркетинга на удержание клиентов, которые и так не собирались уходить.
❓ Какие могут быть причины такого поведения модели, и как узнать о существовании проблемы не от заказчиков, а во время экспериментов?
1️⃣ Temporal Leakage: неправильная разбивка данных, упорядоченных по времени
Проблема: команда использовала обычный train_test_split с shuffle=True на упорядоченных данных с временными метками.
Что произошло: модель училась на данных от января до декабря, а тестировалась на случайно перемешанных данных из этого же периода. Фактически, модель использовала «будущее» для предсказания «прошлого».
Правильный подход: использовать специальную валидацию для временных данных — TrainTestSplit.
2️⃣ Feature Leakage: признаки из «будущего»
Проблема: в датасете могли быть признаки, которые содержали информацию из будущего относительно момента предсказания. Например, параметр customer_lifetime_value, рассчитанный на транзакциях после целевой даты предсказания.
Правильный подход: проверять, что все признаки, агрегации и статистики считаются только на данных до целевой даты предсказания.
3️⃣ Target Leakage: утечка информации из целевой переменной
Проблема: для моделирования использовали признаки, напрямую связанные с целевой переменной или вычисляемые из неё.
Правильный подход: все признаки должны быть собраны или вычислены только из данных, доступных до момента, когда модель делает прогноз. Также стоит отделять создание признаков от целевой переменной во времени.
Кстати, сегодня последний день, когда можно записаться на курс-симулятор «ML-инженер» по низкой цене. Регистрируйтесь и создавайте эффективные модели машинного обучения под руководством опытного ментора-меня 😉
➡️ Записаться на курс со скидкой 15%
📊 Simulative