Linear Regression
Линейная регрессия предсказывает число как взвешенную сумму признаков, подобранных методом наименьших квадратов. Как она работает, её предположения, варианты и код на Python.
Линейная регрессия — метод обучения с учителем, который предсказывает непрерывное значение, например цену, температуру или спрос в следующем месяце, как взвешенную сумму входных признаков плюс константу. Для одного признака модель строит прямую ŷ = w·x + b, а для нескольких — плоскость или гиперплоскость ŷ = w₁x₁ + w₂x₂ + … + wₙxₙ + b. Адриен-Мари Лежандр опубликовал использующийся для подгонки метод наименьших квадратов в 1805 году, а Карл Фридрих Гаусс изложил собственный подход в 1809 году. Линейная регрессия по-прежнему обычно становится первой моделью для численного прогнозного моделирования: она обучается за миллисекунды, работает на небольших объёмах данных, а каждый вес показывает, насколько меняется предсказание при изменении соответствующего признака на единицу.
Как работает линейная регрессия#
При обучении выбираются веса и свободный член, которые обеспечивают максимальное соответствие предсказаний истинным целевым значениям в обучающих данных. Метод наименьших квадратов измеряет это соответствие как сумму квадратов остатков — разностей между целевыми значениями и предсказаниями. Это эквивалентно минимизации среднеквадратичной ошибки (MSE), стандартной функции потерь для регрессии. Квадрат ошибки формирует гладкую чашеобразную функцию потерь с единственным минимумом, поэтому оптимальные веса можно получить в замкнутой форме из нормального уравнения w = (XᵀX)⁻¹Xᵀy. Библиотеки вычисляют его с помощью устойчивых матричных разложений, например QR или SVD, а не явного обращения матрицы. Для слишком больших датасетов те же веса итеративно находит градиентный спуск или стохастический градиентный спуск. Сходимость ускоряется, если стандартизировать признаки, приведя их к сопоставимым масштабам.
Каждый вес показывает, насколько изменится предсказание при увеличении соответствующего признака на единицу при неизменных остальных признаках, благодаря чему модель легко проверять. Оцениватель LinearRegression из scikit-learn подбирает параметры методом наименьших квадратов. В этом примере цены на дома генерируются с известными коэффициентами, после чего проверяется, насколько точно модель их восстанавливает:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
# 500 synthetic homes: price = $50,000 + $150 per sq ft - $2,000 per year of age + noise
rng = np.random.default_rng(0)
X = np.column_stack([rng.uniform(800, 3000, 500), rng.uniform(0, 50, 500)])
y = 50_000 + 150 * X[:, 0] - 2_000 * X[:, 1] + rng.normal(0, 20_000, 500)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Fit by ordinary least squares
model = LinearRegression()
model.fit(X_train, y_train)
print(f"Per sq ft: {model.coef_[0]:.1f}, per year: {model.coef_[1]:.0f}, intercept: {model.intercept_:.0f}")
print(f"Test R^2: {r2_score(y_test, model.predict(X_test)):.3f}")Модель оценила цену квадратного фута в $147.7 при истинном значении $150, а влияние возраста — в −$1,992 за год при истинном значении −$2,000. Она объясняет 96.2% дисперсии цен в отложенной выборке (R² = 0.962). R² показывает долю дисперсии целевой переменной, объясняемую моделью, а среднеквадратичная ошибка (RMSE) сообщает типичную величину ошибки в исходных единицах целевой переменной.
Предположения и диагностика#
Линейная регрессия предполагает, что среднее целевое значение представляет собой взвешенную сумму входных данных, ошибки независимы, а их разброс остаётся примерно постоянным во всём диапазоне прогнозов; доверительные интервалы и p-значения для весов также предполагают, что ошибки распределены примерно нормально. Входными данными может быть любое фиксированное преобразование исходных признаков, поэтому добавление квадратов, логарифмов или произведений признаков с помощью инженерии признаков по-прежнему даёт линейную регрессию, которая может описывать кривую. Стандартная проверка — построить график остатков в зависимости от прогнозов: изогнутый рисунок указывает на пропущенный нелинейный член, а веерообразный означает, что ошибки растут вместе с прогнозом; часто это исправляет логарифмическое преобразование целевого значения. Квадратичная ошибка также позволяет нескольким выбросам сместить подгонку в свою сторону, а робастные функции потерь, например функция потерь Хьюбера, уменьшают их влияние.
Если признаки сильно коррелируют друг с другом, небольшие изменения в данных существенно меняют их веса. Гребневая регрессия добавляет штраф за квадраты весов, уменьшая их; лассо добавляет штраф за абсолютные значения весов, обнуляя некоторые из них и тем самым отбирая признаки; эластичная сеть сочетает оба подхода. Эти варианты регуляризации допускают небольшое смещение ради снижения дисперсии — это компромисс между смещением и дисперсией; они также ограничивают переобучение, когда признаков много по сравнению с числом примеров.
Линейная регрессия в глубоком обучении#
Нейронная сеть, которая предсказывает числа, обычно заканчивается линейным слоем, поэтому её последний шаг — линейная регрессия по признакам, изученным предыдущими слоями. Сеть без скрытых слоёв, обученная с помощью MSE, и вовсе представляет собой линейную регрессию. Модели обнаружения объектов используют этот подход для координат рамок. В YOLO26 каждая ветвь рамок головы обнаружения заканчивается свёрткой 1×1, которая линейно преобразует признаки в каждой позиции сетки в четыре расстояния от этой позиции до краёв ограничивающей рамки; при обучении эти расстояния штрафуются с помощью функции потерь L1 наряду с функцией потерь CIoU для перекрытия рамок.
Применение#
- Прогнозирование: Розничные компании и предприятия коммунального хозяйства строят регрессионные модели продаж или нагрузки на электросеть с учётом цены, рекламных акций, температуры и календарных признаков; подогнанная линия тренда часто служит базовым ориентиром для более сложных моделей прогнозирования.
- Ценообразование и оценка стоимости: Гедонические модели ценообразования строят регрессию стоимости жилья по площади, возрасту и местоположению, а каждый вес показывает рыночную стоимость дополнительной единицы соответствующего атрибута.
- Оценка эффекта: Экономисты и исследователи в области здравоохранения строят регрессию результата — например, заработной платы или артериального давления — по интересующему фактору и контрольным переменным, чтобы оценить, как меняется результат при изменении этого фактора и неизменности остальных.
- Калибровочные кривые: Лаборатории строят регрессию показаний прибора по известным концентрациям эталонных образцов, а затем обращают подогнанную прямую, чтобы преобразовывать показания новых образцов в концентрации.
Линейная регрессия и связанные методы#
- Логистическая регрессия: Решает задачу классификации, пропуская ту же взвешенную сумму через сигмоидную функцию и выдавая вероятность от 0 до 1; при обучении используется логарифмическая функция потерь вместо квадратичной ошибки.
- Полиномиальная регрессия: Подбирает степени признака, например x и x², и представляет собой линейную регрессию по этим преобразованным признакам.
- Деревья решений и ансамбли деревьев с бустингом, например XGBoost: Разбивают пространство признаков на области и выявляют нелинейные эффекты и взаимодействия без ручного создания признаков, но предсказывают постоянное значение в каждой области и поэтому не могут экстраполировать тренд за пределы обучающего диапазона.
- Корреляция: Коэффициент корреляции Пирсона r измеряет силу линейной связи симметричным образом, а наклон простой линейной регрессии y по x равен r, умноженному на отношение стандартного отклонения y к стандартному отклонению x.










