MachineLearning_Regression

一.线性回归

  • 线性回归形式简单、易于建模,但却蕴涵着机器学习中一些重要的基本思想。许多功能更为强大的非线性模型(nonlinear model)可在线性模型的基础上通过引入层级结构或高维映射而得。此外,由于线性回归的解𝜃直观表达了各属性在预测中的重要性,因此线性回归有很好的可解释性。
1.线性回归原理

线性回归遇到的问题一般是这样的。我们有𝑚个样本,每个样本对应于𝑛维特征和一个结果输出。
训练数据的形式:
( x 1 ( 0 ) , x 2 ( 0 ) , . . . x n ( 0 ) , y 0 ) , ( x 1 ( 1 ) , x 2 ( 1 ) , . . . x n ( 1 ) , y 1 ) , . . . ( x 1 ( m ) , x 2 ( m ) , . . . x n ( m ) , y n ) (x_1^{(0)}, x_2^{(0)},...x_n^{(0)},y_0), (x_1^{(1)}, x_2^{(1)}, ...x_n^{(1)}, y_1),...(x_1^{(m)}, x_2^{(m)},...x_n^{(m)},y_n) (x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m),x2(m),...xn(m),yn)
我们主要做的是通过找到参数 ( θ 0 , θ 1 , . . . θ m ) (\theta _0, \theta_1,...\theta_m) (θ0,θ1,...θm),线性回归模型如下:
h θ , ( x 1 , x 2 , . . . x n ) = θ 0 + θ 1 x 1 + . . . + θ n x n h_\theta, (x_1, x_2, ...x_n) = \theta_0 + \theta_1x_1 + ... + \theta_nx_n hθ,(x1,x2,...xn)=θ0+θ1x1+...+θnxn
矩阵化如下:
h θ ( X ) = X θ h_\theta(X) = X\theta hθ(X)=Xθ

得到了模型,我们需要求出需要的损失函数,一般线性回归我们用均方误差作为损失函数。损失函数的代数法表示如下:
J ( θ 0 , θ 1 , . . . θ n ) = ∑ i = 0 m ( h θ ( x 0 , x 1 , . . . x n ) − y i ) 2 J(\theta_0,\theta_1,...\theta_n) = \sum _{i=0}^m (h_\theta (x_0, x_1, ... x_n) - y_i)^2 J(θ0,θ1,...θn)=i=0m(hθ(x0,x1,...xn)yi)2
矩阵化如下:
J ( θ ) = 1 2 ( X θ − Y ) T ( X θ − Y ) J(\theta) = \frac{1}{2}(X\theta - Y)^T(X\theta - Y) J(θ)=21(XθY)T(XθY)

2.线性回归的算法

对于线性回归的损失函数 J ( θ ) = 1 2 ( X θ − Y ) T ( X θ − Y ) J(\theta) = \frac{1}{2}(X\theta - Y)^T(X\theta - Y) J(θ)=21(XθY)T(XθY) J ( θ ) ′ = X T ( X θ − Y ) J(\theta)'=X^T(X\theta -Y) J(θ)=XT(XθY)我们常用的有两种方法来求损失函数最小化时候的θ参数:一种是梯度下降法,一种是最小二乘法。

  • 如果采用梯度下降法,则𝜃的迭代公式是这样的:
    θ = θ − α X T ( X θ − Y ) \theta = \theta - \alpha X^T(X\theta - Y) θ=θαXT(XθY)
    其中 α \alpha α是学习率(步长), X T ( X θ − Y ) X^T(X\theta -Y) XT(XθY)是梯度
    通过若干次迭代后,我们可以得到最终的𝜃的结果
  • 如果采用最小二乘法,则 θ \theta θ的结果公式如下:
    θ = ( X T X ) − 1 X T Y \theta = (X^TX)^{-1}X^TY θ=(XTX)1XTY
    推导如下:
    J ( θ ) ′ = 0 J(\theta)'=0 J(θ)=0,即 X T ( X θ − Y ) X^T(X\theta -Y) XT(XθY)
    所以 θ = ( X T X ) − 1 X T Y \theta = (X^TX)^{-1}X^TY θ=(XTX)1XTY
    当然线性回归,还有其他的常用算法,比如牛顿法和拟牛顿法,这里不详细描述。

3.多项式线性回归

