机器学习基础 Linear Regression

Linear Regression

回归

回归是基于给定的特征值,预测目标变量值的过程。数学上,回归旨在构建一个函数 f f f来建立输入数据 x = ( x 1 , x 2 , ⋯   , x m ) x={(x_1,x_2,\cdots,x_m)} x=(x1,x2,,xm)和监督值 y y y的联系。此后,我们便可以使用 f f f来预测 x x x对应的监督值 y ^ \hat{y} y^,即
y ^ = f ( x ) \hat{y}=f(x) y^=f(x)

线性回归

函数 f f f的形式是线性的,即 f f f具有如下形式
f ( x ) = f ( x 1 , x 2 , ⋯   , x m ) = w 0 + w 1 x 1 + w 2 x 2 + ⋯ + w m x m f(x)=f(x_1,x_2,\cdots,x_m)=w_0+w_1x_1+w_2x_2+\cdots+w_mx_m f(x)=f(x1,x2,,xm)=w0+w1x1+w2x2++wmxm

回归的目标

对于给定的训练数据集
{ ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯   , ( x ( n ) , y ( n ) ) } \{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\cdots,(x^{(n)},y^{(n)})\} {(x(1),y(1)),(x(2),y(2)),,(x(n),y(n))}
找到参数 { w 0 , w 1 , ⋯   , w m } \{w_0,w_1,\cdots,w_m\} {w0,w1,,wm},使得预测值 y ^ = f ( x ) \hat{y}=f(x) y^=f(x)可以和真实值 y y y尽可能地接近。

损失函数

为了刻画训练集上的预测值 ( y ^ 1 , y ^ 2 , ⋯   , y ^ n ) (\hat{y}_1,\hat{y}_2,\cdots,\hat{y}_n) (y^1,y^2,,y^n)和真实值 ( y 1 , y 2 , ⋯   , y n ) (y_1,y_2,\cdots,y_n) (y1,y2,,yn)的接近程度,我们引入损失函数来刻画这种接近程度。

多特征线性回归

一般地,线性回归写成如下形式
f ( x 1 , x 2 , ⋯   , x m ) = w 0 + w 1 x 1 + w 2 x 2 + ⋯ + w m x m f(x_1,x_2,\cdots,x_m)=w_0+w_1x_1+w_2x_2+\cdots+w_mx_m f(x1,x2,,xm)=w0+w1x1+w2x2++wmxm
其中, x i x_i xi表示数据点的第 i i i个特征。

引入矩阵后,我们的表示如下
f ( x ) = x w f({\bf{x}})=\bf{xw} f(x)=xw

x = [ 1 , x 1 , x 2 , ⋯   , x m ] {\bf{x}}=[1, x_1, x_2,\cdots,x_m] x=[1,x1,x2,,xm]

w = [ w 0 , w 1 , w 2 , ⋯   , w m ] T {\bf{w}}=[w_0, w_1,w_2,\cdots,w_m]^T w=[w0,w1,w2,,wm]T

若选择均方误差为损失函数,则损失函数可表示为
L ( w ) = 1 n ∑ i = 1 n ( x ( i ) w − y ( i ) ) 2 L({\bf{w}})=\frac{1}{n}\sum_{i=1}^n({\bf{x}}^{(i)}{\bf{w}}-y^{(i)})^2 L(w)=n1i=1n(x(i)wy(i))2
引入向量的模,则上述公式可表示为
L ( w ) = 1 n ∣ ∣ X w − y ∣ ∣ 2 L({\bf{w}})=\frac{1}{n}||{\bf{Xw}-y}||^2 L(w)=n1Xwy2

X = [ x ( 1 ) x ( 2 ) ⋮ x ( n ) ] ,   y = [ y ( 1 ) y ( 2 ) ⋮ y ( n ) ] {\bf{X}}= \begin{bmatrix} &{\bf{x}}^{(1)}\\ &{\bf{x}}^{(2)}\\ &\vdots\\ &{\bf{x}}^{(n)} \end{bmatrix},\ {\bf{y}}= \begin{bmatrix} &y^{(1)}\\ &y^{(2)}\\ &\vdots\\ &y^{(n)} \end{bmatrix} X=x(1)x(2)x(n), y=y(1)y(2)y(n)

梯度

梯度是一个向量,函数沿着梯度的方向增加最快。即沿着梯度方向找最大值,逆梯度方向找最小值。一般地,记梯度算子为 ∇ \nabla ,则有

