Как считается аналитическое решение для линейной регрессии
Что проверяют
Можете ли вы вывести формулу МНК, а не только вспомнить её, и понимаете ли, почему на практике матрицу никто не обращает. Следом спрашивают, что делать, если XᵀX вырождена, и как меняется решение у Ridge.
Как отвечать
Вывод занимает три шага:
- постановка: минимизируем сумму квадратов остатков
L(w) = ‖Xw-y‖², гдеXимеет размер n×d, а для свободного члена в неё добавлен столбец из единиц; - градиент:
∇L = 2Xᵀ(Xw-y), приравниваем к нулю и получаем нормальные уравненияXᵀXw = Xᵀy; - решение:
w = (XᵀX)⁻¹Xᵀy, еслиXᵀXобратима, то есть столбцыXлинейно независимы. Функция потерь выпуклая, поэтому это глобальный минимум; - геометрия:
Xwэто проекцияyна пространство столбцовX, вектор остатков ортогонален каждому столбцу, отсюда и нормальные уравнения.
Дальше практика. Явное обращение численно неустойчиво: число обусловленности XᵀX равно квадрату числа обусловленности X. Поэтому решают через QR-разложение или SVD: np.linalg.lstsq работает через SVD, LinearRegression в scikit-learn опирается на scipy.linalg.lstsq. SVD заодно спасает при вырожденной матрице: псевдообратная X⁺ даёт решение с минимальной нормой.
Стоимость: построить XᵀX стоит порядка n·d², решить систему порядка d³. При очень большом числе признаков это дорого, и берут градиентный спуск или SGD.
У Ridge решение w = (XᵀX + λI)⁻¹Xᵀy: при положительной λ матрица всегда обратима, что снимает проблему мультиколлинеарности. Свободный член обычно не штрафуют.
Где спотыкаются
Пишут np.linalg.inv(X.T @ X). На коррелированных признаках коэффициенты выходят огромными и нестабильными, правильный путь это lstsq.
Забывают столбец единиц и получают прямую, проходящую через ноль.
Путают условия: для формулы нужна только линейная независимость столбцов, а нормальность остатков нужна для доверительных интервалов и тестов, не для самих коэффициентов.