线性回归

线性回归到底是什么?

假设数据为:
D=(x1,y1),,(xN,yN)D = (x_1,y_1), \cdots , (x_N,y_N)
记为:
X=(x1,x2,,xN)T,Y=(y1,y2,,yN)TX = (x_1,x_2,\cdots,x_N)^T,Y = (y_1,y_2,\cdots, y_N)^T
假设:
h(x)=hθ(x)=θ0+θ1x1+θ2x2++θNxN=θTXh(x) = h_\theta(x) = \theta_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_Nx_N = \theta^TX
线性回归假设特征和结果满足线性关系。其实线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,然后再参与线性计算。这样就可以表达特征与结果之间的非线性关系。

x1,,xNx_1, \cdots,x_N代表了不同的特征(features),θ\theta在这里是参数,也可以理解为权重,意思是调整特征中每个分量的占比,那么我们需要设计一个机制来对θ\theta进行评估,来用一个函数J(θ)J(\theta)来描述hθ(x)h_\theta(x)不好的程度。

核心思想

所以如何构造J(θ)J(\theta),也就是我们所谓的损失函数就十分重要!

最小二乘法

我们采用二范数定义的平方误差来定义损失函数:

J(θ)=i=1NθTxiyi22J(\theta) = \sum_{i=1}^{N} ||\theta^Tx_i-y_i||_2^2
展开得到:
J(θ)=(θ)TXTXθ2θTXTY+YTYJ(\theta) = (\theta) ^TX^TX\theta-2\theta^TX^TY+Y^TY
估计最小化上面的值的θ^\hat{\theta}
θ^=argminθJ(θ)\hat\theta = arg\min \limits_{\theta} J\left(\theta\right)
我们对损失函数关于参数θ\theta求导使其等于0,从而解出θ^\hat{\theta}
θ^=(XTX)1XTY=X+Y\hat{\theta} = (X^TX)^{-1}X^TY=X^+Y
这个等式也叫normal equation,其中的θ^=(XTX)1XT\hat{\theta} = (X^TX)^{-1}X^T被称为伪逆。对于行或列满秩的XX,可以直接求解,但是矩阵的逆可能会求起来比较慢,而对于非满秩的样本,需要使用奇异值分解,也就是SVD方法,得到
X=UΣVTX=U\Sigma V^T
所以:
X+=VΣ1UTX^+=V\Sigma^{-1}U^T

在几何角度上

这里,最小二乘法相当于直线与实验值的距离的平方和,我们希望这个距离越小越好,也就是所谓点到直线的最短距离,就是垂直的情况。那么延伸到高维的情况,假设我们的实验样本张成一个p维空间(满秩):X=Span(x1,,xN)X = Span(x_1, \cdots , x_N),而h(x)=hθ(x)=θTXh(x) = h_\theta(x) = \theta^TX,也就是x1,,xNx_1, \cdots , x_N的某种线性组合,那么这个距离的差值应该和这个张成的空间垂直才能保证距离的最小化。
XT(YθTX)=0θ=(XTX)1XTYX^T \cdot (Y-\theta^TX) = 0 \Rightarrow \theta = (X^TX)^{-1}X^TY

梯度下降法

J(θ)=12i=1N(hθ(x(i))y(i))2J(\theta) = \frac{1}{2} \sum_{i=1}^{N} (h_\theta(x^{(i)})-y^{(i)})^2
我们要寻找θ\theta使得J(θ)J(\theta)最小,因此问题归结为求极小值问题,步骤如下:

  1. 首先对参数随机赋值
  2. 改变参数,使得损失函数按梯度下降的方向减少,梯度方向有偏导决定,因为求的为极小值,所以梯度方向是偏导的反方向,迭代方式有两种:
      • 批梯度下降:
        对全部的训练数据求得误差后在对参数进行更新
      • 增量梯度下降:
        每扫描一步都对参数进行更新(可能不断在收敛出徘徊)
  3. 重复直到收敛

选用误差函数为平方和的概率解释

至于为什么我们把损失函数定义为上述的形式,我们从概率方面来解释。假设根据特征的预测结果和实际结果有误差ϵ(i)\epsilon^{(i)},那么预测结果和真实结果满足:
y(i)=θTx(i)+ϵ(i)y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}
一般,误差满足均值为0的正态分布,那么
p(y(i)x(i);θ)=12πσexp((y(i)θTx(i))22σ2)p(y^{(i)}|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}\sigma}exp\Big(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}\Big)
这样就估计了一条样本结果的概率,然而我们希望概率积最大。注意这里的概率积是概率密度函数积,连续函数的概率密度函数与离散值的概率函数不同。这个概率积成为最大似然估计。
J(θ)=log p(YX;θ)=log i=1Np(y(i)x(i);θ)J(\theta) = log \space p(Y|X;\theta) = log \space \prod_{i=1}^{N}p(y^{(i)}|x^{(i)};\theta)
argminθJ(θ)=argminθi=1N(y(i)θTx(i))2arg\min \limits_{\theta} J(\theta) = arg\min \limits_{\theta} \sum_{i=1}^{N}(y^{(i)}-\theta^Tx^{(i)})^2
这就解释了为什么损失函数使用平方和。

线性回归的优缺点

改进

正则化

针对过拟合情况,我们有以下选择:

补充:

实际应用和代码展示

小结

线性回归模型是最简单的模型,但是麻雀虽小,五脏俱全,在这里,我们利用最小二乘误差得到了闭式解。同时也发现,在噪声为正态分布的时候,MLE的解等价于最小二乘误差,而增加了正则项后对模型过拟合情况进行改善,分别介绍了Lasso和Ridge的特点和区别。

虽然线性模型简单且易于理解,但是也有很多局限性,比如对非线性数据效果不好,对异常值敏感,无法解决分类问题,受制于特征间的线性相关性以及易造成维数灾难等等。