线性回归总结

本文深入探讨线性回归,从一元线性回归的最小二乘思想出发,详细推导了损失函数最小化的解,并延伸到多元线性回归的超平面概念。同时,介绍了梯度下降法,包括批梯度下降和随机梯度下降,讨论了它们在大规模数据集上的应用和局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们先来了解下最小二乘的思想。**简单的来说,最小二乘的思想就是要使得观测点和估计点的距离的平方和达到最小。**这里的二乘指的是用平方来度量观测点与估计点之间的远近,最小则指的是参数的估计值要保证各个观测点与估计点之间的距离的平方和达到最小。

一元线性回归

假设我们的模型只有一维数据时,模型就是一条直线 f ( x ) = a x + b f(x)=ax+b f(x)=ax+b,我们有 m m m条训练数据,训练损失函数为误差平方和的平均数:
L ( a , b ) = 1 m ∑ i = 1 m [ ( a x i + b ) − y i ] 2 L(a,b) = \frac{1}{m}\sum_{i=1}^{m}[(ax_i + b)-y_i]^2 L(a,b)=m1i=1m[(axi+b)yi]2

可以对a和b分别求导,导数为0时,损失函数最小。

∂ ∂ a L ( a , b ) = 2 m ∑ i = 1 m x i ( a x i + b − y i ) = 2 m ( a ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) \begin{aligned} \frac{\partial}{\partial a}L(a,b) =&\frac{2}{m}\sum_{i=1}^m x_i(ax_i + b -y_i) \\ =& \frac{2}{m}(a\sum_{i=1}^m x_i^2 - \sum_{i=1}^m(y_i-b)x_i) \end{aligned} aL(a,b)==m2i=1mxi(axi+byi)m2(ai=1mxi2i=1m(yib)xi)

∂ ∂ b L ( a , b ) = 2 m ∑ i = 1 m a x i + b − y i = 2 m ( m b − ∑ i = 1 m ( y i − a x i ) ) \begin{aligned} \frac{\partial}{\partial b} L(a,b) =& \frac{2}{m}\sum_{i=1}^m ax_i + b - y_i \\ =& \frac{2}{m}(mb - \sum_{i=1}^m(y_i - ax_i)) \end{aligned} bL(a,b)==m2i=1maxi+byim2(mbi=1m(yiaxi))