我们遇到的数据不一定都是线性的形式,如果是 y = x 1 2 + x 2 2 y = x_1^2+x_2^2 y=x12+x22的模型,那线性回归很难拟合这个函数,这时候就需要用到多项式回归了。
回到我们开始的线性模型, h θ , ( x 1 , x 2 , . . . x n ) = θ 0 + θ 1 x 1 + . . . + θ n x n h_\theta, (x_1, x_2, ...x_n) = \theta_0 + \theta_1x_1 +... + \theta_nx_n hθ,(x1,x2,...xn)=θ0+θ1x1+...+θnxn,如果这里不仅仅是x的一次方,而是二次方,那么模型就变成了多项式回归。这里写一个只有两个特征的2次多项式回归的模型:
h θ ( x 1 , x 2 ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 + θ 5 x 1 x 2 h_\theta(x_1, x_2) = \theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_1^2 + \theta_4x_2^2 + \theta_5x_1x_2 hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x12+θ4x22+θ5x1x2
我们令 x 0 = 1 , x 1 = x 1 , x 2 = x 2 , x 3 = x 1 2 , x 4 = x 2 2 , x 5 = x 1 x 2 x_0=1, x_1 = x_1, x_2 = x_2, x_3 = x_1^2, x_4 = x_2^2, x_5 = x_1x_2 x0=1,x1=x1,x2=x2,x3=x12,x4=x22,x5=x1x2,这样我们就得到下式:
h θ ( x 1 , x 2 ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 + θ 5 x 5 h_\theta(x_1, x_2) = \theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_3 + \theta_4x_4 + \theta_5x_5 hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x3+θ4x4+θ5x5
可以发现,我们又重新回到了线性回归,这是一个五元线性回归,可以用线性回归的方法来完成算法。对于每个二元样本特征 ( x 1 , x 2 ) (x_1,x_2) (x1,x2),我们得到一个五元样本特征 ( 1 , x 1 , x 2 , x 1 2 , x 2 2 , x 1 , x 2 ) (1, x_1, x_2, x_1^2, x_2^2, x_1, x_2) (1,x1,x2,x12,x22,x1,x2),通过这个改进的五元样本特征,我们重新把不是线性回归的函数变回线性回归,但是达到了非线性拟合的效果。

二.岭回归

1.参数推导

线性回归模型的目标函数
J ( β ) = ∑ ( y − X β ) J(\beta) = \sum(y - X\beta) J(β)=(yXβ)
为了保证回归系数 β \beta β可求,岭回归模型在目标函数上加了一个L2范数的惩罚项
J ( β ) = ∑ ( y − X β ) 2 + λ ∣ ∣ β ∣ ∣ 2 = ∑ ( y − X β ) 2 + ∑ λ β 2 \begin{aligned} J(\beta) = \sum(y - X\beta)^2 + \lambda ||\beta||^2 \\ =\sum(y - X\beta)^2 + \sum\lambda\beta^2 \end{aligned} J(β)=(yXβ)2+λβ2=(yXβ)2+λβ2
其中 λ \lambda λ为非负数, λ \lambda λ越大,则为了使 J ( β ) J(\beta) J(β)最小,回归系数 β \beta β就越小。
推导过程:
J ( β ) = ( y − X β ) T ( y − X β ) + λ β T β = y T y − y T X β − β T X T y + β T X T X β + λ β T β \begin{aligned} J(\beta) &= (y - X\beta)^T(y - X\beta)+\lambda\beta^T\beta \\ &=y^Ty-y^TX\beta-\beta^TX^Ty + \beta^TX^TX\beta + \lambda\beta^T\beta \end{aligned} J(β)=(yXβ)T(yXβ)+λβTβ=yTyyTXββTXTy+βTXTXβ+λβTβ

令 ∂ J ( β ) ∂ β = 0 令\frac{\partial J(\beta)}{\partial \beta} = 0 βJ(β)=0

⇒ 0 − X T y − X T y + 2 X T X β + 2 λ β = 0 \Rightarrow0-X^Ty-X^Ty + 2X^TX\beta + 2\lambda\beta = 0 0XTyXTy+2XTXβ+2λβ=0

⇒ β = ( X T X + λ I ) − 1 X T y \Rightarrow \beta = (X^TX+\lambda I)^{-1}X^Ty β=(XTX+λI)1XTy
L2范数惩罚项的加入使得 ( X T X + λ I ) (X^TX+\lambda I) (XTX+λI)满秩,保证了可逆,但是也由于惩罚项的加入,使得回归系数 β \beta β的估计不再是无偏估计。所以岭回归是以放弃无偏性、降低精度为代价解决病态矩阵问题的回归方法。
单位矩阵 I I I的对角线上全是1,像一条山岭一样,这也是岭回归名称的由来。

2.λ的选择
  • 模型的方差:回归系数的方差
  • 模型的偏差:预测值和真实值的差异
    随着模型复杂度的提升,在训练集上的效果就越好,即模型的偏差就越小;但是同时模型的方差就越大。对于岭回归的 λ \lambda λ而言,随着 λ \lambda λ的增大, ∣ X T X + λ I ∣ |X^TX+\lambda I| XTX+λI就越大, ( X T X + λ I ) − 1 (X^TX+\lambda I)^{-1} (XTX+λI)1就越小,模型的方差就越小;而 λ \lambda λ越大使得 β \beta β的估计值更加偏离真实值,模型的偏差就越大。所以岭回归的关键是找到一个合理的 λ \lambda λ值来平衡模型的方差和偏差。
    根据凸优化,可以将岭回归模型的目标函数 J ( β ) J(\beta) J(β)最小化问题等价于
    f ( x ) = { a r g m i n { ∑ ( y − X β 2 ) } ∑ β 2 ≤ t f(x)= \begin{cases} argmin\{\sum(y - X\beta^2)\}\\ \sum\beta^2\leq t \end{cases} f(x)={argmin{(yXβ2)}β2t
    其中t为一个常数。以最简单的二维为例,即 β ( β 1 , β 2 ) \beta(\beta_1, \beta_2) β(β1,β2)其几何图形是
    在这里插入图片描述在这里插入图片描述抛物面代表的是 ∑ ( y − X β ) 2 \sum(y-X\beta)^2 (yXβ)2的部分,圆柱体代表的是 β 1 2 + β 2 2 ≤ t \beta_1^2+\beta_2^2\leq t β12+β22t的部分。最小二乘解是抛物面的中心,岭回归解是抛物面与圆柱体的交点。岭回归的惩罚项 ∑ λ β 2 \sum\lambda\beta^2 λβ2是关于回归系数 β \beta β的二次函数,对目标函数求偏导时会保留 β \beta β,抛物面与圆柱体很难相交于轴上使某个变量的回归系数为0,因此岭回归不能实现变量的剔除。
    (1) 岭迹法确定λ值

β = ( X T X + λ I ) − 1 X T y \beta=(X^TX+\lambda I)^{-1}X^Ty β=(XTX+λI)1XTy可知 β \beta β λ \lambda λ的函数,当 λ ∈ [ 0 , ∞ ) \lambda \in [0,\infty) λ[0,)时,在平面直角坐标系中的 β − λ \beta-\lambda βλ曲线称为岭迹曲线。当 β \beta β趋于稳定的点就是所要寻找的 λ \lambda λ值。
在这里插入图片描述
(2)交叉验证法确定λ\lambdaλ值
交叉验证法的思想是,将数据集拆分为k个数据组(每组样本量大体相当),从k组中挑选k-1组用于模型的训练,剩下的1组用于模型的测试,则会有k-1个训练集和测试集配对,每一种训练集和测试集下都会有对应的一个模型及模型评分(如均方误差),进而可以得到一个平均评分。对于 λ \lambda λ值则选择平均评分最优的 λ \lambda λ值。

三.LASSO回归

1.参数推导

岭回归无法剔除变量,而LASSO回归模型,将惩罚项由L2范数变为L1范数,可以将一些不重要的回归系数缩减为0,达到剔除变量的目的。
J ( β ) = ∑ ( y − X β ) 2 + λ ∣ ∣ β ∣ ∣ 1 = ∑ ( y − X β ) 2 + ∑ λ ∣ β ∣ = E S S ( β ) + λ l 1 ( β ) \begin{aligned} J(\beta)&=\sum(y-X\beta)^2+\lambda||\beta||_1 \\ &=\sum(y-X\beta)^2+\sum\lambda|\beta| \\ &=ESS(\beta)+\lambda l_1(\beta) \end{aligned} J(β)=(yXβ)2+λβ1=(yXβ)2+λβ=ESS(β)+λl1(β)
其中 E S S ( β ) ESS(\beta) ESS(β)表示误差平方和, λ l 1 ( β ) \lambda l_1(\beta) λl1(β)表示惩罚项。由于惩罚项变成了绝对值,则在零点处就不可导,故采用坐标下降法(对于p维参数的可微凸函数 J ( β ) J(\beta) J(β),如果存在 β ^ \hat\beta β^使得 J ( β ) J(\beta) J(β)在每个坐标轴上均达到最小值,则 J ( β ^ ) J(\hat{\beta}) J(β^) 就是点 β ^ \hat\beta β^上的全局最小值),控制其他p-1个参数不变,对目标函数中的某一个 β j \beta_j βj求偏导,以此类推对剩下的p-1个参数求偏导,最终令每个分量下的导函数为0,得到使目标函数达到全局最小的 β ^ \hat\beta β^
E S S ( β ) = ∑ i = 1 n ( y i − ∑ j = 1 n β x i j ) 2 = ∑ i = 1 n ( y i 2 + ( ∑ j = 1 p β j x i j ) 2 − 2 y i ( ∑ j = 1 p β j x i j ) ) \begin{aligned} ESS(\beta)&=\sum_{i = 1}^{n}(y_i-\sum _{j=1}^{n}\beta x_{ij})^2\\ &=\sum _{i=1}^n(y_i^2+(\sum_{j=1}^p\beta_jx_{ij})^2-2y_i(\sum_{j=1}^p\beta_jx_{ij})) \end{aligned} ESS(β)=i=1n(yij=1nβxij)2=i=1n(yi2+(j=1pβjxij)22yi(j=1pβjxij))

⟹ ∂ E S S ( β ) ∂ β j = − 2 ∑ i − 1 n x i j ( y i − ∑ j = 1 p β j x i j ) = − 2 ∑ i − 1 n x i j ( y i − ∑ k = j β k x i k − β j x i j ) = − 2 ∑ i − 1 n x i j ( y i − ∑ k = j β k x i k ) + 2 β j ∑ i = 1 n x i j 2 = − 2 m j + 2 β j n j \begin{aligned} \Longrightarrow\frac{\partial ESS(\beta)}{\partial \beta_j}&=-2\sum_{i-1}^nx_{ij}(y_i-\sum^{p}_{j=1}\beta_jx_{ij})\\ &=-2\sum_{i-1}^nx_{ij}(y_i-\sum_{k=j}\beta_kx_{ik}-\beta_jx_{ij})\\ &=-2\sum_{i-1}^nx_{ij}(y_i-\sum_{k=j}\beta_kx_{ik})+2\beta_j\sum_{i=1}^n x_{ij}^2\\ &=-2m_j+2\beta_jn_j \end{aligned} βjESS(β)=2i1nxij(yij=1pβjxij)=2i1nxij(yik=jβkxikβjxij)=2i1nxij(yik=jβkxik)+2βji=1nxij2=2mj+2βjnj

其中 m j = ∑ i − 1 n x i j ( y i − ∑ k = j β k x i k ) , n j = ∑ i = 1 n x i j 2 m_j=\sum_{i-1}^nx_{ij}(y_i-\sum_{k=j}\beta_kx_{ik}),n_j=\sum_{i=1}^nx_{ij}^2 mj=i1nxij(yik=jβkxik),nj=i=1nxij2
惩罚项不可导,则使用次导数:
∂ λ l 1 ( β ) ∂ β j = { λ , 当 β j > 0 [ − λ , λ ] , 当 β j = 0 − λ , 当 β j < 0 \frac{\partial \lambda l_1(\beta)}{\partial \beta_j}= \begin{cases} \lambda,&当\beta_j>0\\ [-\lambda,\lambda], &当\beta_j=0\\ -\lambda, &当\beta_j<0 \end{cases} βjλl1(β)=λ,[λ,λ],λ,βj>0βj=0βj<0
于是令两个偏导数相加等于0
∂ E S S ( β ) ∂ β j + ∂ λ l 1 ( β ) ∂ β j = { − 2 m j + 2 β j n j + λ = 0 [ − 2 m j − λ , − 2 m j + λ ] = 0 − 2 m j + 2 β j n j − λ = 0 ⟹ β j = { ( m j − λ 2 ) / n j , 当 m j > λ 2 0 , 当 m j ∈ [ − λ 2 , λ 2 ] ( m j + λ 2 ) / n j , 当 m j < λ 2 \frac{\partial ESS(\beta)}{\partial \beta_j} + \frac{\partial \lambda l_1(\beta)}{\partial \beta_j} = \begin{cases} -2m_j+2\beta_jn_j+\lambda=0\\ [-2m_j-\lambda,-2m_j+\lambda]=0\\ -2m_j+2\beta_jn_j-\lambda=0 \end{cases}\\ \Longrightarrow\beta_j = \begin{cases} (m_j-\frac{\lambda}{2})/n_j,&当m_j>\frac{\lambda}{2}\\ 0, &当m_j\in[-\frac{\lambda}{2},\frac{\lambda}{2}]\\ (m_j+\frac{\lambda}{2})/n_j,&当m_j<\frac{\lambda}{2} \end{cases} βjESS(β)+βjλl1(β)=2mj+2βjnj+λ=0[2mjλ,2mj+λ]=02mj+2βjnjλ=0βj=(mj2λ)/nj,0,(mj+2λ)/nj,mj>2λmj[2λ,2λ]mj<2λ

2. λ \lambda λ的选择

直接使用交叉验证法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值