Полиномиальная регрессия
Коротко
Definition
Полиномиальная регрессия — это вариант линейной регрессии, в котором исходные признаки сначала преобразуются в полиномиальные признаки, а затем к ним применяется обычная линейная модель.
Полиномиальная регрессия используется, когда зависимость между признаками и целевой переменной нелинейная, но её можно приблизить полиномом.
Главный нюанс: модель остаётся линейной по параметрам, но становится нелинейной по исходным признакам.
Например, обычная Линейная регрессия для одного признака:
Полиномиальная регрессия степени 2:
Степени 3:
Интуиция
Обычная линейная регрессия строит прямую или гиперплоскость. Если зависимость изогнутая, прямая может плохо её описывать.
Полиномиальная регрессия добавляет новые признаки:
После этого линейная модель получает больше возможностей: она может строить кривую, хотя всё ещё обучается как линейная модель на преобразованных признаках.
Интуитивно:
Формальное описание
Полиномиальная регрессия относится к supervised learning и решает задачи регрессии.
| Характеристика | Значение |
|---|---|
| Тип модели | Линейная модель на полиномиальных признаках |
| Тип обучения | Обучение с учителем |
| Задача | Регрессия |
| Тип данных | Чаще всего Табличные данные |
| Целевая переменная |
Для одного признака модель степени :
Для нескольких признаков полиномиальное преобразование может добавлять не только степени отдельных признаков, но и взаимодействия.
Например, для двух признаков и при степени 2 могут появиться признаки:
Тогда модель может учитывать взаимодействие между признаками.
Входы и выходы
Вход:
где:
- — число объектов;
- — число исходных признаков.
После полиномиального преобразования получается новая матрица признаков:
где — функция, создающая полиномиальные признаки.
Для одного признака матрица полиномиальных признаков степени может выглядеть так:
Выход модели:
то есть численное предсказание.
Как обучается
Полиномиальная регрессия обучается так же, как линейная регрессия, но не на исходных признаках, а на полиномиальных.
Типовой алгоритм:
- Взять исходные признаки.
- Преобразовать их в полиномиальные признаки нужной степени.
- Обучить линейную регрессию на новой матрице признаков.
- Подобрать веса так, чтобы минимизировать ошибку между и .
- Оценить качество на validation или test.
Предсказание:
где:
- — полиномиальное представление объекта;
- — веса;
- — смещение.
Обучение можно выполнять:
- аналитически через метод наименьших квадратов;
- через градиентный спуск;
- через стохастический градиентный спуск;
- через регуляризованные варианты линейной регрессии.
Функция потерь
Базовая функция потерь для полиномиальной регрессии — среднеквадратичная ошибка:
MSE чувствительна к большим ошибкам, потому что ошибка возводится в квадрат.
Если модель переобучается, к MSE добавляют регуляризацию.
L1-регуляризация
LASSO добавляет L1-штраф:
L1-регуляризация может занулять часть коэффициентов и выполнять отбор признаков.
L2-регуляризация
Ridge-регрессия добавляет L2-штраф:
L2-регуляризация штрафует большие коэффициенты и делает модель устойчивее.
Elastic Net
Elastic Net объединяет L1 и L2:
Это полезно, если полиномиальных признаков много и они коррелируют между собой.
Гиперпараметры
Главные гиперпараметры:
- степень полинома;
- добавлять ли bias-признак;
- включать ли взаимодействия между признаками;
- тип регуляризации;
- коэффициент регуляризации;
- алгоритм оптимизации;
- максимальное число итераций;
- критерий остановки.
Степень полинома
Степень полинома — самый важный гиперпараметр.
Если степень слишком маленькая, модель может недообучиться и не поймать нелинейность.
Если степень слишком большая, модель может переобучиться и начать повторять шум в данных.
Регуляризация
Чем выше степень полинома, тем выше риск переобучения. Поэтому полиномиальную регрессию часто используют вместе с регуляризацией.
Особенно полезны:
- Ridge;
- LASSO;
- Elastic Net.
Масштабирование признаков
Полиномиальные признаки могут иметь очень разный масштаб.
Например, если , то:
Поэтому перед обучением часто нужна предобработка и масштабирование признаков.
Когда использовать
Полиномиальную регрессию стоит использовать, если:
- задача является регрессией;
- зависимость явно нелинейная;
- данных не слишком много;
- нужна простая и интерпретируемая модель;
- есть основания ожидать гладкую зависимость;
- хочется расширить линейную регрессию без перехода к сложным моделям.
Она хорошо подходит как учебная модель и как простой baseline для нелинейной регрессии.
Когда не использовать
Полиномиальная регрессия может быть плохим выбором, если:
- признаков много;
- степень полинома высокая;
- данных мало;
- зависимость сложная и негладкая;
- есть сильный шум;
- модель сильно переобучается;
- важна хорошая экстраполяция далеко за пределами train-диапазона.
При большом числе признаков число полиномиальных признаков быстро растёт. Это делает модель тяжёлой, нестабильной и склонной к переобучению.
Для сложных табличных зависимостей часто лучше работают:
- Случайный лес;
- Градиентный бустинг;
- SVR;
- нейросетевые модели.
Метрики оценки
Для оценки используют Метрики качества регрессоров:
- MAE;
- MSE;
- RMSE;
- R²;
- MAPE, если целевая переменная не близка к нулю.
Особенно важно сравнивать train и validation/test качество.
Если train-ошибка маленькая, а validation-ошибка большая, модель переобучилась. Это часто происходит при высокой степени полинома.
Типичные ошибки понимания
Думать, что полиномиальная регрессия не является линейной моделью
Она нелинейна по исходному признаку , но линейна по параметрам .
Например:
Здесь — новый признак, а веса , , входят линейно.
Использовать слишком высокую степень
Высокая степень может дать красивое приближение на train, но плохое обобщение.
Модель начинает повторять шум, а не реальную зависимость.
Не масштабировать признаки
Полиномиальные признаки быстро растут по масштабу. Без масштабирования обучение может быть нестабильным.
Плохо экстраполировать
Полиномы могут вести себя непредсказуемо за пределами диапазона, на котором обучалась модель.
Например, кривая может резко уйти вверх или вниз вне train-области.
Добавлять полиномиальные признаки без контроля размерности
При нескольких исходных признаках число комбинаций быстро растёт. Это может привести к переобучению и высокой вычислительной стоимости.
Минимальный пример
Пусть истинная зависимость между и похожа на параболу:
| x | y |
|---|---|
| -2 | 4 |
| -1 | 1 |
| 0 | 0 |
| 1 | 1 |
| 2 | 4 |
Обычная линейная регрессия не сможет хорошо описать такую зависимость прямой.
Добавим полиномиальный признак:
Тогда модель:
может выучить параболическую зависимость.
Если данные действительно близки к , хорошее решение будет примерно:
Практические замечания
Хороший workflow:
- Построить baseline через обычную линейную регрессию.
- Добавить полиномиальные признаки небольшой степени.
- Масштабировать признаки.
- Использовать регуляризацию.
- Сравнить train и validation качество.
- Подобрать степень полинома.
- Проверить поведение модели на графике, если признаков мало.
- Оценить качество через Метрики качества регрессоров.
Для одного признака полезно визуализировать кривую. Для многих признаков важнее следить за переобучением и устойчивостью.