为了账号安全,请及时绑定邮箱和手机立即绑定

中科院算法研究员带你学算法(1)——线性回归(1)

线性回归(1)

写在最前面

  这几年算法岗位的求职供远大于求,可谓是神仙打架,对于数学基础的考察越来越全面和深入,笔者在独角兽和体制内都工作过,参加过近百场面试,也辅导过数十位同学找到心仪的算法工作,想通过这一系列的教程体现机器学习算法中的数学原理,基本可以涵盖所有算法面试中的难题难点,提升面试时的成功率。
  那我们就首先从线性回归开始我们的学习。

Why We Use It

  线性模型是一种在pre computer age和当前都很有效的模型,形式简单又能保证一定的表达能力,同时提供了可解释性,是函数的一阶泰勒展开。从某种意义上说,简单的形式也保证了较好的抗过拟合能力。当输出连续的预测值时,此种线性模型被称为线性回归模型。

  除了上述优点,对线性回归模型输入进行transform,可以将模型的capacity大大扩展。

The Expression

  对于一个函数fff,若f(∑iαixi)=∑iαif(xi)f(\sum_i \alpha_ix_i) = \sum_i\alpha_if(x_i)f(iαixi)=iαif(xi),则称此函数是一个线性函数,进一步可据此得到其表达形式

记输入为
XT={X1,X2,...Xp} X^T = \{X_1, X_2, ...X_p\} XT={X1,X2,...Xp}
输出为Y∈RNY \in \bold{R}^NYRN,则有

Y=∑k=1Pβk×Xk+β0 Y=\sum_{k=1}^{P}\beta_k\times X_k + \beta_0 Y=k=1Pβk×Xk+β0

其中β0\beta_0β0又被称为interception,截距项,可以通过的简单扩展,将原始的输入数据改写为X′=(1;X)X'=(1;X)X=(1;X),则原式改写为
Y=∑k=0Pβk×Xk Y=\sum_{k=0}^{P}\beta_k\times X_k Y=k=0Pβk×Xk
这一步是一个简单的数学操作,进行形式上的统一。

  为了行文方便,下文中都是用XXX代替X′X'X在很多场景下,得到的输入XXX都是包含了截距项的

  给定一个数据集XXX,使用其对模型的参数进行估计,每一行是一个单独的sample。若记每一行的sample为XiX_iXi,记第iii个样本的第jjj个特征取值为Xi,jX_{i,j}Xi,j,则XXX可表示为X∈RN×(P+1)X \in \bold{R}^{N\times(P+1)}XRN×(P+1)

X=[X1,0X1,1X1,2⋯X1,pX2,0X2,1X2,2⋯X2,p⋮⋮⋮⋱⋮XN,0XN,1XN,2⋯XN,p] X = \left[ \begin{matrix} X_{1,0}&X_{1,1}&X_{1,2}&\cdots &X_{1,p}\\ X_{2,0}&X_{2,1}&X_{2,2}&\cdots &X_{2,p}\\ \vdots&\vdots&\vdots&\ddots&\vdots\\ X_{N,0}&X_{N,1}&X_{N,2}&\cdots &X_{N,p} \end{matrix} \right] X=X1,0X2,0XN,0X1,1X2,1XN,1X1,2X2,2XN,2X1,pX2,pXN,p


Yi=⟨Xi,β⟩=∑j=0PβjXij Y_i= \langle X_i, \beta\rangle=\sum_{j=0}^{P} \beta_jX_{ij} Yi=Xi,β=j=0PβjXij


Y^=(Y1,Y2...YN)T=(⟨X1,β⟩,⟨X2,β⟩,...⟨XN,β⟩)T=[∑jβjX1j∑jβjX2j⋮∑jβjXNj] \begin{aligned} \hat{Y} &= (Y_1, Y_2...Y_N)^T \\ &= (\langle X_1, \beta\rangle, \langle X_2, \beta\rangle,...\langle X_N, \beta\rangle)^T \\ &= \left[ \begin{matrix} \sum_j \beta_jX_{1j}\\ \sum_j \beta_jX_{2j}\\ \vdots\\ \sum_j \beta_jX_{Nj} \end{matrix} \right] \end{aligned} Y^=(Y1,Y2...YN)T=(X1,β,X2,β,...XN,β)T=jβjX1jjβjX2jjβjXNj