对于以 n × 1 n\times1 n×1实向量 x \bf{x} x为变量的实标量函数 f ( x ) f({\bf{x}}) f(x)相对于 x {\bf{x}} x的梯度为 1 × n 1\times n 1×n的列向量
∇ x f ( x ) = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ⋮ ∂ f ∂ x n ] \nabla_{\bf{x}}f({\bf{x}})=\begin{bmatrix} \frac{\partial f}{\partial x_1}\\ \frac{\partial f}{\partial x_2}\\ \vdots\\ \frac{\partial f}{\partial x_n}\\ \end{bmatrix} xf(x)=x1fx2fxnf
对于 m m m维行向量函数 f ( x ) = [ f 1 ( x ) , f 2 ( x ) , ⋯   , f m ( x ) ] {\bf{f}}({\bf{x}})=[{\bf{f}}_1({\bf{x}}),{\bf{f}}_2({\bf{x}}),\cdots,{\bf{f}}_m({\bf{x}})] f(x)=[f1(x),f2(x),,fm(x)]相对于 n × 1 n\times 1 n×1的实向量 x \bf{x} x的梯度是一个 n × m n\times m n×m的矩阵。
∇ x f ( x ) = [ ∂ f 1 ∂ x 1 ∂ f 2 ∂ x 1 ⋯ ∂ f m ∂ x 1 ∂ f 1 ∂ x 2 ∂ f 2 ∂ x 2 ⋯ ∂ f m ∂ x 2 ⋮ ⋮ ⋱ ⋮ ∂ f 1 ∂ x n ∂ f 2 ∂ x n ⋯ ∂ f m ∂ x n ] \nabla_{\bf{x}}{\bf{f}}({\bf{x}})=\begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_2}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_1}\\ \frac{\partial f_1}{\partial x_2} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_2}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial f_1}{\partial x_n} & \frac{\partial f_2}{\partial x_n} & \cdots & \frac{\partial f_m}{\partial x_n}\\ \end{bmatrix} xf(x)=x1f1x2f1xnf1x1f2x2f2xnf2x1fmx2fmxnfm

均方误差的最优值

损失函数的梯度为
∂ L ( w ) ∂ w = 2 n X T ( X w − y ) \frac{\partial L({\bf{w}})}{{\partial\bf{w}}}=\frac{2}{n}{\bf{X}}^T({\bf{Xw-y}}) wL(w)=n2XT(Xwy)

由于 L ( w ) L({\bf{w}}) L(w)是凸函数,最优解由下列方程给出
X T ( X w − y ) = 0 {\bf{X}}^T({\bf{Xw-y}})=0 XT(Xwy)=0
解得
w ∗ = ( X T X ) − 1 X T y {\bf{w}}^*=({\bf{X}^TX})^{-1}{\bf{X}}^T{\bf{}y} w=(XTX)1XTy

梯度下降法

在大多数情况下,分析解并不都是存在的,或者计算出分析解的代价太大,因此我们需要将求解过程转向数值解。此时,我们采用梯度下降法求解,其更新公式为
w ( t + 1 ) = w ( t ) − r ⋅ ∂ L ( w ) ∂ w ∣ w = w ( t ) \left.{\bf{w}}^{(t+1)}={\bf{w}}^{(t)}-r\cdot\frac{\partial L({\bf{w}})}{\partial {\bf{w}}}\right|_{{\bf{w}}={\bf{w}}^{(t)}} w(t+1)=w(t)rwL(w)w=w(t)
其中, r r r被称为学习率,是人为指定的。当 r r r过大时,会出现发散的情况;当 r r r过小时,会出现收敛过慢的情况。

随机梯度下降

当训练数据过大时,梯度下降法计算过程慢,SGD则改为使用小批量的数据来计算梯度。

均方误差的最优值的推导

