计划好久,还欠下的债。
问题一: 最小二乘法和梯度下降法的区别
在回答这个问题前,有必要来推导下线性回归的公式,方能说到实处。
开始公式
如一元线性回归,即只有一个自变量,那也只有两个参数w1w_{1}和w0w_{0},表达式如下:
f(x)=w0 w1∗x1
f(x) = w_{0} w_{1}*x_{1}
其损失函数为:
J(w)=∑i=1N(yi−w0−w1∗xi)2
J(w) = sum_{i=1}^{N} (y_{i} - w_{0} - w_{1}*x_{i})^{2}
改为矩阵形式
则:
J(w)=(y−x∗w)T(y−x∗w)
J(w) = (y - x*w)^{T}(y- x*w)
对损失函数求导
φ(J(w))φ(w)=2∗xT(x∗w^−y)
frac{varphi( J(w))}{varphi(w)} = 2*x^{T}(x*hat{w} - y)
最小二乘法是取损失函数的导数为0,得到
w^=(xTx)−1xTy
hat{w} = (x^{T}x)^{-1}x^{T}y
可知,(xTx)T(x^{T}x)^{T}可能为非满秩的矩阵或非正定矩阵,这个时候最小二乘法就失效了。
改进方法: 1、梯度下降法 更新公式为:
wi 1=wi−α∗φ(J(w))φ(w)
w_{i 1} = w_{i} - alpha* frac{varphi( J(w))}{varphi(w)}
2、正则化 如引入L2正则化,
J(w)=∑i=1N(yi−w0−∑j=1pwjxij)2 λ∑j=1pw2j
J(w) = sum_{i=1}^{N} (y_{i} - w_{0} - sum_{j=1}^{p} w_{j}x_{ij})^{2} lambda sum_{j=1}^{p} w_{j}^{2}
对它关于ww求偏导
φ(J(w))φ(w^)=2∗xT(xw^−y) 2∗λ∗w^
frac{varphi({J(w)})}{varphi(hat {w})} = 2*x^{T}(x hat{w} - y) 2*lambda * hat{w}
令上式子等于0,
w^=(xTx λ∗I)−1xTy
hat{w} = (x^{T}x lambda*I)^{-1} x^{T}y
理论上的总结: 1、当XTXX^{T}X为满秩矩阵或正定矩阵时,可以使用最小二乘法来求解;非满秩矩阵或非正定矩阵时,一般采用正则化方法 梯度下降法 或梯度下降法。 2、最小二乘法是求解全局最小解;梯度下降法是求解局部最小解。
未完待定 1、进一步完善公式; 2、新的理解; 3、拓展范围; 4、加入代码