Ошибки при train/test split — 22 апреля 2026 г. в 11:43:13.827
Ошибки при train/test split Train/test split — кажется самой простой частью ML. Но именно здесь чаще всего ломают всю модель. И самое опасное — ты можешь даже не заметить Data Leakage — тихий убийца моделей Ты случайно «подсматриваешь» в тест. Примеры: 👉 нормализация на всём датасете до split 👉 target encoding на всех данных 👉 feature, напрямую связанная с таргетом Модель показывает космический скор, а в проде — провал. Случайный split там, где нельзя Ты делаешь random split… но данные зависимы. Примеры: 👉 временные ряды 👉 пользователи (один и тот же user в train и test) 👉 сессии Модель узнаёт данные, а не обобщает. Игнорирование времени В задачах с временем: 👉 ❌ случайный split 👉 ✅ train = прошлое, test = будущее Иначе ты: 👉 обучаешься на будущем 👉 предсказываешь прошлое Это не ML. Это читерство. 4️⃣ Дисбаланс классов в split Ты сделал split и получил: 👉 train: 5% positive 👉 test: 1% positive Метрики начинают врать. Решение: 👉 stratified split Слишком маленький test Test = 50 объектов Accuracy = 90% Звучит круто. Но это статистический шум. Маленький test = ненадёжная оценка. Тест используется как валидация Классическая ошибка: 👉 обучился 👉 посмотрел на test 👉 подкрутил модель 👉 снова посмотрел Это уже не test. Это validation 2.0. Дубликаты в train и test Если один и тот же объект попал в обе выборки: Модель просто запоминает. Особенно критично: 👉 CV 👉 e-commerce 👉 табличные данные с ID Неправильный split в CV Cross-validation тоже можно сломать: 👉 leakage между фолдами 👉 группы не учитываются 👉 time-series перемешаны Используй: 👉 GroupKFold 👉 TimeSeriesSplit Главный инсайт Train/test split — это не про «разделить данные». Это про симуляцию реального мира. Если split не отражает прод — все метрики бесполезны. В одном предложении Плохой split может сделать плохую модель «идеальной» — до момента, когда она выйдет в прод. Всё про Data Science

