机器学习基础之线性回归详解

1,279 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1. 线性回归问题的数学描述

xx为n维的输入特征,θ\theta为参数(parameter),也叫权重(weight),假设函数为以xx为变量的线性函数:

hθ(x)=i=0nθixi=θTx(1-1)h_{\theta}(x)=\sum_{i=0}^{n}\theta_i x_i=\theta^Tx\tag{1-1}

其中,习惯令x0=1x_0=1,对应的θ0\theta_0为截距项(intercept term) 代价函数(cost function)为h(x(i))h(x(i))与对应的y(i)y(i)的欧氏距离(的平方的一半):

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

上述代价函数其实就是最小二乘法拟合模型中的成本函数。

2. 最小均方算法(LMS, Least Mean Square)

我们的目的是选取合适的θ\theta使得最小化J(θ)J(\theta)。一般可采用迭代搜索的算法,选取θ\theta的初始值,然后改变θ\theta使得J(θ)J(\theta)减小并重复迭代这一过程。比较常用的算法是梯度下降(gradient descent)方法,迭代公式为:

θj:=θjαθjJ(θ)(2-1)\theta_j:=\theta_j-\alpha \frac{\partial{}}{\partial{\theta_j}}J(\theta)\tag{2-1}

(21)(2-1)对所有参数θj,j=1,2,,n\theta_j,j=1,2,\cdots,n都进行更新。α\alpha学习率(learning rate),用来调节迭代步长。梯度下降法可以朝着JJ降低最快的方向移动。

2.1. 只有一个样本的情况

当训练集只有一个样本时,第jj维参数的梯度方向为:

θjJ(θ)=θj12(hθ(x)y)2=(hθ(x)y)xj(2-2)\begin{aligned} \frac{\partial{}}{\partial{\theta_j}}J(\theta) &=\frac{\partial{}}{\partial{\theta_j}}\frac{1}{2}\left(h_{\theta}(x)-y\right)^2\\ &=(h_{\theta}(x)-y)x_j\\ \tag{2-2} \end{aligned}

此时,(21)(2-1)可表示为:

θj:=θj+α(yhθ(x))xj(2-3)\theta_j:=\theta_j+\alpha (y-h_{\theta}(x))x_j\tag{2-3}

可以看到,(2-3)中参数变化量的绝对值正比于实际值与预测值的差的绝对值,所以在迭代初期能够较快地靠近最优值,迭代末期能够比较精细地逼近最优值。

2.2. 多个样本的情况

一种更新方式是对所有样本的损失之和,也即(12)(1-2)所示代价函数进行求导代入(21)(2-1)

θj:=θj+αi=1m(y(i)hθ(x(i)))xj(i)(2-4)\theta_j:=\theta_j+\alpha\sum_{i=1}^m (y^{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)}\tag{2-4}

上述方法在每一步迭代时都要对训练集所有样本计算损失函数,被称为批量梯度下降(batch gradient descent)。、

注意,如果目标函数不是凸函数,那么梯度下降法很容易陷入局部最优;线性回归的代价函数是凸函数,只要α\alpha选取得不是特别大,总能收敛到全局最小值点。 另一种更新策略是每次迭代时,分别计算一个样本的损失函数并对参数进行更新:

Loop{
    for i=1 to m,{

\theta_j:=\theta_j+\alpha\left(y^{(i)}-h_{\theta}(x^{(i)}\right)x_j^{(i)}\tag{2-5}

    }
}

上面的方法叫做随机梯度下降(stochastic gradient descent)或者增量梯度下降(incremental gradient descent)。 由于批量梯度下降在每次迭代的时候都要计算训练集所有的样本的损失函数,因此当样本数mm比较大的时候梯度批量下降每次迭代所需的时间开销会比较大。此外,随机梯度下降也能够比批量梯度下降更快接近最小值点(注意,接近不代表一定会收敛,事实上,有时会在最小值点附近震荡,不过通常情况下足以满足精度要求)。

2.3. 线性回归的闭式解(解析解)

将训练集样本用矩阵的形式表示:

X=[(x(1))T(x(2))T(x(m))T](2-6)X=\begin{bmatrix} \left(x^{(1)}\right)^T\\ \left(x^{(2)}\right)^T\\ \vdots\\ \left(x^{(m)}\right)^T\\ \end{bmatrix} \tag{2-6}
y=[y(1)y(2)y(m)](2-7)\vec y=\begin{bmatrix} y^{(1)}\\ y^{(2)}\\ \vdots\\ y^{(m)}\\ \end{bmatrix} \tag{2-7}

其中XX是所有样本的特征组成的m×(n+1)m\times (n+1)维矩阵,y\vec y是所有样本的对应标签组成的mm维向量。 代价函数可表示为:

J(θ)=12i=1m(hθ(x(i))y(i))2=12(Xθy)T(Xθy)(2-7)\begin{aligned} J(\theta)&=\frac{1}{2}\sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right)^2\\ &=\frac{1}{2}(X\theta-\vec y)^T(X\theta-\vec y) \end{aligned} \tag{2-7}

