线性回归原理讲解

同内容讲解视频,如果不想看文字就去看视频吧~

线性回归,线性回归,首先我们要搞懂这四个字里两个词的意思

何为线性?何为回归

线性

线性,包括可加性和齐次性

可加性,也称叠加性。函数 f f f若满足下式
f ( x + y ) = f ( x ) + f ( y ) f(x+y) = f(x) + f(y) f(x+y)=f(x)+f(y)
则称函数 f f f具有可加性

齐次性,也称均匀性。若函数 f f f若满足下式
f ( a x ) = a f ( x ) f(ax)=af(x) f(ax)=af(x)
其中,a为与x无关的常数。则称函数 f f f具有齐次性

我们其实也可以用一个式子来描述这可加性与齐次性,如下
f ( a x + b y ) = a f ( x ) + b f ( y ) f(ax+by) = af(x)+bf(y) f(ax+by)=af(x)+bf(y)
当函数 f f f同时具有可加性与齐次性时,我们则称函数 f f f线性函数

回归

回归是确定多个变量间相互依赖的定量关系

在机器学习中,回归往往指预测的输出为连续值,而线性回归也确实是解决此类任务的

分类任务则是预测的输出为离散型

损失函数

解决回归任务,实际就是找到一条线/超平面来拟合这些样本点,使他们之间的误差尽可能的小。而不同的线/超平面(其中不同的参数值形成的)在同一个数据集下对应着不同的误差,我们则需要找到让误差最小的线/超平面。

现以形如y=kx+b的一元线性函数为例

线性回归原理讲解_第1张图片

淡蓝色为样本点,深蓝色和红色的线为生成的两条线。那你们觉得哪条线跟样本点更加符合整体的趋势呢?也就是哪条线更拟合呢?

你:这想都不用想的好吧!那肯定是蓝色那条线效果好啊!

但它为什么好呢?我们要定量得去描述它。此时则需要引入损失函数(又称误差函数)来衡量误差

回归任务中常用的损失函数有:

  1. 均方误差MSE:
    1 m ∑ i = 1 m ( y i − y ^ i ) 2 \frac{1}{m}\sum \limits _{i=1} ^m(y_i-\hat y_i)^2 m1i=1m(yiy^i)2

  2. 均方根误差RMSE:
    1 m ∑ i = 1 m ( y i − y ^ i ) 2 \sqrt{\frac{1}{m}\sum \limits _{i=1} ^m(y_i-\hat y_i)^2} m1i=1m(yiy^i)2

  3. 平均绝对误差MAE:
    1 m ∑ i = 1 m ∣ ( y i − y ^ i ) ∣ \frac{1}{m}\sum \limits _{i=1} ^m|(y_i-\hat y_i)| m1i=1m(yiy^i)

  4. R-squared:

R 2 ( y , y ^ ) = 1 − ∑ i = 0 n ( y i − y ^ i ) 2 ∑ i = 0 n ( y i − y ˉ ) 2 R^2(y, \hat y)= 1 - \frac{\sum \limits _{i=0} ^n(y_i-\hat y_i)^2}{\sum \limits _{i=0} ^n(y_i-\bar y)^2} R2(y,y^)=1i=0n(yiyˉ)2i=0n(yiy^i)2

可以这么理解:将TSS理解为全部按平均值预测,RSS理解为按模型预测,这就相当于去比较你模型预测和全部按平均值预测的比例,这个比例越小,则模型越精确。当然该指标存在负数的情况,即模型预测还不如全部按平均值预测。越接近1,模型拟合得就越好

最小化损失函数

再次强调:回归任务是拟合样本点,使误差尽可能的小

最小二乘法(一元线性函数)

我们用一元线性函数为例讲解线性回归,其次再引入多元线性回归

此节以一元线性函数y=kx+b为例,采用均方误差MSE作为损失函数,那么损失函数就是关于变量k,b的函数
L ( k , b ) = 1 m ∑ i = 1 m ( ( k x i + b ) − y i ) 2 L(k, b) = \frac{1}{m}\sum\limits_{i=1} ^m((kx_i+b)-y_i)^2 L(k,b)=m1i=1m((kxi+b)yi)2
其中,m为样本个数。此时任务为最小化L(k, b)函数

相信大家在高中或是大学都做过求函数最小值的题,当时是怎么做的呢?求导!让导数=0,求出此时的x,此时的x让函数取得最小值点。但这里是两个变量,那么则求偏导让偏导=0,求出此时的各个参数,此时的各个参数让损失函数取得最小值,也就是误差最小,也就是拟合效果最好!

