Линейная регрессия
Линейная регрессия (англ. linear regression) — метод восстановления зависимости одной (объясняемой, зависимой) переменной от другой или нескольких других переменных (факторов, регрессоров, независимых переменных) с линейной функцией зависимости. Данный метод позволяет предсказывать значения зависимой переменной по значениям независимой переменной .
Содержание
Задача
Дано
- — числовые признаки;
 -  модель многомерной линейной регрессии: 
,
где ; - обучающая выборка: множество из пар ;
 - — объекты из множества ;
 - — объекты из множества .
 
Матричные обозначения
Перейдем к матричным обозначениям:
,
где
- — матрица объектов-признаков, где строки соответствуют объектам а столбцы — признакам;
 - — вектор ответов, или целевой вектор;
 - — вектор коэффициентов.
 
Постановка задачи
В этих трех векторно-матричных обозначениях очень удобно расписать постановку задачи наименьших квадратов:
.
Необходимо найти вектор при известной матрице и известном вектор-столбце .
Решение
Нормальная система уравнений
Запишем необходимые условия минимума в матричном виде:
.
Отсюда следует нормальная система задачи МНК:
,
где матрица.
Мы получили систему уравнений, откуда можем выразить искомый вектор .
Решение системы
, 
 где  — псевдо-обратная матрица.
Значение функционала: , 
 где  — проекционная матрица.
Проблемы
В случае мультиколлинеарности (столбцы матрицы линейно-зависимы) нам не удастся найти обратную матрицу к (она будет вырождена).
Если же столбцы матрицы почти линейно-зависимы, то у нас возникнет масса вычислительных проблем с обращением этой матрицы.
Решение МНК через сингулярное разложение
Воспользуемся понятием сингулярного разложения , которое позволяет произвольную прямоугольную матрицу представить в виде произведения трех матриц:
.
Найдем псевдо-обратную матрицу: 
 .
Теперь, зная псевдо-обратную матрицу, найдем решение задачи наименьших квадратов: 
 .
Найдем вектор, которым наша линейная модель аппроксимирует целевой вектор : 
 .
Квадрат нормы вектора коэффициентов: 
 .
В 3-х из 4-х формул сингулярные числа оказались в знаменателе. Если имеются сингулярные числа приближающиеся к 0, то мы получаем проблему мультиколлинеарности. Близкие к 0 собственные значения или сингулярные числа — показатель того, что среди признаков есть почти линейно-зависимый.
Проблема мультиколлинеарности и переобучения
Если имеются сингулярные числа, близкие к 0, то:
- матрица плохо обусловлена;
 - решение становится неустойчивым и неинтерпретируемым, слишком большие коэффициенты разных знаков;
 -  возникает переобучение: 
на обучении мало;
на контроле велико. 
Стратегии устранения мультиколлинеарности и переобучения:
-  отбор признаков, то есть выкидываем те признаки, которые могут оказаться линейно-зависимыми: 
; -  регуляризация (накладываем дополнительные ограничения на вектор коэффициентов): 
; -  преобразование признаков, чтобы в новом признаковом пространстве признаков оказалось меньше, но они хорошо восстанавливали бы исходные: 
. 
Пример кода для Scikit-learn
import matplotlib.pyplot as plt from sklearn import datasets, linear_model # generate dataset X, y = datasets.make_regression(n_samples=1_000, n_features=1, noise=8, shuffle=True) # test and train data sizes train_size = 700 test_size = 300 # split the data into training/testing sets X_train = X[:-train_size] X_test = X[-test_size:] # split the targets into training/testing sets y_train = y[:-train_size] y_test = y[-test_size:] # create linear regression object regr = linear_model.LinearRegression() # train the model using the training sets regr.fit(X_train, y_train) # make predictions using the testing set y_pred = regr.predict(X_test) # plot outputs plt.scatter(X_test, y_test, color='red', s=5) plt.plot(X_test, y_pred, color='blue', linewidth=2) plt.xticks(()) plt.yticks(()) plt.show()
Возможный результат исполнения программы:
Применение
Перечислим несколько примеров реального применения линейной регрессии:
- для предсказания скидки на продукты на основе поведения покупателей в прошлом;
 - экономисты использую линейную регрессия для предсказания экономического роста страны или региона;
 - застройщики при помощи данного метода могут предсказать, сколько домов он продаст в ближайшие месяцы и по какой цене;
 - цены на нефть могут быть предсказаны с использованием линейной регрессии.
 
См. также
- Общие понятия
 - Вариации регрессии
 - Логистическая регрессия
 - Обзор библиотек для машинного обучения на Python
 - Переобучение
 
Источники информации
- machinelearning.ru — Многомерная линейная регрессия
 - machinelearning.ru — Линейная регрессия (пример)
 - Coursera — "Введение в машинное обучение", Неделя 4,
 - Лекции по алгоритмам восстановления регрессии К. В. Воронцов
 - Scikit-Learn — Linear Regression Example
 - What are some real-world applications of "simple" linear regression?
 