即预测值
Y^=Xβ∈RN \hat{Y} =X\beta \in \bold{R}^{N} Y^=XβRN

  所有data driven的任务都对数据有要求,此时假设数据集中的sample都是独立同分布的(i.i.d),这是为了保证采样的数据集来自同一个分布且互不干扰。

  为了衡量其与真实值的差异大小,最常见的指标会选择RSS(residual sum of squares),首先计算各个分量的差异,(Yi−Y^i)2(Y_i - \hat{Y}_i)^2(YiY^i)2,将每个维度上的误差进行累加,使用此指标作为目标函数的优化算法被称为最小二乘法。

  此外,从方程求解的角度也可以对RSS进行理解和说明。

  若存在mmm个方程,即对于∀i∈[1,m],∑jaijxj=bi\forall{i} \in [1,m], \sum_j a_{ij}x_j = b_ii[1,m],jaijxj=bi。从几何的角度来看,这也是定义了mmm个超平面,同时满足约束的点即为交点的集合。

当矩阵
A=[a11,a12,a13...a1na21,a22,a23...a2n⋮am1,am2,am3...amn] A = \left[ \begin{matrix} a_{11}, a_{12}, a_{13}...a_{1n} \\ a_{21}, a_{22}, a_{23}...a_{2n} \\ \vdots \\ a_{m1}, a_{m2}, a_{m3}...a_{mn} \end{matrix} \right] A=a11,a12,a13...a1na21,a22,a23...a2nam1,am2,am3...amn

则上述约束可写为
Ax=b Ax = b Ax=b

  当AAA满足m=nm = nm=n且满秩时,此矩阵可逆,则交点为x=A−1bx = A^{-1}bx=A1b

  若m>nm > nm>n,则这个情况被称为过约束,很可能不存在交点,则将求取的目标由交点改为到每个超平面的距离之和最小的点x′x'x,到任意超平面的距离为
图片描述
  当超平面参数单位化,并使用平方误差代替绝对值之后,得到的优化目标等价于RSS

  进一步考察其优化过程。将其改写为向量形式

obj=∑i=1N⟨Xiβ−Yi⟩=(Xβ−y)T(Xβ−y) obj = \sum_{i=1}^{N} \langle X_i\beta - Y_i \rangle = (X\beta - y)^T(X\beta - y) obj=i=1NXiβYi=(Xβy)T(Xβy)

  这是一个关于β\betaβ的二次函数,所以这是一个单调不减函数。对其进行一阶和二阶的求导,需要注意的是,使用链式求导法则时,每展开一层,进行一次左乘。

图片描述

  此时二阶导大于等于0,和上述结论相匹配。

  当XXX列满秩时,XTXX^TXXTX是正定的。简单证明如下

  XXX列满秩,则Xβ=0X\beta=0Xβ=0无非零值,即记将XXX列分块,记为
X=[X1C X2C X3C... XnC] X = [X_1^C \ X_2^C\ X_3^C ...\ X_n^C] X=[X1C X2C X3C... XnC]
  其中,XiCX_i^CXiC代表XXX的第iii个列向量。

  又β=[β1,β2...βp]T\beta = [\beta_1, \beta_2...\beta_p]^Tβ=[β1,β2...βp]T,有
Xβ=∑i=1pXiC×βi X \beta = \sum_{i=1}^p X_i^C \times \beta_i Xβ=i=1pXiC×βi
  即此时的任何预测向量XβX \betaXβ都是XXX列向量XCX^CXC的线性组合。

  XXX列满秩,即XCX^CXC之间线性无关,故不存在一个非零的β\betaβ,使得Xβ=0X\beta=0Xβ=0
  所以βTXTXβ=(Xβ)TXβ=0\beta^TX^TX\beta=(X \beta)^TX \beta = 0βTXTXβ=(Xβ)TXβ=0当且仅当β=0\beta = 0β=0才成立,所以XTXX^TXXTX正定,进一步XTXX^TXXTX可逆。

  令一阶导数为0,有
β=(XTX)−1XTY \beta = (X^TX)^{-1}X^TY β=(XTX)1XTY

  则预测值Y^=X(XTX)−1XTY\hat{Y} = X(X^TX)^{-1}X^TYY^=X(XTX)1XTY,其中X(XTX)−1XTX(X^TX)^{-1}X^TX(XTX)1XT被称为hat matrix,因为这个矩阵给Y戴上了一个小帽子~

  由于使用的算法不同会导致得到的参数估计变化,所以对于β\betaβ进行进一步明确,运用上标说明其所采用的算法,记为βls\beta^{ls}βls

XXX的每一行是一个sample,则可将上式写成sample wise的形式。

