Линейная регрессия

Коротко

Definition

Линейная регрессия — это модель обучения с учителем для задачи регрессии, которая предсказывает числовое значение как линейную комбинацию признаков.

Линейная регрессия предполагает, что целевая переменная приблизительно выражается через признаки так:

где:

  • — признаки объекта;
  • — веса признаков;
  • — свободный член;
  • — предсказание модели.

Главная идея: подобрать такие коэффициенты, чтобы предсказания были как можно ближе к настоящим значениям.

Интуиция

В простейшем случае с одним признаком линейная регрессия ищет прямую линию, которая лучше всего проходит через облако точек.

Если есть один признак:

то модель подбирает наклон и сдвиг .

Например:

  • если — площадь квартиры;
  • — цена квартиры;

то линейная регрессия пытается найти зависимость вида:

В многомерном случае вместо прямой получается гиперплоскость в пространстве признаков.

Формальное описание

Пусть есть обучающая выборка:

где:

  • — количество объектов;
  • — количество признаков;
  • — матрица признаков;
  • — вектор целевых значений.

Линейная модель имеет вид:

Если добавить к матрице столбец из единиц, свободный член можно включить в общий вектор параметров. Тогда модель записывается компактно:

Задача обучения — найти такие параметры , при которых ошибка между и минимальна.

Входы и выходы

КомпонентОписание
ВходТабличные признаки объекта
ВыходЧисловое значение
Тип задачиРегрессия
Тип обученияОбучение с учителем
Целевая переменнаяНепрерывная величина из

Примеры задач:

  • предсказать цену квартиры;
  • оценить температуру плавления материала;
  • предсказать энергию образования кристалла;
  • оценить время выполнения алгоритма;
  • предсказать концентрацию вещества по измеренным признакам.

Как обучается

Чаще всего линейная регрессия обучается через минимизацию средней квадратичной ошибки.

Основная функция потерь:

Модель ищет такие веса, при которых сумма квадратов ошибок минимальна.

Есть два основных способа обучения.

Закрытое решение

Для обычной линейной регрессии без регуляризации можно получить аналитическое решение методом наименьших квадратов:

Это решение напрямую вычисляет оптимальные коэффициенты, если матрица обратима.

На практике могут возникнуть проблемы:

  • признаков слишком много;
  • признаки сильно коррелируют;
  • матрица плохо обусловлена;
  • данных слишком много для прямого обращения матрицы.

Градиентная оптимизация

Другой вариант — обучать модель итеративно.

  1. Инициализировать веса.
  2. Вычислить предсказания.
  3. Посчитать ошибку.
  4. Посчитать градиент ошибки по весам.
  5. Немного изменить веса в сторону уменьшения ошибки.
  6. Повторять до сходимости.

Этот подход особенно полезен, когда данных много или модель обучается вместе с другими компонентами.

Функция потерь

Основная функция потерь для линейной регрессии — средняя квадратичная ошибка:

Она штрафует большие ошибки сильнее, чем маленькие, потому что ошибка возводится в квадрат.

Иногда к 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)

В этом примере модель учится предсказывать цену по площади. Если зависимость почти линейная, модель найдёт простое правило вида:

Связанные понятия

Что знать перед этим

Связанные заметки