Как масштабирование признаков влияет на обучение модели
Что проверяют
Понимаете ли вы, каким моделям масштаб важен, а каким безразличен, и знаете ли про утечку данных при масштабировании.
Как отвечать
Масштаб влияет там, где алгоритм опирается на расстояния или на величину весов:
- методы на расстояниях (KNN, кластеризация k-средних, SVM с ядром): признак в рублях с диапазоном в сотни тысяч полностью заглушит признак «стаж в годах». Масштабирование обязательно;
- линейные модели с регуляризацией: штраф пропорционален величине коэффициентов, а те зависят от единиц измерения. Без приведения к общему масштабу регуляризация наказывает признаки несправедливо;
- градиентный спуск и нейросети: разный масштаб делает поверхность ошибки вытянутой, и сходимость замедляется. Плюс риск переполнения при больших значениях;
- метод главных компонент: он максимизирует дисперсию, а она напрямую зависит от единиц.
Кому безразлично: решающим деревьям и ансамблям на них (случайный лес, градиентный бустинг). Они делят по порогам, и монотонное преобразование признака ничего не меняет. Это частый вопрос-ловушка.
Способы: стандартизация (вычесть среднее, поделить на отклонение), приведение к отрезку от нуля до единицы, робастное масштабирование по медиане и межквартильному размаху для данных с выбросами, логарифм для сильно скошенных распределений.
И главное правило: параметры масштабирования считаются только на обучающей выборке и затем применяются к проверочной. Подсчёт на всех данных сразу это утечка, из-за которой оценка качества оказывается завышенной. В scikit-learn это решается сборкой конвейера, который масштабирует внутри каждого фолда кросс-валидации.
Где спотыкаются
Масштабируют весь набор до разделения на выборки и получают оптимистичную оценку.
Масштабируют признаки для градиентного бустинга, тратя время без эффекта.
Применяют приведение к отрезку на данных с выбросами, из-за чего основная масса значений сжимается в узкую полосу.