线性回归

基本形式

线性模型试图学的一个通过属性的线性组合来进行预测的函数,函数形式为:
f(x)=w1x1+w2x2+...+wdxd+b f(x)=w_1x_1+w_2x_2+...+w_dx_d+b
向量表示
f(x)=wTx+b f(x)=w^Tx+b
我们的目标是学习得到wwbb,这样模型就确定了。
这里有一个小技巧,我们令x0=1x_0=1这样,模型就可以进行简化、统一为
hθ(x)=θ0x0+θ1x1+...+θnxn=θTx h_\theta(x)=\theta_0x_0+\theta_1x_1+...+\theta_nx_n=\theta^Tx
θ0\theta_0为截距,在sklearn中为intercept_

Cost function

定义

线性回归的损失函数有很多种形式,但都可以称为最小二乘法。最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。最小二乘法
下面以sklearn的线性回归为例:

普通最小二乘法(RSS)

J(θ)=i=1m(hθ(x(i))y(i))2 J(\theta)=\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2

岭回归(Ridge)

使用了L2正则
J(θ)=i=1m(hθ(x(i))y(i))2+αj=0nθj2 J(\theta)=\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\alpha\sum_{j=0}^n\theta_j^2

Lasso

使用了L1正则
J(θ)=12mi=1m(hθ(x(i))y(i))2+αj=0nθj J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\alpha\sum_{j=0}^n|\theta_j|

弹性网络

结合了L1和L2
J(θ)=12mi=1m(hθ(x(i))y(i))2+αρj=0nθj+α(1ρ)2j=0nθj2 J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\alpha\rho\sum_{j=0}^n|\theta_j|+\frac{\alpha(1-\rho)}{2}\sum_{j=0}^n\theta_j^2

由来(概率解释)

假设目标变量和输入值存在如下等量关系
y(i)=θTx(i)+ϵ(i) y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}
其中ϵ(i)\epsilon^{(i)}是误差项。假设ϵ(i)\epsilon^{(i)}独立的且符合高斯分布ϵ(i)N(0,σ2)\epsilon^{(i)}\sim N(0, \sigma^2)

p(ϵ(i))=12πσexp((ϵ(i))22σ2)p(y(i)x(i);θ)=12πσexp((y(i)θTx(i))22σ2) p(\epsilon^{(i)}) = \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(\epsilon^{(i)})^2}{2\sigma^2})\\ p(y^{(i)}|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)} - \theta^Tx^{(i)})^2}{2\sigma^2})
使用最大似然估计(MLE)
L(θ)=i=1mp(y(i)x(i);θ)=i=1m12πσexp((y(i)θTx(i))22σ2) L(\theta) =\prod_{i=1}^{m} p(y^{(i)}|x^{(i)};\theta) =\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)} - \theta^Tx^{(i)})^2}{2\sigma^2})
取对数
log L(θ)=log i=1m12πσexp((y(i)θTx(i))22σ2)log L(θ)=i=1mlog 12πσ1σ212i=1m(y(i)θTx(i))2 log\ L(\theta) =log\ \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(y^{(i)} - \theta^Tx^{(i)})^2}{2\sigma^2})\\ log\ L(\theta)=\sum_{i=1}^{m}log\ \frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}\cdot\frac{1}{2}\sum_{i=1}^{m}(y^{(i)} - \theta^Tx^{(i)})^2
第一项为常数项,要使log L(θ)log\ L(\theta)最大,所以要第二项尽可能的小,所以要使
12i=1m(y(i)θTx(i))2 \frac{1}{2}\sum_{i=1}^{m}(y^{(i)} - \theta^Tx^{(i)})^2
尽可能的小

求解

有了Cost Function之后,我们就需要对目标函数进行求解

普通最小二乘法

正规方程

以西瓜书的推导为范本 P55 3.11
在这里插入图片描述

梯度下降

这里以吴恩达的为范本,吴恩达的损失函数为 J(θ)=12i=1m(hθ(x(i))y(i))2J(\theta)=\frac{1}{2}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2
梯度下降就是从某一个 θ\theta 的初始值开始,然后逐渐重复更新
θj:=θjαθjJ(θ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta)
其中
在这里插入图片描述

批量梯度下降(Batch Gradient Descent)

在这里插入图片描述
优点:得到全局最优解
缺点:当样本数目很多时,训练过程会很慢

随机梯度下降(Stochastic Gradient Descent)

也叫作增量梯度下降法(incremental gradient descent)
在这里插入图片描述
随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。
随机梯度下降法,和批量梯度下降法是两个极端,一个采用所有数据来梯度下降,一个用一个样本来梯度下降。
对于训练速度来说,随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。
对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。
优点:训练速度快
缺点:准确度下降,可能跳出最优解,不是全局最优

小批量梯度下降法(Mini-batch Gradient Descent)

SGD相对来说要快很多,但是也有存在问题,由于单个样本的训练可能会带来很多噪声,使得SGD并不是每次迭代都向着整体最优化方向,因此在刚开始训练时可能收敛得很快,但是训练一段时间后就会变得很慢。
小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,每次取一定数量的样本进行迭代更新。

岭回归

岭回归加入的L2正则可以避免正规方程中存在不可逆的问题

正规方程

损失函数的向量写法为
l=(yXw)T(yXw)+λwTw l=(y-Xw)^T(y-Xw)+\lambda w^Tw
最终
w=(XTX+λI)1XTy w=(X^TX+\lambda I)^{-1}X^Ty
一定是一个可逆矩阵

Lasso

由于L1不可导,所以不能使用正规方程,梯度下降等。sklearn中的Lasso使用的是坐标下降求解的
https://www.cnblogs.com/pinard/p/6018889.html

附录

各种误差

在这里插入图片描述
MSE(均方误差)、RMSE(均方根误差)、MAE(平均绝对误差)、R-Squared

参考

https://yezuolin.com/2018/10/Machine-Learning(Linear-Regression)/
https://blog.csdn.net/Datawhale/article/details/82931967

展开阅读全文

没有更多推荐了,返回首页