XTX^TXT列分块,将XXXYYY行分块,则有
β=(XTX)−1XTY=((X1,X2...XN)(X1TX2T⋮XNT))−1((X1,X2...XN)(Y1Y2⋮YN))=(∑i=1NXiXiT)−1(∑i=1NXiYi)=(NE(XiXiT))−1(NE(XiYi))=(E(XiXiT))−1(E(XiYi)) \begin{aligned} \beta &= (X^TX)^{-1}X^TY \\ &= \bigg(\big(X_1, X_2...X_N\big) \left( \begin{matrix} X_1^T \\ X_2^T \\ \vdots \\ X_N^T \end{matrix} \right)\bigg)^{-1} \bigg(\big(X_1, X_2...X_N\big) \left( \begin{matrix} Y_1 \\ Y_2 \\ \vdots \\ Y_N \end{matrix} \right)\bigg) \\ &= \bigg(\sum_{i=1}^N X_iX_i^T\bigg)^{-1} \bigg(\sum_{i=1}^N X_iY_i\bigg)\\ &= \bigg(N\bold{E}(X_iX_i^T)\bigg)^{-1}\bigg(N\bold{E}(X_iY_i)\bigg) \\ & = \bigg(\bold{E}(X_iX_i^T)\bigg)^{-1}\bigg(\bold{E}(X_iY_i)\bigg) \end{aligned} β=(XTX)1XTY=((X1,X2...XN)X1TX2TXNT)1((X1,X2...XN)Y1Y2YN)=(i=1NXiXiT)1(i=1NXiYi)=(NE(XiXiT))1(NE(XiYi))=(E(XiXiT))1(E(XiYi))

对这样一个最优解,有另一种更有意思的理解角度。

图片描述
上述的一阶导数为0,此时是一个0向量。

将导数值按照行进行分解得到如下形式

[⟨X1C,Xβ−y⟩⟨X2C,Xβ−y⟩)⋮⟨XNC,Xβ−y⟩)]=[00⋮0] \left[ \begin{matrix} \langle X_1^C, X\beta - y\rangle\\ \langle X_2^C, X\beta - y\rangle)\\ \vdots\\ \langle X_N^C, X\beta - y\rangle) \end{matrix} \right] =\left[ \begin{matrix} 0\\ 0\\ \vdots\\ 0 \end{matrix} \right] X1C,XβyX2C,Xβy)XNC,Xβy)=000

也就意味着XTX^TXT的每一个行向量,即XXX的每一个列向量点乘residual都为0,进一步有residual垂直于XXX的列空间,所以此时的最佳预测值Y^\hat{Y}Y^,实际是真实值YYYXXX列空间的投影。

列向量与预测值

  和上文结论相契合,预测值Y^\hat{Y}Y^实际是XXX列向量的线性组合,自然会落在XXX列向量,此处为X1X_1X1X2X_2X2所张成的空间里。此时,真实值YYY在其中的投影可以保证差值Y−Y^Y-\hat{Y}YY^最小。

The Formations of Linear Regression

  上文中给出了线性回归的具体形式,但有一个点没有进行讨论,什么是输入?

  按照上文的说法,对于一个单独的样本,它的输入是一个向量,记为XT={X1,X2,...Xp}X^T = \{X_1, X_2, ...X_p\}XT={X1,X2,...Xp},这里的每一个feature代表的是什么,亦或者说,线性回归中的线性,指的是针对谁的线性关系

  一般来说,在获得输入和将数据feed给模型之前,会有一个特征工程(feature engineering) 存在,将处理之后的输入特征feed到模型进行拟合工作,所以实际上,使用的所谓线性模型,是在特征工程之后得到的结果中保持了线性关系,而线性关系简单从形式上来说,就是加权求和

所以数值输入元素的

  • 交叉项
  • 指数项
  • 数学操作的结果

类别输入元素的

  • one-hot编码
    也可以作为线性回归的输入项。

亦或者说,这种线性关系保持在参数βs\beta sβs之间。
这就意味着

Y(X∣β)=β1exp⁡(x1)+β2sin⁡(x2)+β3x1x33 Y(X|\beta) = \beta_1 \exp(x_1)+\beta_2 \sin(x_2)+\beta_3x_1x_3^3 Y(Xβ)=β1exp(x1)+β2sin(x2)+β3x1x33

也是一个线性回归模型。

每一种transform都被称作一种basis function

若记特征工程之后得到的feature全体为HHH,则线性回归模型从XXX的角度可写为如下形式:
Y=∑hj∈Hwjhj(X) Y = \sum_{h_j \in H} w_jh_j(X) Y=hjHwjhj(X)