损失函数的公式为
L ( w ) = 1 n ∣ ∣ X w − y ∣ ∣ 2 L({\bf{w}})=\frac{1}{n}||{\bf{Xw}-y}||^2 L(w)=n1Xwy2
我们需要计算梯度
∇ L ( w ) = [ ∂ L ( w ) ∂ w 0   ∂ L ( w ) ∂ w 1   ⋯   ∂ L ( w ) ∂ w m ] T \nabla L({\bf{w}})=\left[\frac{\partial L({\bf{w}})}{\partial w_0}\ \frac{\partial L({\bf{w}})}{\partial w_1}\ \cdots\ \frac{\partial L({\bf{w}})}{\partial w_m}\right]^T L(w)=[w0L(w) w1L(w)  wmL(w)]T
L ( w ) L({\bf{w}}) L(w)展开得
L ( w ) = 1 n ∑ i = 1 n ( x ( i ) w − y ( i ) ) 2 = 1 n ∑ i = 1 n ( w 0 + w 1 x 1 ( i ) + ⋯ + w m x m ( i ) − y ( i ) ) 2 \begin{aligned} L({\bf{w}}) &=\frac{1}{n}\sum_{i=1}^n({\bf{x}}^{(i)}{\bf{w}}-y^{(i)})^2\\ &=\frac{1}{n}\sum_{i=1}^n(w_0+w_1x_1^{(i)}+\cdots+w_mx_m^{(i)}-y^{(i)})^2 \end{aligned} L(w)=n1i=1n(x(i)wy(i))2=n1i=1n(w0+w1x1(i)++wmxm(i)y(i))2
w {\bf{w}} w其中一个分量 w j w_j wj求导得
∂ L ( w ) w j = 1 n ∑ i = 1 n 2 ( x ( i ) w − y ( i ) ) x j ( i ) = 2 n [ x j ( 1 ) ( x ( 1 ) w − y ( 1 ) ) + x j ( 2 ) ( x ( 2 ) w − y ( 2 ) ) + ⋯ + x j ( n ) ( x ( n ) w − y ( n ) ) ] = 2 n [ x j ( 1 )   x j ( 2 )   ⋯ x j ( n ) ] [ x ( 1 ) w − y ( 1 ) x ( 2 ) w − y ( 2 ) ⋮ x ( n ) w − y ( n ) ] = 2 n X [ : , j ] T ( X w − y ) \begin{aligned} \frac{\partial L({\bf{w}})}{w_j} &=\frac{1}{n}\sum_{i=1}^n2({\bf{x}}^{(i)}{\bf{w}}-{{y}}^{(i)})x_j^{(i)}\\ &=\frac{2}{n}[x_j^{(1)}({\bf{x}}^{(1)}{\bf{w}}-{{y}}^{(1)})+x_j^{(2)}({\bf{x}}^{(2)}{\bf{w}}-{y}^{(2)})+\cdots+x_j^{(n)}({\bf{x}}^{(n)}{\bf{w}}-{y}^{(n)})]\\ &=\frac{2}{n}[x_j^{(1)}\ x_j^{(2)}\ \cdots x_j^{(n)}] \begin{bmatrix} {\bf{x}}^{(1)}{\bf{w}}-{y^{(1)}}\\ {\bf{x}}^{(2)}{\bf{w}}-{y^{(2)}}\\ \vdots\\ {\bf{x}}^{(n)}{\bf{w}}-{y^{(n)}} \end{bmatrix}\\ &=\frac{2}{n}{\bf{X}}_{[:,j]}^T({\bf{Xw-y}}) \end{aligned} wjL(w)=n1i=1n2(x(i)wy(i))xj(i)=n2[xj(1)(x(1)wy(1))+xj(2)(x(2)wy(2))++xj(n)(x(n)wy(n))]=n2[xj(1) xj(2) xj(n)]x(1)wy(1)x(2)wy(2)x(n)wy(n)=n2X[:,j]T(Xwy)
其中, X [ : , j ] {\bf{X}}_{[:,j]} X[:,j]表示矩阵 X {\bf{X}} X的第 j j j列。将上式代入 ∇ f ( w ) \nabla f(\bf{w}) f(w)可得
∇ f ( x ) = [ 2 n X [ : , 0 ] T ( X w − y )   2 n X [ : , 1 ] T ( X w − y )   ⋯   2 n X [ : , m ] T ( X w − y ) ] T = 2 n [ X [ : , 0 ] T X [ : , 1 ] T ⋮ X [ : , m ] T ] ( X w − y ) = 2 n X T ( X w − y ) \begin{aligned} \nabla f({\bf{x}}) &=\left[\frac{2}{n}{\bf{X}}_{[:,0]}^T({\bf{Xw-y}})\ \frac{2}{n}{\bf{X}}_{[:,1]}^T({\bf{Xw-y}})\ \cdots\ \frac{2}{n}{\bf{X}}_{[:,m]}^T({\bf{Xw-y}})\right]^T\\ &=\frac{2}{n} \begin{bmatrix}{\bf{X}}_{[:,0]}^T\\ {\bf{X}}_{[:,1]}^T\\ \vdots\\ {\bf{X}}_{[:,m]}^T \end{bmatrix}({\bf{Xw-y}})\\ &=\frac{2}{n}{\bf{X}}^T({\bf{Xw-y}}) \end{aligned} f(x)=[n2X[:,0]T(Xwy) n2X[:,1]T(Xwy)  n2X[:,m]T(Xwy)]T=n2X[:,0]TX[:,1]TX[:,m]T(Xwy)=n2XT(Xwy)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值