利用矩阵求导的一些知识不难求得:

θJ(θ)=XTXθXTy(2-8)\nabla_{\theta}J(\theta)= X^TX\theta-X^T\vec y \tag{2-8}

为了让JJ最小,应该使得其导数为零,因此可以得到:

θ=(XTX)1XTy(2-9)\theta=(X^TX)^{-1}X^T\vec y \tag{2-9}

(2-9)需要对矩阵求逆运算,开销比较大,实际中一般不采用。

3. 线性回归模型的概率解释

本节主要是为了解释为什么线性回归模型以及(12)(1-2)所示的代价函数可以用来解决回归问题。

3.1. 线性回归模型前提假设条件

线性回归模型的成立需要满足一下几条假设: 1. 线性假设。线性模型是指输出变量关于参数是线性的,而对输出变量与输入变量没有过多要求。因此,线性模型不要求输出变量一定是输入变量的线性函数。但是,因为非线性组合的输入变量可以定义为一个新的变量,所以在很多场景下线性模型可以简化为输出变量关于输入变量是线性函数的形式,也即

Yi=β0+β1X+ϵi(3-1)Y_i=\beta _0+\beta _1X+\epsilon _i\tag{3-1}

即自变量XX每增加一个单位对YY的影响都是一样的(YY的值增加β1\beta_1). 2. 正态分布假设。误差项ϵ\epsilon是一个独立同分布与正态分布、期望为零、方差为δ2\delta^2的随机变量,且它与输出变量XX是不相关的:

E(ϵi)=0Var(ϵi)=δ2Cov(ϵi,ϵj)=0ϵiNormal0δ)(3-2)\begin{aligned} E(\epsilon_i)&=0\\ Var(\epsilon _i)&=\delta ^2\\ Cov(\epsilon _i,\epsilon _j)&=0\\ \epsilon _i&\sim Normal(0,\delta)\\ \tag{3-2} \end{aligned}

由上面可以推出yx;θN(μ,δ2)y|x;\theta\sim N(\mu,\delta^2),其中μ\muyy的均值

3.2. 损失函数为均方误差的证明

我们用如下更紧凑的方式来表示线性回归模型:

y(i)=θx(i)+ϵ(i)(3-3)y^{(i)}=\theta x^{(i)}+\epsilon^{(i)}\\ \tag{3-3}

其中x0=1,θ=[w;b]x_0=1,\theta=[w;b]ϵ(i)N(0,δ2)\epsilon^{(i)}\sim N(0,\delta^2)。 用极大似然估计的方法来求取最优的θ\theta。似然函数为:

L(θ)=L(θ;x,y)=p(yx;θ)(3-4)L(\theta)=L(\theta;x,y)=p(y|x;\theta)\\ \tag{3-4}

因为随机误差ϵ(i)\epsilon^{(i)}是相互独立的,因此似然函数可以写成:

L(θ)=i=1mp(y(i)x(i);θ)=i=1m1δ2πexp(12δ2(yμ)2)(3-5)\begin{aligned} L(\theta)&=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)\\ &=\prod_{i=1}^{m}{\frac{1}{\delta\sqrt {2\pi}}exp{\left(-\frac{1}{2\delta^2}(y-\mu)^2\right)}}\\ \tag{3-5} \end{aligned}

对数自然函数为:

l(θ)=log L(θ)=mlog1δ2π1δ212i=1m(y(i)θTx(i))2(3-6)\begin{aligned} l(\theta)&=log\ L(\theta)\\ &=mlog{\frac{1}{\delta\sqrt {2\pi}}}-\frac{1}{\delta^2}\cdot\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2\\ \tag{3-6} \end{aligned}

最大化l(θ)l(\theta)其实也就是等价于最小化如下式子(一般要再除以样本数mm,使cost function的量级不会依赖于样本数):

12mi=1m(y(i)θTx(i))2(3-7)\frac{1}{2m}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2\\ \tag{3-7}

因此损失函数选择均方误差是最好的选择

参考

关于线性回归模型的由来以及定义的更涉及本质的深入的分析见blog.csdn.net/thuchina/ar…