机器学习之基于最小二乘的线性回归正规方程求解公式推导(有监督学习)

1. 什么是损失函数、代价函数、目标函数?

  • 损失函数 Loss L L L(单样本)
    • 只衡量一个样本的预测误差:
    • L ( h ( x i ) , y i ) = ( h ( x i ) − y i ) 2 L\big(h(x_i),y_i\big) = \big(h(x_i)-y_i\big)^2 L(h(xi),yi)=(h(xi)−yi)2
  • 代价函数 Cost J J J(全部样本)
    • 最小二乘
      • J ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 J(w)=\sum_{i=1}^m \big(h(x_i)-y_i\big)^2 J(w)=∑i=1m(h(xi)−yi)2
      • J ( w ) = ( X w − y ) T ( X w − y ) J(w) = (Xw-y)^T(Xw-y) J(w)=(Xw−y)T(Xw−y)
    • MSE 均方误差
      • M S E = 1 m ∑ i = 1 m ( y ^ i − y i ) 2 \mathrm{MSE}=\frac1m\sum_{i=1}^m(\hat{y}_i-y_i)^2 MSE=m1∑i=1m(y^i−yi)2
    • RMSE 均方根误差(只做模型评估)
      • R M S E = 1 m ∑ i = 1 m ( y ^ i − y i ) 2 \mathrm{RMSE}=\sqrt{\frac1m\sum_{i=1}^m(\hat{y}_i-y_i)^2} RMSE=m1∑i=1m(y^i−yi)2
    • MAE 平均绝对误差
      • M A E = 1 m ∑ i = 1 m ∣ y ^ i − y i ∣ \mathrm{MAE}=\frac1m\sum_{i=1}^m\left|\hat{y}_i-y_i\right| MAE=m1∑i=1m∣y^i−yi∣
    • 使用方式:
      • 训练阶段:把 MSE 当作代价函数(loss)去更新参数;
      • 模型训练完毕:MSE、RMSE、MAE 全部拿来评估模型好坏。
  • 目标函数 Objective O b j Obj Obj(最终优化对象)
    • 目标函数是训练时真正最小化的函数,可加正则项
    • 无正则(普通最小二乘)
      • O b j ( w ) = J ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 Obj(w)= J(w) =\sum_{i=1}^m \big(h(x_i)-y_i\big)^2 Obj(w)=J(w)=∑i=1m(h(xi)−yi)2
      • O b j ( w ) = J ( w ) = ( X w − y ) T ( X w − y ) Obj(w) = J(w) = (Xw-y)^T(Xw-y) Obj(w)=J(w)=(Xw−y)T(Xw−y)
    • 代价函数带 L2 正则(岭回归 / 二阶正则)
      • 公式:
        • O b j ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 + λ ∑ i = 1 d w i 2 Obj(w)=\sum_{i=1}^m \big(h(x_i)-y_i\big)^2+\lambda\sum_{i=1}^d w_i^2 Obj(w)=∑i=1m(h(xi)−yi)2+λ∑i=1dwi2
        • O b j ( w ) = ( X w − y ) T ( X w − y ) + λ w T w Obj(w) = (Xw-y)^T(Xw-y) + \lambda w^T w Obj(w)=(Xw−y)T(Xw−y)+λwTw
      • 惩罚项 w²(平方)
        • 大权重会被狠狠惩罚、大幅压缩
        • 小权重惩罚很小,只会无限趋近 0,不会等于 0
      • 核心作用:
        压权重、平滑、可逆、防过拟合
        • 对权重做平方惩罚,让所有权重趋近于 0 但不为 0,权重更平滑
        • 避免单个特征权重过大,泛化能力更强,主打防过拟合
        • 强制让 X T X + λ I X^TX+ \lambda I XTX+λI 永久满秩、可逆,解决多重共线性、特征冗余导致的正规方程失效问题
        • 有解析解,可直接矩阵求解
    • 代价函数带 L1 正则(Lasso回归 / 一阶正则)
      • L1正则为权重绝对值之和,可产生稀疏解、自动筛选特征:
        • O b j ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 + λ ∑ j = 1 d ∣ w j ∣ Obj(w) = \sum_{i=1}^m \big(h(x_i)-y_i\big)^2 + \lambda\sum_{j=1}^d |w_j| Obj(w)=∑i=1m(h(xi)−yi)2+λ∑j=1d∣wj∣
        • O b j ( w ) = ( X w − y ) T ( X w − y ) + λ ∣ w ∣ Obj(w) = (Xw-y)^T(Xw-y) + \lambda \vert w \vert Obj(w)=(Xw−y)T(Xw−y)+λ∣w∣
      • 惩罚的是 |w|(绝对值)
        • 损失曲面是尖角折线
        • 最优解极易落在 坐标轴上
        • 落在坐标轴 = w 直接等于 0
      • 核心作用
        削弱特征、直接置零、稀疏、无解析解
        • 对权重做绝对值惩罚,会让大量不重要特征的权重直接变为 0
        • 自动剔除无效 / 冗余特征,实现特征降维
        • 无解析解,只能用梯度下降迭代求解
  • 三者层级关系
    • 损失函数 ⊂ 代价函数 ⊂ 目标函数

