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