机器学习 | 线性回归

2019-02-18 17:39:55 浏览数 (1)

计划好久,还欠下的债。

问题一: 最小二乘法和梯度下降法的区别

在回答这个问题前,有必要来推导下线性回归的公式,方能说到实处。

开始公式

如一元线性回归,即只有一个自变量,那也只有两个参数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、加入代码

0 人点赞