2. 为什么要算损失函数?

  • 损失函数用来量化预测误差的
  • 通过对损失求梯度,才可以更新参数 w w w
  • 不管正规方程还是梯度下降,全部依赖损失函数。

3. 算出来损失函数能干嘛?

  • 用来评价当前模型效果
  • 通过损失求最优参数(最关键作用)
    • 方案 1:正规方程(解析解)
      • 公式: w = ( X T X ) − 1 X T y {w}=({X}^T{X})^{-1}{X}^T{y} w=(XTX)−1XTy
    • 方案 2:梯度下降(迭代求解,深度学习主流)
      • 公式: w = w − η ∂ J ( w ) ∂ w \boldsymbol{w} = \boldsymbol{w}-\eta\frac{\partial J(\boldsymbol{w})}{\partial \boldsymbol{w}} w=w−η∂w∂J(w)
  • 引入正则项解决过拟合(目标函数)

大白话: w w w是未知数,损失函数就是我们的评判标准;机器学习就是不断调整 w w w,把损失降到最小。脱离损失函数,我们完全不知道如何设定 w。

4. 正规方程(解析解)公式推导

求解原始最小二乘参数w 有两种方式:正规方程和梯度下降

正规方程:直接矩阵运算一步算出 w w w;样本不大时好用;样本很多(m 上万)矩阵求逆计算量巨大

梯度下降:迭代逐步逼近 w w w,大数据场景优先选择
这里推导正规方程

