Симуляция будущих объектов
Обучение подбирает параметры по данным. Если измерить качество на тех же наблюдениях, получится оценка запоминания, а не работы на новых объектах. Поэтому до обучения отделите holdout — финальную часть, которую не используют для выбора признаков, параметров или модели.Train нужен для обучения. Validation или folds внутри train помогают выбирать настройки. Test используют для финального измерения после выбора. Повторное принятие решений по test постепенно превращает его в ещё одну validation-выборку. Если это произошло, для честной оценки нужен новый holdout.
Как делить
В Wine используем случайное разделение 80/20 со stratify=y: доли классов примерно сохраняются. Random_state фиксирует конкретное разбиение для повторения эксперимента. Само значение seed не улучшает модель; нельзя выбирать его по лучшей test-оценке.Для временных рядов обучайтесь на прошлом и проверяйте на будущем. Для повторных объектов одного пользователя, пациента или устройства разделяйте группы целиком. Иначе в train и test окажутся зависимые наблюдения и оценка станет слишком оптимистичной. Стратификация по классу не устраняет пересечение групп.
Утечка данных
Утечка возникает, если в обучение попадает информация, недоступная на момент реального предсказания. Примеры: признак «результат лечения» до лечения, один объект в обеих выборках, среднее масштабирования по всей таблице. Даже операция без y может сообщить модели свойства будущего test.Сохраняйте индексы разбиения в отчёте и проверяйте отсутствие пересечения. Но это только одна проверка: разные строки могут принадлежать одному объекту. Для продукта также нужны устойчивый ключ и правило времени появления признаков.