对b求偏导

此时,我们对L函数求b的偏导,使用链式求导法则
∂ L ∂ b = ∑ i = 1 m 2 ( k x i + b − y i ) = 0 ⇒ k ∑ i = 1 m x i + ∑ i = 1 m b − ∑ i = 1 m y i = 0 ⇒ k m x ˉ + m b − m y ˉ = 0 ① ⇒ b = y ˉ − k x ˉ \frac{\partial L}{\partial b} = \sum \limits _{i=1} ^m 2(kx_i+b-y_i) = 0 \\ \Rightarrow k\sum \limits _{i=1} ^m x_i+\sum \limits _{i=1} ^m b-\sum \limits _{i=1} ^m y_i = 0 \\ \Rightarrow km\bar x + mb - m\bar y = 0① \\ \Rightarrow b = \bar y - k\bar x bL=i=1m2(kxi+byi)=0ki=1mxi+i=1mbi=1myi=0kmxˉ+mbmyˉ=0b=yˉkxˉ
第一行到第二行:k跟i无关,乘积项可直接提到连加号外面

第二行到第三行:联想一下求均值的公式 x ˉ = 1 m ∑ i = 1 m x i \bar x = \frac1m\sum \limits_{i=1} ^m x_i xˉ=m1i=1mxi,实际上把m乘过去就是上面的替换

同时,我们记第三行的式子为①,后续推导有用

对k求偏导

接着,我们对L函数求k的偏导,稍微复杂一些
∂ L ∂ k = ∑ i = 1 m x i ( k x i + b − y i ) = 0 ⇒ k ∑ i = 1 m x i 2 + b ∑ i = 1 m x i − ∑ i = 1 m x i y i = 0 ⇒ k ∑ i = 1 m x i 2 + m b x ˉ − ∑ i = 1 m x i y i = 0 ② \frac{\partial L}{\partial k} = \sum \limits _{i=1} ^m x_i(kx_i+b-y_i) = 0 \\ \Rightarrow k\sum \limits _{i=1} ^m x_i^2 + b \sum \limits _{i=1} ^mx_i - \sum \limits _{i=1} ^mx_iy_i = 0 \\ \Rightarrow k\sum \limits _{i=1} ^mx_i^2 + mb \bar x - \sum \limits _{i=1} ^m x_iy_i = 0 ② \\ kL=i=1mxi(kxi+byi)=0ki=1mxi2+bi=1mxii=1mxiyi=0ki=1mxi2+mbxˉi=1mxiyi=0
记第三行得式子为②

接下来式子①* x ˉ \bar x xˉ得式子③
k m x ˉ 2 + m b x ˉ − m y ˉ x ˉ = 0 ③ km\bar x^2 + mb\bar x - m\bar y \bar x = 0 ③ kmxˉ2+mbxˉmyˉxˉ=0
接着,②-③得
k ( ∑ i = 1 m x i 2 − m x ˉ 2 ) = ∑ i = 1 m x i y i − m y ˉ x ˉ ⇒ k = ∑ i = 1 m x i y i − m x ˉ y ˉ ∑ i = 1 m x i 2 − m x ˉ 2 k (\sum \limits _{i=1} ^mx_i^2 - m\bar x^2) = \sum \limits _{i=1} ^m x_iy_i - m\bar y \bar x \\ \Rightarrow k = \frac{\sum \limits _{i=1} ^m x_iy_i - m\bar x \bar y}{\sum \limits _{i=1} ^mx_i^2 - m\bar x^2} k(i=1mxi2mxˉ2)=i=1mxiyimyˉxˉk=i=1mxi2mxˉ2i=1mxiyimxˉyˉ
我们现在就求出了使得函数值最小的k, b参数

最小二乘法(多元线性函数)

定义损失函数

如今,我们将一元变量推广到多原变量,设多元函数式为
f ( x 1 , x 2 , . . . , x n ) = w 1 x 1 + w 2 x 2 + . . . + w n x n + b f(x_1, x_2, ..., x_n) = w_1x_1 + w_2x_2 + ... +w_nx_n + b f(x1,x2,...,xn)=w1x1+w2x2+...+wnxn+b
这个式子太长了,我们使用线性代数的向量概念对该式进行整理,为方便,记 w 0 = b w_0=b w0=b(可以把上函数式的b视为b*1,下面会讲这样做的原因)

此时稍微提一下,在线性代数中,见到一个向量,默认均为列向量,上标为T(转置)的才为行向量(至于为什么要这样规定,是因为竖着写很占版面…你知道它本身是竖着写的就好了)

