Линейная регрессия
Коротко
Definition
Линейная регрессия — это модель обучения с учителем для задачи регрессии, которая предсказывает числовое значение как линейную комбинацию признаков.
Линейная регрессия предполагает, что целевая переменная приблизительно выражается через признаки так:
где:
- — признаки объекта;
- — веса признаков;
- — свободный член;
- — предсказание модели.
Главная идея: подобрать такие коэффициенты, чтобы предсказания были как можно ближе к настоящим значениям.
Интуиция
В простейшем случае с одним признаком линейная регрессия ищет прямую линию, которая лучше всего проходит через облако точек.
Если есть один признак:
то модель подбирает наклон и сдвиг .
Например:
- если — площадь квартиры;
- — цена квартиры;
то линейная регрессия пытается найти зависимость вида:
В многомерном случае вместо прямой получается гиперплоскость в пространстве признаков.
Формальное описание
Пусть есть обучающая выборка:
где:
- — количество объектов;
- — количество признаков;
- — матрица признаков;
- — вектор целевых значений.
Линейная модель имеет вид:
Если добавить к матрице столбец из единиц, свободный член можно включить в общий вектор параметров. Тогда модель записывается компактно:
Задача обучения — найти такие параметры , при которых ошибка между и минимальна.
Входы и выходы
| Компонент | Описание |
|---|---|
| Вход | Табличные признаки объекта |
| Выход | Числовое значение |
| Тип задачи | Регрессия |
| Тип обучения | Обучение с учителем |
| Целевая переменная | Непрерывная величина из |
Примеры задач:
- предсказать цену квартиры;
- оценить температуру плавления материала;
- предсказать энергию образования кристалла;
- оценить время выполнения алгоритма;
- предсказать концентрацию вещества по измеренным признакам.
Как обучается
Чаще всего линейная регрессия обучается через минимизацию средней квадратичной ошибки.
Основная функция потерь:
Модель ищет такие веса, при которых сумма квадратов ошибок минимальна.
Есть два основных способа обучения.
Закрытое решение
Для обычной линейной регрессии без регуляризации можно получить аналитическое решение методом наименьших квадратов:
Это решение напрямую вычисляет оптимальные коэффициенты, если матрица обратима.
На практике могут возникнуть проблемы:
- признаков слишком много;
- признаки сильно коррелируют;
- матрица плохо обусловлена;
- данных слишком много для прямого обращения матрицы.
Градиентная оптимизация
Другой вариант — обучать модель итеративно.
- Инициализировать веса.
- Вычислить предсказания.
- Посчитать ошибку.
- Посчитать градиент ошибки по весам.
- Немного изменить веса в сторону уменьшения ошибки.
- Повторять до сходимости.
Этот подход особенно полезен, когда данных много или модель обучается вместе с другими компонентами.
Функция потерь
Основная функция потерь для линейной регрессии — средняя квадратичная ошибка:
Она штрафует большие ошибки сильнее, чем маленькие, потому что ошибка возводится в квадрат.
Иногда к MSE добавляют регуляризацию.
| Вариант | Идея | Формула |
|---|---|---|
| Ordinary Least Squares | Минимизировать только ошибку прогноза | |
| Ridge regression | Добавить L2-штраф за большие веса | |
| Lasso regression | Добавить L1-штраф, который может занулять признаки | |
| Elastic Net | Совместить L1 и L2-регуляризацию |
Гиперпараметры
У базовой линейной регрессии гиперпараметров мало.
Основные настройки:
- добавлять ли свободный член ;
- использовать ли нормализацию признаков;
- какой способ решения использовать;
- применять ли регуляризацию.
Для регуляризованных вариантов важны:
- тип регуляризации: L1, L2 или Elastic Net;
- коэффициент регуляризации ;
- соотношение L1 и L2 для Elastic Net;
- максимальное число итераций при численной оптимизации;
- критерий остановки.
Важно: сама обычная линейная регрессия часто не требует долгого подбора гиперпараметров, но сильно зависит от качества признаков.
Когда использовать
Линейную регрессию стоит использовать, когда:
- нужно предсказать числовое значение;
- нужна простая и интерпретируемая модель;
- зависимость между признаками и целевой переменной примерно линейная;
- важно понять вклад отдельных признаков;
- нужен сильный baseline перед более сложными моделями;
- данных немного, и сложные модели легко переобучаются.
Линейная регрессия особенно полезна как первая модель в задаче регрессии: она быстро обучается, легко проверяется и хорошо показывает, есть ли в признаках простой сигнал.
Когда не использовать
Линейная регрессия плохо подходит, если:
- зависимость между признаками и целью сильно нелинейная;
- есть сложные взаимодействия признаков;
- много выбросов, а они не обработаны;
- признаки сильно коррелируют, но регуляризация не используется;
- требуется высокая точность на сложных данных;
- целевая переменная не является числовой.
Если зависимость нелинейная, можно попробовать:
- добавить нелинейные признаки;
- использовать полиномиальную регрессию;
- перейти к деревьям решений, случайному лесу или градиентному бустингу;
- использовать нейросетевую модель.
Метрики оценки
Для оценки линейной регрессии используют стандартные метрики регрессии:
- MAE — средняя абсолютная ошибка;
- MSE — средняя квадратичная ошибка;
- RMSE — корень из MSE;
- — доля объяснённой дисперсии;
- MAPE — средняя абсолютная процентная ошибка.
Подробнее: Метрики качества регрессоров.
Важно помнить:
- MSE и RMSE сильнее штрафуют большие ошибки;
- MAE устойчивее к выбросам;
- удобно интерпретировать, но он может вводить в заблуждение;
- MAPE плохо работает, если истинные значения близки к нулю.
Типичные ошибки понимания
Ошибка 1. Думать, что линейная регрессия умеет только прямые линии
Линейная регрессия линейна по параметрам, а не обязательно по исходным признакам.
Например, можно добавить признак и получить модель:
С точки зрения параметров это всё ещё линейная модель, хотя зависимость от уже нелинейная.
Ошибка 2. Игнорировать масштаб признаков
Если признаки имеют разные масштабы, это может мешать интерпретации коэффициентов и численной оптимизации. Особенно это важно для моделей с регуляризацией.
Ошибка 3. Считать коэффициенты причинными эффектами
Коэффициент показывает связь в рамках модели, но не доказывает причинность. Если признаки коррелируют между собой или есть скрытые факторы, интерпретация коэффициентов может быть неверной.
Ошибка 4. Оценивать модель только по train-ошибке
Низкая ошибка на обучающей выборке не означает, что модель хорошо работает на новых данных. Нужна проверка на validation или test-наборе.
Ошибка 5. Не проверять выбросы
MSE чувствительна к выбросам. Несколько необычных точек могут сильно изменить коэффициенты модели.
Минимальный пример
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([ # один признак: площадь квартиры
[30],
[40],
[50],
[60],
[70],
])
y = np.array([120, 150, 180, 210, 240]) # целевая переменная: цена
model = LinearRegression()
model.fit(X, y)
new_flat = np.array([ [55] ])
prediction = model.predict(new_flat)
print("weight:", model.coef_)
print("bias:", model.intercept_)
print("prediction:", prediction)В этом примере модель учится предсказывать цену по площади. Если зависимость почти линейная, модель найдёт простое правило вида: