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

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

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

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

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

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

J ( θ ) = 1 2 i = 1 m ( 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 α θ j J ( θ ) (2-1) \theta_j:=\theta_j-\alpha \frac{\partial{}}{\partial{\theta_j}}J(\theta)\tag{2-1}

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

2.1. 只有一个样本的情况

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

θ j J ( θ ) = θ j 1 2 ( h θ ( x ) y ) 2 = ( h θ ( x ) y ) x j (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}

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

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

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

2.2. 多个样本的情况

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

θ j : = θ j + α i = 1 m ( y ( i ) h θ ( x ( i ) ) ) x j ( 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)。 由于批量梯度下降在每次迭代的时候都要计算训练集所有的样本的损失函数,因此当样本数 m m 比较大的时候梯度批量下降每次迭代所需的时间开销会比较大。此外,随机梯度下降也能够比批量梯度下降更快接近最小值点(注意,接近不代表一定会收敛,事实上,有时会在最小值点附近震荡,不过通常情况下足以满足精度要求)。

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}

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

J ( θ ) = 1 2 i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2 = 1 2 ( 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 ( θ ) = X T X θ X T y (2-8) \nabla_{\theta}J(\theta)= X^TX\theta-X^T\vec y \tag{2-8}

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

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

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

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

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

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

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

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

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

E ( ϵ i ) = 0 V a r ( ϵ i ) = δ 2 C o v ( ϵ i , ϵ j ) = 0 ϵ i N o r m a l 0 δ ) (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}

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

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

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

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

其中 x 0 = 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 ( y x ; θ ) (3-4) L(\theta)=L(\theta;x,y)=p(y|x;\theta)\\ \tag{3-4}

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

L ( θ ) = i = 1 m p ( y ( i ) x ( i ) ; θ ) = i = 1 m 1 δ 2 π e x p ( 1 2 δ 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 ( θ ) = l o g   L ( θ ) = m l o g 1 δ 2 π 1 δ 2 1 2 i = 1 m ( y ( i ) θ T x ( 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) 其实也就是等价于最小化如下式子(一般要再除以样本数 m m ,使cost function的量级不会依赖于样本数):

1 2 m i = 1 m ( y ( i ) θ T x ( 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…

猜你喜欢

转载自juejin.im/post/7108377168777838622