整个最小二乘推导链路:平方和损失 → 矩阵形式改写(借助 L2 范数)→ 展开多项式 → 矩阵求导 → 令梯度为 0 → 借助逆矩阵求出

  • 第一步:先看下原版最小二乘公式
    • 预测值: h ( x 1 ) 、 h ( x 2 ) 、 h ( x 3 ) . . . h(x_1)、h(x_2)、h(x_3)... h(x1)、h(x2)、h(x3)...
    • 真实值: y 1 、 y 2 、 y 3 . . . y_1、y_2、y_3... y1、y2、y3...
    • 公式:
      • J ( w ) = ( h ( x 1 ) − y 1 ) 2 + ( h ( x 2 ) − y 2 ) 2 + . . . + ( h ( x m ) − y m ) 2 J(w) = (h(x_1) - y_1)^2 + (h(x_2) - y_2)^2 + ... + (h(x_m) - y_m)^2 J(w)=(h(x1)−y1)2+(h(x2)−y2)2+...+(h(xm)−ym)2
  • 第二步:上述公式使用 求和符号 ∑(大写西格玛)表示
    • i从1到m,求样本预测值和真实值差值 的 平方和
    • J ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 J(w)=\sum_{i=1}^m\big(h(x_i)-y_i\big)^2 J(w)=∑i=1m(h(xi)−yi)2
  • 第三步:上述公式使用矩阵转置方式
    • 先了解前置知识
      • 矩阵
        • 矩阵运算 :矩阵相乘的必要条件第一个矩阵的列数 = 第二个矩阵的行数(A的列数n= B的行数n),才可以相乘 A⋅B
        • 矩阵转置 :把矩阵 A A A 的行和列互换得到转置矩阵,记作 A T A^T AT,简单来说,矩阵的转置就是行变列,列变行
        • 矩阵转置举例 :矩阵 A A A 和 矩阵 A A A 的转置:
          A = 1 2 3 , A T = 1 2 3 \boldsymbol{A}= \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix},\quad \boldsymbol{A}^T= \begin{bmatrix} 1 & 2 & 3 \\ \end{bmatrix} A= 123 ,AT=123
        • 发现:矩阵乘矩阵转置也就是 A T A A^TA ATA 等于 x 1 2 + x 2 2 + x 3 2 x_1^2 + x_2^2 + x_3^2 x12+x22+x32 等价于 ∑ i = 1 3 x i 2 \sum_{i=1}^3x_i^2 ∑i=13xi2
          • 注意 :当 A是列向量 (形状 m×1, m行1列)时一定要写成 A T A A^TA ATA,不是 A A T AA^T AAT,前者运算结果是标量也就是具体计算出来的一个值,后者运算结果是m×m的方阵
      • L2范数
        • 针对普通 列向量 x x x(也就是形状 m×1,m行1列) 有如下公式:
        • ∥ x ∥ 2 = x 1 2 + x 2 2 + ⋯ + x n 2 = ∑ i = 1 n x i 2 \|\boldsymbol{x}\|2=\sqrt{x_1^2 + x_2^2+\dots+x_n^2}=\sqrt{\sum{i=1}^n x_i^2} ∥x∥2=x12+x22+⋯+xn2 =∑i=1nxi2
        • 重点
          • 结合上述矩阵转置知识:把 A A A看作 x x x, x T x x^Tx xTx 等价于 ∑ i = 1 m x i 2 \sum_{i=1}^mx_i^2 ∑i=1mxi2
          • 也就是 L2 范数去掉根号,也就是 L2 范数 ∥ x ∥ 2 \|\boldsymbol{x}\|_2 ∥x∥2 再平方,也就是 x T x x^Tx xTx = ∥ x ∥ 2 2 \|\boldsymbol{x}\|_2^2 ∥x∥22
    • 基于第二步公式推导 :根据前置知识我们可以将 第2步 中的 ( h ( x i ) − y i ) (h(x_i)-y_i) (h(xi)−yi) 当作 误差向量 e e e, e = X w − y e=Xw−y e=Xw−y
      • X w − y Xw−y Xw−y公式说明
        • X X X:样本特征矩阵,形状 m(样本总数)×d(特征数量),约定第一列全部填充 1,用来计算偏置项 w 0 w_0 w0
        • w w w:参数列向量,维度 n × 1 n×1 n×1, w 0 w_0 w0 为截距(可以看作kx+b中的b), w 1 ... w n − 1 w_1...w_n−1 w1...wn−1是各个特征的权重
        • y y y:真实标签列向量,形状 m × 1 m×1 m×1,存放样本真实值
      • 此时第2步 中的公式就可以改写成如下公式
        • J ( w ) = ∑ i = 1 m ( X w − y ) 2 J(w)=\sum_{i=1}^m(Xw−y)^2 J(w)=∑i=1m(Xw−y)2
      • 然后,我们在不影响上述公式结果的基础上开根号然后再整体平方,会发现和我们上述范数中推导的公式一致了
        • J ( w ) = ∑ i = 1 m ( X w − y ) 2 2 J(w)=\sqrt{\sum_{i=1}^m(Xw−y)^2}^2 J(w)=∑i=1m(Xw−y)2 2 等价于 ∥ X w − y ∥ 2 2 \|\boldsymbol{Xw−y}\|_2^2 ∥Xw−y∥22
  • 第四步:使用矩阵知识进一步推导
    • J ( w ) = ∥ X w − y ∥ 2 2 J(w)=\|\boldsymbol{Xw−y}\|_2^2 J(w)=∥Xw−y∥22
    • 根据范数公式 ∥ x ∥ 2 2 \|\boldsymbol{x}\|_2^2 ∥x∥22 = x T x x^Tx xTx,得出
      • J ( w ) = ( X w − y ) T ( X w − y ) J(w)=(Xw−y)^T(Xw−y) J(w)=(Xw−y)T(Xw−y)
    • 进行乘法运算,得出
      • 注意:
        转置运算 ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT
        矩阵乘法不满足交换律 A B ≠ B A AB \neq BA AB=BA**
      • J ( w ) = ( X w ) T X w − ( X w ) T y − y T X w + y T y J(w)=(Xw)^TXw - (Xw)^Ty - y^TXw + y^Ty J(w)=(Xw)TXw−(Xw)Ty−yTXw+yTy
      • J ( w ) = w T X T X w − w T X T y − y T X w + y T y J(w)=w^TX^TXw - w^TX^Ty − y^TXw + y^Ty J(w)=wTXTXw−wTXTy−yTXw+yTy
    • 逐项对 w w w 求偏导
      • 矩阵求导公式:
        公式一: ∂ ∂ w ( w T A w ) = 2 A w \frac{\partial}{\partial w}(w^T A w)=2Aw ∂w∂(wTAw)=2Aw (满足条件: A A A 是对称矩阵, A T = A A^T = A AT=A)
        公式二: ∂ ∂ w ( w T a ) = a \frac{\partial}{\partial w}(w^T a)=a ∂w∂(wTa)=a(满足条件: a a a 是 d × 1 d×1 d×1 列向量)
        公式三: ∂ ∂ w ( A w ) = A T \frac{\partial}{\partial w}(Aw)=A^T ∂w∂(Aw)=AT(满足条件: A A A 是 m × d m×d m×d 矩阵)
      • 第一项对 w w w求偏导 w T X T X w w^TX^TXw wTXTXw
        • 根据公式一: X T X X^TX XTX是对称矩阵,将 X T X X^TX XTX = A A A 带入得出: 2 X T X w 2X^TXw 2XTXw
      • 第二项对 w w w求偏导 w T X T y w^TX^Ty wTXTy
        • 根据公式二: X T X^T XT是d x m的矩阵, y y y是 m × 1 m×1 m×1 的列向量,相乘是 d × 1 d×1 d×1 的列向量,将 X T y X^Ty XTy = A A A 带入得出: X T y X^Ty XTy
      • 第三项对 w w w求偏导 y T X w y^TXw yTXw
        • 根据公式三得出: y T y^T yT 是 1 × m 1×m 1×m 矩阵, X X X是 m × d m×d m×d 的矩阵,相乘是 1 × d 1×d 1×d 矩阵,将 y T X y^TX yTX = A A A 带入得出: X T y X^Ty XTy
      • 第四项对 w w w求偏导 y T y y^Ty yTy
        • y T y^T yT 是 1 x m矩阵, y y y是 m × 1 m×1 m×1 矩阵,相乘是 1 × 1 1×1 1×1 标量,常数对变量求导结果为零向量
    • 全部项结果
      • ∂ J ∂ w = 2 X T X w − X T y − X T y \frac{\partial J}{\partial w}=2X^TXw - X^Ty - X^Ty ∂w∂J=2XTXw−XTy−XTy
      • ∂ J ∂ w = 2 X T X w − 2 X T y \frac{\partial J}{\partial w}=2X^TXw - 2X^Ty ∂w∂J=2XTXw−2XTy
      • 令梯度等于零向量 0 0 0
      • 0 = 2 X T X w − 2 X T y 0=2X^TXw - 2X^Ty 0=2XTXw−2XTy
      • X T X w = X T y X^TXw = X^Ty XTXw=XTy
  • 第五步:根据第四步结果进一步推导
    • X T X w = X T y X^TXw = X^Ty XTXw=XTy
    • 这里我们引入 X T X X^TX XTX的逆矩阵,目的是为了得到一个单位矩阵,从而消除等式左边的 X T X X^TX XTX。
      • 方阵 A A A 可逆的条件:
        • 条件一: A A A 必须是 n × n n×n n×n方阵 (条件一满足:矩阵的转置乘矩阵就是方阵,这里的 X T X X^TX XTX就是方阵)
        • 条件二: A A A 满秩, 也就是矩阵里面所有行(列)彼此独立,任意一列都不能用剩下列通过加减倍数拼凑出来(列之间线性无关)。行列式 ∣ A ∣ ≠ 0 |A| \neq 0 ∣A∣=0 (条件二不一定满足)
    • 这里我们假设 方阵 A A A 可逆的条件满足: 因为方阵乘逆方阵等于单位矩阵 A − 1 A = A A − 1 = I A^-1A=AA^-1=I A−1A=AA−1=I,所以推出:
      • ( X T X ) − 1 ( X T X ) w = ( X T X ) − 1 X T y ({X}^T{X})^{-1}({X}^T{X}){w}=({X}^T{X})^{-1}{X}^T{y} (XTX)−1(XTX)w=(XTX)−1XTy
      • I w = ( X T X ) − 1 X T y I{w}=({X}^T{X})^{-1}{X}^T{y} Iw=(XTX)−1XTy
      • w = ( X T X ) − 1 X T y {w}=({X}^T{X})^{-1}{X}^T{y} w=(XTX)−1XTy
  • 最终推导结果
    • w = ( X T X ) − 1 X T y {w}=({X}^T{X})^{-1}{X}^T{y} w=(XTX)−1XTy
  • 前提条件牢记:
    • 当 X T X {X}^T{X} XTX不满秩时, ( X T X ) − 1 ({X}^T{X})^{-1} (XTX)−1不存在,解析解失效,这时引入L2正则: w = ( X T X + λ I ) − 1 X T y {w}=({X}^T{X}+\lambda{I})^{-1}{X}^T{y} w=(XTX+λI)−1XTy
相关推荐
三品吉他手会点灯1 小时前
嵌入式机器学习 - 学习笔记1.1.2 - 机器学习的局限性与伦理
人工智能·笔记·嵌入式硬件·学习·机器学习
Xpower 171 小时前
详细解释 Codex 最近一次功能更新,以及 GPT-5.6 Sol、Terra、Luna 的能力、价格、使用方式和适用场景。
人工智能·python·gpt·学习
一枚NPC1 小时前
Timbal AI 音乐创作与商业应用实战指南
大数据·人工智能·机器学习
千寻xun10 小时前
一、理论篇-NVME协议学习笔记
笔记·学习·fpga开发·nvme ssd·nvme协议
researcher-Jiang11 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
EQUINOX115 小时前
【论文阅读】| MoCo精读
论文阅读·人工智能·python·深度学习·机器学习
MartinYeung515 小时前
[论文学习]大语言模型安全综述:攻击、防御、对齐、度量与护栏的深度解析
学习·安全·语言模型
AOwhisky16 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
心中有国也有家16 小时前
AtomGit Flutter 鸿蒙客户端:白噪音场景的视觉设计
学习·flutter·华为·harmonyos