可以看出,进行线性组合的基底由原先的XXX列向量变为了所有transform的输出,这是一种基底的扩展,使用basis expansion之间的线性代替XXX列向量之间的线性,故上述特征工程也被称为basis expansion in X

ESL中对于这个操作有着如下的描述

The core idea … is to augment/replace the vector of inputs X with additional variables, which are transformations of X, and then use linear models in this new space of derived input features.

在完成了basis expansion之后,剩余操作和origin linear model没有差异。


∃i,hi(X)=X1,X2...Xp\exists i, h_i(X)=X_1, X_2...X_pi,hi(X)=X1,X2...Xp
则此时包含了原始的线性回归形式。


∃i,hi(X)=X12,X22,...X1X2,...X1Xp,...Xp2\exists i, h_i(X)=X_1^2, X_2^2,...X_1X_2,...X_1X_p,...X_p^2i,hi(X)=X12,X22,...X1X2,...X1Xp,...Xp2
则对模型进行了degree为2的多项式处理。

因此,通过扩充basis expansion的输出HHH,可以增加模型的capacity,加大获得最佳线性模型的概率。但是从模型复杂度的角度来看,需要对模型进行一定的限制。

可以通过

  • 先验的特征预选
  • subset selection
  • wjw_jwj进行正则控制参与拟合的特征数

进行复杂度的控制。

  通过上述操作,极大地扩充了模型的capacity,但是这种操作是global的,所以对于整个domain都会进行相同的处理。对于一些domain specific或是分段的函数形式,这种处理方式是不合理的,故进一步提出piecewise polynomial的概念,即将整个domain进行分块,在每一个sub space都分别拟合一个local的polynomial的函数。

Y=∑ifi(x)I(x∈subspacei)Y = \sum_i f_i(x)I(x \in subspace_i)Y=ifi(x)I(xsubspacei)

  通过限制函数取值和指定阶导数在整个区间连续,可以对函数的取值进行一定的限制。

  以一个order-K的piecewise polynomial(即xxx的幂次最大为K−1K-1K1,因为存在截距项幂次为0)模型为例,若其从0阶到K−2K-2K2阶的导数都连续,则此piecewise polynomial也被称作order-Kspline

记以M1,M2,...MnM_1,M_2,...M_nM1,M2,...Mn分割为n+1n+1n+1个子区间,则对此模型拟合可依赖如下basis function:

hj(X)=X(j−1),j=1...Kh_j(X)=X^{(j-1)}, j = 1...Khj(X)=X(j1),j=1...K
hK+i(X)(X−Mi)+K−1,i=1,2...nh_{K+i}(X)(X - M_i)_+^{K-1}, i = 1,2...nhK+i(X)(XMi)+K1,i=1,2...n

Multiple Outputs

  上述的所有的论述都是针对单一输出的回归模型,将模型所对应的空间进行扩展,当输出Y∈RkY \in \bold{R}^kYRk时进行如下讨论

  对于包含了NNN个已进行中心化处理的样本的训练集,此时输入按照行进行组织可得到同样尺度的X∈RN×pX \in \bold{R}^{N \times p}XRN×p,但是输出Y=[Y1,Y2...Yk]Y=[Y_1, Y_2...Y_k]Y=[Y1,Y2...Yk]的形状变化为RN×k\bold{R}^{N\times k}RN×k,参数尺度变化为B∈Rp×kB \in \bold{R}^{p \times k}BRp×k

  依然使用mse进行优化,需要对每一个输出维度的损失进行加和,则目标函数可写为

obj=tr[(XB−Y)(XB−Y)T] obj = tr[(XB - Y)(XB - Y)^T] obj=tr[(XBY)(XBY)T]

引入几个重要的迹相关的求导性质

图片描述

故,结合上式,将M=I,X=B,A=X,C=XTM=I,X=B,A=X,C=X^TM=I,X=B,A=X,C=XT代入,有
图片描述

令导数为0有

图片描述

故此时B=(XTX)−1XTYB = (X^TX)^{-1}X^TYB=(XTX)1XTY,是单输出回归模型的拓展,BBB的每一个列向量互不干扰,可独立优化,记B=[B1,B2...Bk]B = [B_1, B_2...B_k]B=[B1,B2...Bk]。有

Bi=(XTX)−1XTYi B_i = (X^TX)^{-1}X^TY_i Bi=(XTX)1XTYi

保持了和单输出类似的形式。

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消