lec3.md
Что делает линейная регрессия?
Положим в X какие-то трёхмерные векторы:
X=⎝⎛117126221023111052143620350⎠⎞
Построим y по такой формуле:
y=100x−200y+70z+35+ϵ
Где ϵ — это какой-то шум с нормальный распределением с дисперсией 10, чтобы линейная формула не была уж совсем точной.
Если мы запустим линейную регрессию и посмотрим, сможет ли она восстановить параметры модели 100, 200, 70, 35, то внезапно заметим, что линейная регрессия как-то примерно угадала наши коэффициенты. Примерно, потому что мы добавили шум. Как же она это делает?
Как работает линейная регрессия?
По сути мы хотим подобрать числа a0,a1,a2,a3 для вот такой модели:
f(x1,x2,x3)=a0+a1x1+a2x2+a3x3
Мы хотим подобрать их так, чтобы функция потерь на наших данных была минимальна. В LinearRegression используют функцию потерь MSE — сумму квадратов отклонений от настоящего значения.
То есть задача такая:
i=1∑n(f(xi1,xi2,xi3)−yi)2→min
i=1∑n(a0=a1xi1+a2xi2+a3xi3−yi)2→min
где n это количество входных данных.
Давайте рассмотрим эту сумму, как функцию от 4 переменных a0,a1,a2,a3, которую нам нужно минимизировать. А числа xij и yi будут обычными константами.
MSE(a0,a1,a2,a3)→min
Давайте посчитаем частную производную по каждой координате.
Начнём с координаты a1:
MSEa1′(a0,a1,a2,a3)=i=1∑n((a0+a1xi1+a2xi2+a3xi3−yi)2)a1′=
Раскрываем квадрат, вынося отдельно члены, которые делятся на a12, a1 и 1:
=i=1∑n(xi12a12+2xi1(a0+a2xi2+a3xi3−yi)a1+(a0+a2xi2+a3xi3−yi)2)a1′=
Считаем производную, одна из скобок при этом обнуляется:
i=1∑n(2xi12a1+2xi1(a0+a2xi2+a3xi3−yi))=
Теперь вынесем 2 и xi1:
=2i=1∑n(xi1a1+a0+a2xi2+a3xi3−yi)xi1=
Заметим, что в скобках получилось очень простое выражение!
=2i=1∑n(f(xi1,xi2,xi3)−yi)xi1
Давайте приравняем все 4 производные (по a0,a1,a2,a3) нулю, тогда:
i=1∑n(a0+a1xi1+axxi2+a3xi3−yi)=0
i=1∑n(a0+a1xi1+axxi2+a3xi3−yi)xi1=0
i=1∑n(a0+a1xi1+axxi2+a3xi3−yi)xi2=0
i=1∑n(a0+a1xi1+axxi2+a3xi3−yi)xi3=0
Давайте сгруппируем все выражения по a0,a1,a2,a3:
na0+(i=1∑nxi1)a1+(i=1∑nxi2)a2+(i=1∑nxi3)a3=i=1∑nyi
(i=1∑nxi1)a0+(i=1∑nxi12)a1+(i=1∑nxi1xi2)a2+(i=1∑nxi1xi3)a3=i=1∑nxi1yi
(i=1∑nxi2)a0+(i=1∑nxi1xi2)a1+(i=1∑nxi22)a2+(i=1∑nxi2xi3)a3=i=1∑nxi2yi
(i=1∑nxi3)a0+(i=1∑nxi1xi3)a1+(i=1∑nxi2xi3)a2+(i=1∑nxi32)a3=i=1∑nxi3yi
Ура, мы получили красивую симметричную систему уравнения, 4 уравнения, 4 неизвестных. Если определитель матрицы коэффициентов не равен нулю, то у него есть ровно одно решение, и его мы умеем находить (методом Гаусса, например). Если определитель вдруг стал равен нулю, то решений либо 0, либо бесконечно.
У непрерывно-дифференцируемой функции, которая при стремлении по каждой координате к плюс или минус бесконечности сама стремится к плюс бесконечности, всегда существует глобальный минимум. В точке глобального минимума все производные как раз равны нулю. Следовательно, существует всегда хотя бы одно решение, и мы его найдем.