上面两个公式是损失函数 L L L a a a b b b进行求偏导。当导数为0时,可以求得损失函数的最小值,即:
{ ∂ ∂ a L ( a , b ) = 0 ⇒ 2 m ( a ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) = 0 ∂ ∂ b L ( a , b ) = 0 ⇒ 2 m ( m b − ∑ i = 1 m ( y i − a x i ) ) = 0 \begin{cases} &\frac{\partial}{\partial a}L(a,b) = 0 \rArr \frac{2}{m}(a\sum_{i=1}^m x_i^2 - \sum_{i=1}^m(y_i-b)x_i) = 0 \\ &\frac{\partial}{\partial b}L(a,b)=0 \rArr \frac{2}{m}(mb - \sum_{i=1}^m(y_i - ax_i)) = 0 \end{cases} {aL(a,b)=0m2(ai=1mxi2i=1m(yib)xi)=0bL(a,b)=0m2(mbi=1m(yiaxi))=0

这个求解过程,有一些trick会用到:
m x ‾ = ∑ i = 1 m x i ; m y ‾ = ∑ i = 1 m y i m\overline{x} = \sum_{i=1}^m x_i; \qquad m\overline{y} = \sum_{i=1}^m y_i mx=i=1mxi;my=i=1myi

于是上式 ∂ ∂ b L ( a , b ) \frac{\partial}{\partial b}L(a,b) bL(a,b)可以简化为:
m b = m y ‾ − a m x ‾ ⇒ b = y ‾ − a x ‾ mb = m\overline{y} - am \overline{x} \rArr b = \overline{y} - a\overline{x} mb=myamxb=yax
再把上式代入到 ∂ ∂ a L ( a , b ) \frac{\partial}{\partial a}L(a,b) aL(a,b)的结果中,可以得到:
a ∑ i = 1 m x i 2 − ∑ i = 1 m x i y i + ∑ i = 1 m ( y ‾ − a x ‾ ) x i = 0 ⇒ a = ∑ i = 1 m x i y i − y ‾ ∑ i = 1 m x i ∑ i = 1 m x i 2 − x ‾ ∑ i = 1 m x i ⇒ a = ∑ i = 1 m ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 m ( x i − x ‾ ) 2 ( 运 用 了 求 和 性 质 ) \begin{aligned} &a\sum_{i=1}^m x_i^2 - \sum_{i=1}^mx_iy_i + \sum_{i=1}^m(\overline{y}-a\overline{x})x_i = 0 \\ \rArr &a = \frac{\sum_{i=1}^m x_iy_i - \overline{y}\sum_{i=1}^m x_i}{\sum_{i=1}^mx_i^2 - \overline{x}\sum_{i=1}^mx_i} \\ \rArr &a = \frac{\sum_{i=1}^m(x_i - \overline{x})(y_i - \overline{y})}{\sum_{i=1}^m(x_i - \overline{x})^2} \qquad (运用了求和性质) \end{aligned} ai=1mxi2i=1mxiyi+i=1m(yax)xi=0a=i=1mxi2xi=1mxii=1mxiyiyi=1mxia=i=1m(xix)2i=1m(xix)(yiy)()

求和性质证明如下:
在这里插入图片描述
在这里插入图片描述

所以对于 y = a x + b y=ax+b y=ax+b得到的普通最小二乘解为:
{ a = ∑ i = 1 m ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 m ( x i − x ‾ ) 2 b = y ‾ − a x ‾ \begin{cases} a &= \frac{\sum_{i=1}^m(x_i - \overline{x})(y_i - \overline{y})}{\sum_{i=1}^m(x_i - \overline{x})^2} \\ b &= \overline{y} - a\overline{x} \end{cases} {ab=i=1m(xix)2i=1m(xix)(yiy)=yax

多元线性回归

更为一般的情况下,特征是多维的:
f ( x i ) = w T x i f(x_i) = w^Tx_i f(xi)=wTxi

上面的公式中,我们其实是使用 b = w 0 b=w_0 b=w0来表示参数中的 b b b,将 b b b添加到特征向量中,将 n n n维特征扩展为 n + 1 n+1 n+1维,也就是在每个 x i x_i xi中添加一个值为1的项。各个向量和矩阵形状如下面公式所示:
w = [ w 0 w 1 ⋮ w n ] X = [ x 1 x 2 ⋮ x m ] = ( 1 x 11 x 12 ⋯ x 1 n 1 x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ ⋮ 1 x m 1 x m 2 ⋯ x m n ) y = [ y 1 y 2 ⋮ y m ] w=\left [ \begin{matrix} w_0 \\ w_1 \\ \vdots \\ w_n \end{matrix}\right ] \qquad X = \left [ \begin{matrix} x_1 \\ x_2 \\ \vdots \\ x_m \end{matrix} \right ]=\left ( \begin{matrix} &1 \quad &x_{11} \quad &x_{12} \quad &\cdots \quad &x_{1n} \\ &1 \quad &x_{21} \quad &x_{22} \quad &\cdots \quad &x_{2n} \\ &\vdots \quad &\vdots \quad &\ddots \quad &\vdots \quad &\vdots \\ &1 \quad &x_{m1} \quad &x_{m2} \quad &\cdots \quad &x_{mn} \end{matrix} \right ) y=\left [\begin{matrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{matrix}\right ] w=w0w1wnX=x1x2xm=111x11x21xm1x12x22xm2x1nx2nxmny=y1y2ym
矩阵 X X X的每一行是一个样本,每个样本有 n + 1 n+1 n+1个特征值。

用矩阵乘法的形式表示则为:
y = X w y=Xw y=Xw
其中:
y i = ∑ j = 0 n w j x i j y_i = \sum_{j=0}^n w_j x_{ij} yi=j=0nwjxij

一般机器学习领域都常用矩阵乘法的形式来表示一个模型。

与一元线性回归相比,多元线性回归的最优解不是一条直线,是一个多维空间中的超平面,训练数据散落在超平面的两侧。

多元线性回归,一般寻求找到最优超平面,使得点到超平面的距离最小,也是用平方差来衡量,具体超平面如下:

在这里插入图片描述

具体的损失函数则是:
L ( w ) = ( X w − y ) T ( X w − y ) = ∣ ∣ X w − y ∣ ∣ 2 2 L(w) = (Xw - y)^T(Xw-y) = ||Xw-y||^2_2 L(w)=(Xwy)T(Xwy)=Xwy22
多元线性回归的损失函数仍然使用"预测值-真实值"的平方来计算,上面公式为整个模型损失函数的向量表示。

对线性回归损失函数公式中的向量 w w w求导,令导数为0:
∂ ∂ w L ( w ) = 2 X T ( X w − y ) = 0 ⇓ X T X w = X T y ⇓ w = ( X T X ) − 1 X T y \begin{aligned} \frac{\partial}{\partial w}L(w) &= 2X^T(Xw-y) = 0 \\ &\dArr \\ X^TXw &= X^Ty \\ &\dArr \\ w &=(X^TX)^{-1}X^Ty \end{aligned} wL(w)XTXww=2XT(Xwy)=0=XTy=(XTX)1XTy

上面的公式就是 w w w的解,这是一个矩阵方程,使用这种方法求最优解,其实就是在解这个矩阵方程。

但是这个方式有两个问题,这种方法只有在 X T X X^TX XTX是满秩或正定时,才能解方程组。还有一个问题是,公式中的矩阵求逆的计算量比较大,复杂度在 O ( n 3 ) O(n^3) O(n3)级别。当特征维度达到百万及以上的时候,计算时间就会非常长,单台计算机内存甚至都存不下这些参数。

梯度下降法

在求解损失函数时,或者说在求解损失函数最小的优化问题时,经常使用搜索的方法,具体而言,就是选取一个点作为起始点,然后不断搜索,损失函数逐渐变小,最后找到使得L(w)最小的w。

公式为:
w j : = w j − α ∂ ∂ w j L ( w ) w_j := w_j - \alpha \frac{\partial}{\partial w_j}L(w) wj:=wjαwjL(w)

如果我们只考虑一个样本 ( x i , y i ) (x_i,y_i) (xi,yi)的情况,由 L ( w ) = 1 2 ( f ( x i ) − y i ) 2 L(w)=\frac{1}{2}(f(x_i)-y_i)^2 L(w)=21(f(xi)yi)2可以得到:
∂ ∂ w j L ( w ) = ∂ ∂ w j 1 2 ( f ( w i ) − y i ) 2 = ( f ( x i ) − y i ) ⋅ ∂ ∂ w j ( ∑ j = 0 n w j x i , j − u i ) = ( f ( x i ) − y i ) x i , j \begin{aligned} \frac{\partial}{\partial w_j}L(w) &= \frac{\partial}{\partial w_j}\frac{1}{2}(f(w_i)-y_i)^2 \\ &= (f(x_i)-y_i)\cdot \frac{\partial}{\partial w_j}(\sum_{j=0}^{n}w_jx_{i,j}-u_i) \\ &= (f(x_i)-y_i)x_{i,j} \end{aligned} wjL(w)=wj21(f(wi)yi)2=(f(xi)yi)wj(j=0nwjxi,jui)=(f(xi)yi)xi,j

所以,对于每个样本的更新规则为:
w j : = w j − α ( f ( x i ) − y i ) x i , j w_j := w_j - \alpha (f(x_i)-y_i)x_{i,j} wj:=wjα(f(xi)yi)xi,j

批梯度下降

对于批梯度下降,就是再求梯度时,不是只考虑一个样本,而是考虑所有的m个样本:
∂ ∂ w j L ( w ) = ∂ ∂ w j 1 2 { ( f ( x 1 ) − y 1 ) 2 + . . . + ( f ( x m ) − y m ) 2 } = ( f ( x 1 ) − y 1 ) x 1 j + . . . + ( f ( x m ) − y m ) x m j = ∑ i = 1 m ( f ( x i ) − y i ) x i j \begin{aligned} \frac{\partial}{\partial w_j}L(w) &=\frac{\partial}{\partial w_j}\frac{1}{2}\{(f(x_1)-y_1)^2 + ... + (f(x_m)-y_m)^2\} \\ &= (f(x_1)-y_1)x_{1j} + ... +(f(x_m)-y_m)x_{mj} \\ &= \sum_{i=1}^m (f(x_i)-y_i)x_{ij} \end{aligned} wjL(w)=wj21{(f(x1)y1)2+...+(f(xm)ym)2}=(f(x1)y1)x1j+...+(f(xm)ym)xmj=i=1m(f(xi)yi)xij

所以,可以得到对每一个 w j w_j wj的导数:
w j : = w j − α ∑ i = 1 m ( f ( x i ) − y i ) x i j w_j := w_j - \alpha \sum_{i=1}^m (f(x_i)-y_i)x_{ij} wj:=wjαi=1m(f(xi)yi)xij

随机梯度下降

批梯度下降在更新时,考虑了所有的样本,但是当数据量很大时,每次迭代都用全部的数据,不现实。

所以一种方法就是随机梯度下降法,每次随机选取一定的样本数,参与梯度更新。最后的公式的区别就是求和符号的上限不再是 m m m,而是一个随机值。

参考资料:

线性回归的求解

普通最小二乘法的推导证明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值