那么此时,我们构造一个权重向量 w w w和特征向量 x x x
w = ( w 0 , w 1 , w 2 , . . . , w n ) x = ( 1 , x 1 , x 2 , . . . , x n ) w = (w_0, w_1, w_2, ..., w_n) \\ x = (1, x_1, x_2, ..., x_n) w=(w0,w1,w2,...,wn)x=(1,x1,x2,...,xn)
那么此时,我们上述的多元函数式则可以写成 f ( x ) = w T x f(x) = w^Tx f(x)=wTx f ( x ) = x T w f(x) = x^Tw f(x)=xTw,是完全等价的

此时,我们可以损失函数写成如下形式
L ( w ) = ∑ i = 1 m ( y i − w T x ( i ) ) 2 L(w) = \sum \limits _{i=1} ^m(y_i-w^Tx^{(i)})^2 L(w)=i=1m(yiwTx(i))2
其中, y i y_i yi为第i个真实值, x ( i ) x^{(i)} x(i)为第i个样本的特征向量

注:真实值,标签值,样本值这三个词意思是相同的,后续阐述上可能会混用

进一步化简损失函数

此时,我们觉得还是觉得式子不够简洁,这个连加符号也太影响观感了!

于是,此时可以继续利用线性代数,把连加号去掉,提升观感,同时也方便后续推导

为了化简,我们需要定义两个东西

①标签向量

将m个样本标签值堆叠成一个标签向量 y y y(再提一遍没有T的是列向量)
y = ( y 1 , y 2 , . . . , y m ) y = (y_1, y_2, ..., y_m) y=(y1,y2,...,ym)
②样本矩阵X

定义样本矩阵X,形状为(m, n+1),m个样本,n+1个特征(其中,第1个特征为1)
( 1 x 1 ( 1 ) x 2 ( 1 ) ⋯ x n ( 1 ) ⋮ ⋮ ⋮ ⋮ ⋮ 1 x 1 ( m ) x 2 ( m ) ⋯ x n ( m ) ) \left( \begin{array}{l} 1 & x_1^{(1)} & x_2^{(1)} & \cdots & x_n^{(1)} \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ 1 & x_1^{(m)} & x_2^{(m)} & \cdots & x_n^{(m)} \end{array} \right) 11x1(1)x1(m)x2(1)x2(m)xn(1)xn(m)
这里每一行即是一个样本,每一列即是某一个特征

顺便解释一下上下标:上标(i)代表是第i个样本,下标j代表第j个特征(也可以理解成第j个维度)

那么此时,样本矩阵X乘上权重向量w可得预测值向量 y ^ \hat y y^,如图

线性回归原理讲解_第2张图片

我们还需要借助l2范数进行化简,此处简单介绍

l2范数

l2范数:向量各元素的平方和的平方根,即 ∥ x ∥ 2 = ∑ i = 1 n x i 2 \|x\|_2 = \sqrt{\sum\limits_{i=1}^n x_i^2} x2=i=1nxi2

|| ||是范数符号,下标2表示其为2范数。

l2范数有以下公式成立
x T x = ∣ ∣ x ∣ ∣ 2 2 = ∑ i = 1 n x i 2 x^Tx=||x||^2_2=\sum\limits_{i=1}^n x_i^2 xTx=x22=i=1nxi2

再再再化简损失函数

损失函数可写成如下形式
L ( w ) = ∥ X w − y ∥ 2 L(w) = \|Xw-y\|^2 L(w)=Xwy2
(如果不懂的话建议多看几遍)

注意矩阵和向量的大小,X:(m, n+1),w:(n+1, 1),y:(m, 1),开始化简
L ( w ) = ∥ X w − y ∥ 2 = ( X w − y ) T ( X w − y ) = ( w T X T − y T ) ( X w − y ) = w T X T X w − w T X T y − y T X w + y T y = w T X T X w − 2 w T X T y + y T y \begin{aligned} L(w) &= \|Xw-y\|^2 \\ &= (Xw-y)^T(Xw-y) \\ &=(w^TX^T -y^T)(Xw-y) \\ &=w^TX^TXw - w^TX^Ty-y^TXw+y^Ty \\ &=w^TX^TXw - 2w^TX^Ty+y^Ty \end{aligned} L(w)=Xwy2=(Xwy)T(Xwy)=(wTXTyT)(Xwy)=wTXTXwwTXTyyTXw+yTy=wTXTXw2wTXTy+yTy
第一行到第二行:利用公式 x T x = ∣ ∣ x ∣ ∣ 2 2 x^Tx=||x||^2_2 xTx=x22

