MachineLearning_Regression

一.线性回归

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

1.线性回归原理

线性回归遇到的问题一般是这样的。我们有????个样本,每个样本对应于????维特征和一个结果输出。
训练数据的形式:
(x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m),x2(m),...xn(m),yn)(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)
我们主要做的是通过找到参数(θ0,θ1,...θm)(\theta _0, \theta_1,...\theta_m),线性回归模型如下:
hθ,(x1,x2,...xn)=θ0+θ1x1+...+θnxnh_\theta, (x_1, x_2, ...x_n) = \theta_0 + \theta_1x_1 + ... + \theta_nx_n
矩阵化如下:
hθ(X)=Xθh_\theta(X) = X\theta

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

2.线性回归的算法

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

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

3.多项式线性回归

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

二.岭回归

1.参数推导

线性回归模型的目标函数
J(β)=(yXβ)J(\beta) = \sum(y - X\beta)
为了保证回归系数β\beta可求,岭回归模型在目标函数上加了一个L2范数的惩罚项
J(β)=(yXβ)2+λβ2=(yXβ)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}
其中λ\lambda为非负数,λ\lambda越大,则为了使J(β)J(\beta)最小,回归系数β\beta就越小。
推导过程:
J(β)=(yXβ)T(yXβ)+λβTβ=yTyyTXββTXTy+βTXTXβ+λβ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(β)β=0令\frac{\partial J(\beta)}{\partial \beta} = 0

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

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

2.λ的选择

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

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