Кто готовил данные для модели и делал нормализацию?
Что проверяют
Какая часть подготовки данных была реально вашей и понимаете ли вы, где нормализация ломает валидацию. Интервьюер ждёт не список методов, а признаки того, что вы сами обучали скейлер и видели последствия ошибок. Следом обычно спрашивают, на какой части выборки вы вызывали fit.
Как отвечать
Сначала честно распределите роли: кто собирал сырые данные (дата-инженер, аналитик, вы сами), кто чистил и строил признаки, кто делал нормализацию. Затем по сути:
- разбиение до преобразований: сначала train, validation и test, потом
fitскейлера только на train иtransformна остальных частях. Для временных рядов разбиение по времени, а не случайное; PipelineиColumnTransformer: в scikit-learn скейлер кладётся внутрь пайплайна, тогда при кросс-валидации он заново обучается на каждом фолде и утечки нет;- выбор метода:
StandardScalerприводит к нулевому среднему и единичной дисперсии,MinMaxScalerсжимает в диапазон [0, 1] и чувствителен к выбросам,RobustScalerопирается на медиану и межквартильный размах; - когда это нужно: линейные и логистические модели с регуляризацией, kNN, SVM, нейросети чувствительны к масштабу. Деревья и градиентный бустинг на монотонное масштабирование практически не реагируют;
- продакшн: обученный скейлер сохраняется вместе с моделью, иначе на инференсе признаки масштабируются по другим статистикам.
Метрики называйте свои и с базой сравнения: сколько было на отложенной выборке, сколько стало и за счёт чего.
Если нормализацию делал коллега или она была частью готового фича-стора, так и скажите и объясните, что проверяли вы: распределения, пропуски, согласованность обучения и инференса.
Где спотыкаются
Вызывают fit_transform на всём датасете до разбиения. Статистики тестовой части попадают в обучение, и метрика на тесте получается завышенной.
Считают, что стандартизация требует нормального распределения или делает распределение нормальным. Она только сдвигает и масштабирует, форма не меняется.
Путают нормализацию признаков с Normalizer из scikit-learn: он приводит к единичной длине каждую строку, а не столбцы.