线性回归
理论模型
给一个随机样本:
(Yi,Xi1,…,Xip),i=1,…,n,一个线性回归模型假设回归子
Yi 和回归量
Xi1,…,Xip之间的关系是除了X的影响以外,还有其他的变量存在。我们加入一个误差项
εi(也是一个随机变量)来捕获除了
Xi1,…,Xip之外任何对
Yi的影响。所以一个多变量线性回归模型表示为以下的形式:
Yi=β0+β1Xi1+β2Xi2+…+βpXip+εi,i=1,…,n其他的模型可能被认定成非线性模型。一个线性回归模型不需要是自变量的线性函数。线性在这里表示
Yi的条件均值在参数
β里是线性的。例如:模型
Yi=β1Xi+β2Xi2+εi在
β1和β2里是线性的,但在
Xi2里是非线性的,它是
Xi的非线性函数。
基本假设
- 样本是在总体之中随机抽取出来的。
- 因变量Y在实直线上是连续的,
- 残差项是独立且相同分布的,也就是说,残差是独立随机的,且服从正态分布Normal distribution(高斯分布Gaussian distribution)。
这些假设意味着残差项不依赖自变量的值,所以
εi和自变量X(预测变量)之间是相互独立的。
在这些假设下,建立一个显式线性回归作为条件预期模型的简单线性回归,可以表示为:
E(Yi∣Xi=xi)=α+βxi
数据和估计
区分随机变量和这些变量的观测值是很重要的。通常来说,观测值或数据(以小写字母表记)包括了n个值
(yi,xi1,…,xip),i=1,…,n
我们有
p+1个参数
β0,…,βp需要确定,为了估计这些参数,使用矩阵记是很有用的。
Y=Xβ+ε其中Y是一个包括了观测值
Y1,…,Yn的列向量,
ε包括了未观测的随机成分
ε1,…,εn以及回归量的观测值矩阵
X:
Xn×p+1=⎝⎜⎜⎜⎛11⋮1x11x21⋮xn1⋯⋯⋱⋯x1px2p⋮xnp⎠⎟⎟⎟⎞X通常包括一个常数项。
所以如果
X列满秩时,这是后求解参数向量
β 可以使用最小二乘法:
β^=(XTX)−1XTy
如果
X不是列满秩,或者某些列之间的线性相关性比较大时,
XTX的行列式接近于0,即
XTX接近于奇异,计算(
(XTX)−1时误差会很大。此时传统的最小二乘法缺乏稳定性与可靠性。这样会造成过拟合Overfit
过拟合: 当样本特征很多,样本数相对较少时,模型容易陷入过拟合。
所以有常用的一下方法
- 减少特征数量。由于
X不是列满秩,即样本
X列向量之间有高度的相关性,这时候进行降维,从而使其变成列满秩然后进行计算。这里降维的方法有
- 正则化。减少特征参数
w的数量级,下面主要讲的就是这个方法
正则化
写之前先了解一下相关概念:
扫描二维码关注公众号,回复:
9593328 查看本文章
我们要了解正则化就从机器学习这个方向入手,机器学习的训练过程,就是要找到一个足够好的函数
F∗用以在新的数据上进行推理。为了定义什么是“好”,人们引入了损失函数的概念。一般地,对于样本
(x
,y)和模型
F,有预测值
y^=F(x
)。损失函数是定义在
R×R→R上的二元函数
ℓ(y,y^),用来描述基准真相和模型预测值之间的差距。一般来说,损失函数是一个有下确界的函数;当基准真相和模型预测值足够接近,损失函数的值也会接近该下确界。
因此,机器学习的训练过程可以被转化为训练集
D上的最小化问题。我们的目标是在泛函空间内,找到使得全局损失
L(F)=i∈D∑ℓ(yi,y^i)最小的模型
F∗。
F∗:=arg minFL(F).
由于损失函数只考虑在训练集上的经验风险,这种做法可能会导致过拟合。为了对抗过拟合,我们需要向损失函数中加入描述模型复杂程度的正则项
Ω(F),将经验风险最小化问题转化为结构风险最小化。
F∗:=arg minFObj(F)=arg minF(L(F)+γΩ(F)),γ>0.
这里,
Obj(F)称为目标函数(Objective Function),它描述模型的结构风险;
L(F)是训练集上的损失函数;
Ω(F)是正则项,描述模型的复杂程度;
γ是用于控制正则项重要程度的参数。正则项通常包括对光滑度及向量空间内范数上界的限制。
Lp-范数是一种常见的正则项。
范数
所谓范数,就是某种抽象的长度。范数满足通常意义上长度的三个基本性质:
非负性:
∥x
∥⩾0;
齐次性:
∥c⋅x
∥=∣c∣⋅∥x
∥;
三角不等式:
∥x
+y
∥⩽∥x⃗∥+∥y⃗∥。
在这里,我们需要关注的最主要是范数的非负性。我们刚才讲,损失函数通常是一个有下确界的函数。而这个性质保证了我们可以对损失函数做最优化求解。如果我们要保证目标函数依然可以做最优化求解,那么我们就必须让正则项也有一个下界。非负性无疑提供了这样的下界,而且它是一个下确界——由齐次性保证(当 c=0 时)。
因此,我们说,范数的性质使得它天然地适合作为机器学习的正则项。而范数需要的向量,则是机器学习的学习目标——参数向量。
机器学习中有几个常用的范数,分别是
L0-范数:
∥x⃗∥0=(i),i=0;
L1-范数:
∥x⃗∥1=∑i=1d∣xi∣;
L2-范数:
∥x⃗∥2=(∑i=1dxi2)1/2;
Lp-范数:
∥x⃗∥p=(∑i=1dxip)1/p;
L∞-范数:
∥x⃗∥∞=limp→+∞(∑i=1dxip)1/p。
在机器学习中,如果使用了
∥w⃗∥p 作为正则项;则我们说,该机器学习任务引入了
Lp-正则项。
举例
下面我们考虑最简单的线性模型来进行举例:
给定数据集
D=(xi,yi)i=1n,其中
xi=(xi1,xi2,xi3,…,xid),
yi∈R
机器学习模型当中的参数,可形式化地组成参数向量,记为
ω
。
所以
F(x
;ω
)=ω
⊺⋅x
=i=1∑nωi⋅xi.
损失函数
L(F)=i∈D∑ℓ(yi,y^i)=1/n∑i=1n(yi−wTxi)2
-
L1范数正则化(Lasso,Least Absoulute Shrinkage and Selection Operator)
正则项:
Ω(F(x
;ω
)):=γ1n∥ω
∥1,γ1>0.
-
L2范数正则化(Ridge Regression,岭回归)
正则项:
Ω(F(x
;w
)):=γ22n∥ω
∥22,γ2>0,
岭回归求解
有目标函数
Obj(F)=L(F)+γ22n∥ω
∥22,
- 梯度下降法
对于参数
ωi,有偏导
∂ωi∂Obj=∂ωi∂L+nγ2ωi.
因此,在梯度下降时,参数
ωi的更新
ωi′←ωi−η∂ωi∂L−ηnγ2ωi=(1−ηnγ2)ωi−η∂ωi∂L.
注意到
ηnγ2通常是介于
(0,1)之间的数,引入
L2-正则项相当于衰减了(decay)参数的权重,使得参数接近零,从而对抗过拟合。
- 采用正规方程
最优解为:
w∗=(XTX+γI)−1XTy
最后得到模型
y^=wTX=XTw=(XTX+γI)−1XTy
Lasso回归求解
理解:我们考虑这样一种普遍的情况,即:预测目标背后的真是规律,可能只和某几个维度的特征有关;而其它维度的特征,要不然作用非常小,要不然纯粹是噪声。在这种情况下,除了这几个维度的特征对应的参数之外,其它维度的参数应该为零。若不然,则当其它维度的特征存在噪音时,模型的行为会发生预期之外的变化,导致过拟合。
由于
L1范数用的是绝对值,导致LASSO的优化目标不是连续可导的,也就是说,最小二乘法,梯度下降法,牛顿法,拟牛顿法都不能用。
L1范数正则化问题求解可采用近端梯度下降法(Proximal Gradient Descent,PGD)。
L1-正则项与 L2-正则项的区别
现在,我们考虑这样一个问题:为什么使用
L1-正则项,会倾向于使得参数稀疏化;而使用
L2-正则项,会倾向于使得参数稠密地接近于零?
这里引用一张来自周志华老师的著作,《机器学习》(西瓜书)里的插图,尝试解释这个问题。
稀疏解与平滑稠密
为了简便起见,我们只考虑模型有两个参数
w1与
w2 的情形。
在图中,我们有三组「等值线」。位于同一条等值线上的
w1与
w2 ,具有相同的值(平方误差、
L1-范数或
L2-范数)。并且,对于三组等值线来说,当
(w1,w2) 沿着等值线法线方向,像外扩张,则对应的值增大;反之,若沿着法线方向向内收缩,则对应的值减小。
因此,对于目标函数
Obj(F)来说,实际上是要在正则项的等值线与损失函数的等值线中寻找一个交点,使得二者的和最小。
对于
L1-正则项来说,因为
L1-正则项的等值线是一组菱形,这些交点容易落在坐标轴上。因此,另一个参数的值在这个交点上就是零,从而实现了稀疏化。
对于
L2-正则项来说,因为
L2-正则项的等值线是一组圆形。所以,这些交点可能落在整个平面的任意位置。所以它不能实现「稀疏化」。但是,另一方面,由于
(w1,w2) 落在圆上,所以它们的值会比较接近。这就是为什么
L2-正则项可以使得参数在零附近稠密而平滑。
引用
[1]维基百科:https://zh.wikipedia.org/wiki/%E7%B7%9A%E6%80%A7%E5%9B%9E%E6%AD%B8
[2] 《机器学习》 周志华
[3] 《Python机器学习基础教程》 人 民 邮 电 出 版 社
[4] https://blog.csdn.net/pxhdky/article/details/82960659
[5] https://liam.page/2017/03/30/L1-and-L2-regularizer/