Расскажи про самый неуспешный рабочий ML-проект

«Расскажи про самый неуспешный рабочий ML-проект» — вопрос из категории Софт-скиллы, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Один из проектов, который не достиг ожидаемых бизнес-результатов, — это предсказание оттока клиентов для телеком-оператора. Я столкнулся с несколькими фундаментальными проблемами:

  1. Качество данных: Исторические данные были сильно неполными (более 30% пропусков в ключевых полях), а целевая переменная (факт ухода) определялась менеджерами субъективно, без четких правил.
  2. Переобучение: Модель CatBoost показывала accuracy около 95% на кросс-валидации, но в production её precision упал до 60%. Это происходило потому, что модель научилась угадывать простые сезонные паттерны, но не выявила реальные причины оттока.
  3. Временной bias: Мы не учли временную природу данных при разбиении. В тест попадали данные из того же временного периода, что и в train, что и давало завышенные метрики.

Извлеченные уроки:

  • Валидация: Для подобных задач необходимо использовать временные срезы (time-series split), а не случайное разбиение.
  • Согласование метрик: Следует сразу согласовывать с бизнесом, какие метрики (precision, recall, F1) критичны, а не оптимизировать просто accuracy.
  • Работа с данными: Нужно больше времени уделять EDA и очистке данных на раннем этапе, а также формализации процесса разметки.

Пример ошибочного подхода к разбиению данных для временного ряда:

# НЕВЕРНО для данных с временной зависимостью
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)