第二行到第三行:利用转置的两个运算公式 ( A + B ) T = A T + B T (A+B)^T=A^T+B^T (A+B)T=AT+BT ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT

第三行到第四行:矩阵满足分配律

第四行到第五行:为什么 w T X T y w^TX^Ty wTXTy y T X w y^TXw yTXw可以合并呢?这里就要回归到他们的大小上了

w T w^T wT:(1, n+1), X T X^T XT:(n+1, m), y y y:(m, 1),他们最终相乘的大小是(1, 1),(1, 1)实际上是一个数

y T y^T yT:(1, m), X:(m, n+1),w:(n+1, 1),最终大小也是(1, 1),也是一个数

w T X T y w^TX^Ty wTXTy = ( y T X w ) T =(y^TXw)^T =(yTXw)T,而一个实数的转置本就等于其本身,所以这俩是同一个数

对L(w)求偏导

∂ L ( w ) ∂ w = ∂ ( w T X T X w − 2 w T X T y + y T y ) ∂ w = ∂ w T X T X w ∂ w − 2 ⋅ ∂ w T X T y ∂ w + 0 = X T X w + X T X w − 2 X T y = 2 X T X w − 2 X T y = 0 ⇒ w = ( X T X ) − 1 X T y \begin{aligned} \frac{\partial L(w)}{\partial w} &= \frac{\partial (w^TX^TXw - 2w^TX^Ty+y^Ty)}{\partial w} \\ &=\frac{\partial w^TX^TXw}{\partial w} - 2\cdot \frac{\partial w^TX^Ty}{\partial w} + 0 \\ &=X^TXw+X^TXw-2X^Ty \\ &=2X^TXw - 2X^Ty = 0 \\ &\Rightarrow w = (X^TX)^{-1}X^Ty \end{aligned} wL(w)=w(wTXTXw2wTXTy+yTy)=wwTXTXw2wwTXTy+0=XTXw+XTXw2XTy=2XTXw2XTy=0w=(XTX)1XTy

矩阵求导的相关公式参考了该资料:https://zhuanlan.zhihu.com/p/273729929

第二行到第三行的第一个偏导数:

要用到这个公式

线性回归原理讲解_第3张图片

此时将 X T X X^TX XTX视为整体,也就是公式里的A,其大小为(n+1, n+1),是常数方阵,符合公式的形式,于是
= X T X w + ( X T X ) T w = X T X w + X T X w =X^TXw+(X^TX)^Tw = X^TXw + X^TXw =XTXw+(XTX)Tw=XTXw+XTXw

第二行到第三行的第二个偏导数:

要用到这个公式

线性回归原理讲解_第4张图片

X T y X^Ty XTy视为整体,于是
∂ w T X T y ∂ w = X T y \frac{\partial w^TX^Ty}{\partial w} = X^Ty wwTXTy=XTy
第四行到第五行为逆矩阵的知识

梯度下降法

梯度下降也是线性回归算法的一种求解方式

关于梯度下降,马同学的回答非常直观且详细

https://www.zhihu.com/question/305638940/answer/1639782992

那么,当你看完这个回答后,可以理解,通过求梯度(这里也就是求对每个参数求偏导)和设定一个学习率(步长),经过指定次数迭代后可到达函数取到最小值的点,也就是获取了让误差值最小的权重向量w

关于求L对w的偏导数,最小二乘法时已提及
∂ L ( w ) ∂ w = ∂ ( w T X T X w − 2 w T X T y − y T y ) ∂ w = ∂ w T X T X w ∂ w − 2 ⋅ ∂ w T X T y ∂ w − 0 = X T X w + X T X w − 2 X T y = 2 X T ( X w − y ) \begin{aligned} \frac{\partial L(w)}{\partial w} &= \frac{\partial (w^TX^TXw - 2w^TX^Ty-y^Ty)}{\partial w} \\ &=\frac{\partial w^TX^TXw}{\partial w} - 2\cdot \frac{\partial w^TX^Ty}{\partial w} - 0 \\ &=X^TXw+X^TXw-2X^Ty \\ &=2X^T(Xw - y) \end{aligned} wL(w)=w(wTXTXw2wTXTyyTy)=wwTXTXw2wwTXTy0=XTXw+XTXw2XTy=2XT(Xwy)
那么只需要经过多次迭代
w = w − α ∂ L ( w ) ∂ w w= w-\alpha\frac{\partial L(w)}{\partial w} w=wαwL(w)
这就是利用梯度下降的线性回归原理

你可能感兴趣的:(线性回归,最小二乘法)