线性回归其实就是寻找一条直线拟合数据点,使得损失函数最小。直线的表达式为:
\[y_{j}=\omega_{1}x_{i,1}+\omega_{2}x_{i,2}+\dots+\omega_{j}x_{i,j}+\dots+b\]
损失函数的表达式为:
\[J=\frac{1}{2}\sum_{k=0}^{m}(y_{k}-y_{predict\_i})^{2}\]
如上图所示,只要自变量$x$沿着负梯度的方向变化,就可以到达函数的最小值了,反之,如果沿着正梯度方向变化,就可以到达函数的最大值。
我们要求解$J$函数的最小值,那么就要求出每个$\omega$的梯度和$b$的梯度,由于梯度太大,可能会导致自变量沿着负梯度方向变化时,$J$的值出现震荡,而不是一直变小,所以在梯度的前面乘上一个很小的系数$\alpha$。
由以上可以总结出$\omega$和$b$的更新公式:
\begin{align*}
\omega_{j}^{\prime}& =\omega_{j}-\alpha\nabla J(\omega_{j}) \\
b^{\prime} & =b-\alpha\nabla J(b)
\end{align*}
求梯度:
\begin{equation}\label{gongshi:1}
\nabla J(\omega_{j})=\frac{\partial J}{\partial \omega_{j}}=\sum_{i=0}{m}(y_{i}-y_{predict\_{i}})x_{i}
\end{equation}
同理,$b$也很容易求得,根据公式\ref{gongshi:1}。为了防止以后震荡的发生
\[\displaystyle{\alpha=\frac{1}{i+1}+0.001}\]