Были ли признаки нормированы?
Что проверяют
Это вопрос про ваш проект, а не просьба пересказать формулы. Интервьюер хочет понять, осознанно ли вы выбирали предобработку под модель и не допустили ли утечку данных. Следом обычно спрашивают: «А для бустинга зачем?» и «На чём вы обучали скейлер?»
Как отвечать
Начните с «да» или «нет» и сразу назовите причину, привязанную к модели:
- нужно масштабирование: линейные модели с регуляризацией (штраф L1/L2 зависит от величины коэффициента, а она от масштаба признака, поэтому без приведения к одному масштабу признаки штрафуются неравномерно), kNN и k-means (расстояния), SVM, PCA, нейросети (сходимость градиентного спуска);
- не нужно: деревья и ансамбли на них, то есть случайный лес, XGBoost, LightGBM, CatBoost. Они режут признак по порогам и не чувствительны к монотонным преобразованиям;
- инструменты:
StandardScaler(среднее 0, дисперсия 1),MinMaxScaler(диапазон [0, 1], чувствителен к выбросам),RobustScaler(медиана и межквартильный размах), логарифм для скошенных величин вроде доходов и цен,QuantileTransformerдля тяжёлых хвостов; - без утечки: скейлер обучается только на train и лежит внутри
PipelineилиColumnTransformer, тогда при кросс-валидации он переобучается на каждом фолде. На инференсе применяется тот же сохранённый объект.
Хорошая подача звучит так: «В логистической регрессии признаки стандартизировал в пайплайне, one-hot колонки не трогал. Для CatBoost масштабирование убрал, на метрике разницы не было». Если признаки не нормировали, объясните почему и скажите, что сделали бы иначе сейчас.
Где спотыкаются
Говорят, что z-преобразование приводит данные к нормальному распределению. Оно только сдвигает и масштабирует, форма распределения остаётся прежней, скошенный признак останется скошенным.
Считают среднее и дисперсию по всему датасету до разбиения на train и test. Это утечка, и оценка качества получается завышенной.
Путают термины. «Нормализация» в разговоре обычно значит min-max, а Normalizer в scikit-learn приводит каждую строку к единичной норме, это совсем другая операция.