线性回归(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}^NY∈RN,则有
Y=∑k=1Pβk×Xk+β0 Y=\sum_{k=1}^{P}\beta_k\times X_k + \beta_0 Y=k=1∑Pβ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=0∑Pβ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)}X∈RN×(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,0⋮XN,0X1,1X2,1⋮XN,1X1,2X2,2⋮XN,2⋯⋯⋱⋯X1,pX2,p⋮XN,p⎦⎥⎥⎤
且
Yi=⟨Xi,β⟩=∑j=0PβjXij
Y_i= \langle X_i, \beta\rangle=\sum_{j=0}^{P} \beta_jX_{ij}
Yi=⟨Xi,β⟩=j=0∑Pβ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βjX1j∑jβjX2j⋮∑jβ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(Yi−Y^i)2,将每个维度上的误差进行累加,使用此指标作为目标函数的优化算法被称为最小二乘法。
此外,从方程求解的角度也可以对RSS
进行理解和说明。
若存在mmm个方程,即对于∀i∈[1,m],∑jaijxj=bi\forall{i} \in [1,m], \sum_j a_{ij}x_j = b_i∀i∈[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...a2n⋮am1,am2,am3...amn⎦⎥⎥⎤
则上述约束可写为
Ax=b
Ax = b
Ax=b
当AAA满足m=nm = nm=n且满秩时,此矩阵可逆,则交点为x=A−1bx = A^{-1}bx=A−1b。
若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=1∑N⟨Xiβ−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=1∑pXiC×β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列分块,将XXX和YYY行分块,则有
β=(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)⎝⎜⎜⎛X1TX2T⋮XNT⎠⎟⎟⎞)−1((X1,X2...XN)⎝⎜⎜⎛Y1Y2⋮YN⎠⎟⎟⎞)=(i=1∑NXiXiT)−1(i=1∑NXiYi)=(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β−y⟩⟨X2C,Xβ−y⟩)⋮⟨XNC,Xβ−y⟩)⎦⎥⎥⎤=⎣⎢⎢⎡00⋮0⎦⎥⎥⎤
也就意味着XTX^TXT的每一个行向量,即XXX的每一个列向量点乘residual都为0,进一步有residual垂直于XXX的列空间,所以此时的最佳预测值Y^\hat{Y}Y^,实际是真实值YYY在XXX列空间的投影。
和上文结论相契合,预测值Y^\hat{Y}Y^实际是XXX列向量的线性组合,自然会落在XXX列向量,此处为X1X_1X1和X2X_2X2所张成的空间里。此时,真实值YYY在其中的投影可以保证差值Y−Y^Y-\hat{Y}Y−Y^最小。
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=hj∈H∑wjhj(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_p∃i,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^2∃i,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=i∑fi(x)I(x∈subspacei)
通过限制函数取值和指定阶导数在整个区间连续,可以对函数的取值进行一定的限制。
以一个order-K
的piecewise polynomial(即xxx的幂次最大为K−1K-1K−1,因为存在截距项幂次为0)模型为例,若其从0阶到K−2K-2K−2阶的导数都连续,则此piecewise polynomial也被称作order-K
的spline
。
记以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(j−1),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)(X−Mi)+K−1,i=1,2...n
Multiple Outputs
上述的所有的论述都是针对单一输出的回归模型,将模型所对应的空间进行扩展,当输出Y∈RkY \in \bold{R}^kY∈Rk时进行如下讨论
对于包含了NNN个已进行中心化处理的样本的训练集,此时输入按照行进行组织可得到同样尺度的X∈RN×pX \in \bold{R}^{N \times p}X∈RN×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}B∈Rp×k。
依然使用mse进行优化,需要对每一个输出维度的损失进行加和,则目标函数可写为
obj=tr[(XB−Y)(XB−Y)T] obj = tr[(XB - Y)(XB - Y)^T] obj=tr[(XB−Y)(XB−Y)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
保持了和单输出类似的形式。
热门评论
???基础小白表示真的看不懂啊