最小二乘&均方误差MSE&平均绝对误差MAE

这三者都是衡量模型预测误差的核心概念,但属于不同层面的工具。简单来说:

  • 最小二乘 :是一种求解模型参数的方法(更侧重计算过程)。
  • 均方误差 (MSE) :是一种评价预测误差的指标(更侧重结果度量)。
  • 平均绝对误差 (MAE) :也是一种评价预测误差的指标,但鲁棒性比MSE好。

下面详细拆解它们的区别与联系。


1. 最小二乘法 (Least Squares, LS)

本质 :一种参数估计方法(优化算法),常用于线性回归。

核心思想 :找到一组模型参数,使得残差平方和 (RSS) 最小。

残差平方和公式为:

RSS = \\sum_{i=1}\^{n} (y_i - \\hat{y}_i)\^2

特点

  • 解析解(可直接用公式计算,无需迭代)。
  • 异常值非常敏感(因为误差被平方,大误差点的权重极大)。
  • 在误差服从正态分布 时,最小二乘估计等价于极大似然估计,统计性质最优(BLUE,即最佳线性无偏估计)。

典型应用:普通线性回归、多项式拟合。


2. 均方误差 (Mean Squared Error, MSE)

本质 :一种评价指标,衡量预测值与真实值之间的平均平方误差。

公式

MSE = \\frac{1}{n} \\sum_{i=1}\^{n} (y_i - \\hat{y}_i)\^2

特点

  • 与最小二乘的优化目标仅差一个常数因子 ( \frac{1}{n} )(因此最小化MSE等价于最小化RSS)。
  • 单位是原始单位的平方(例如:若 ( y ) 是"米",MSE就是"平方米"),不直观。
  • 同样对异常值敏感
  • 可导且凸性好,常用于梯度下降等优化算法。

与最小二乘的关系

最小二乘法就是在最小化MSE(忽略常数 ( \frac{1}{n} ))。所以训练线性回归模型时,两者等价。


3. 平均绝对误差 (Mean Absolute Error, MAE)

本质 :也是一种评价指标,但使用绝对差而非平方差。

公式

MAE = \\frac{1}{n} \\sum_{i=1}\^{n} \|y_i - \\hat{y}_i\|

特点

  • 对异常值不敏感(因为是线性惩罚)。
  • 单位与原始数据一致,解释性强(例如"平均误差±5米")。
  • 不可导(在误差为0处),不利于基于梯度的优化,但可用次梯度或线性规划求解。
  • 当误差分布为拉普拉斯分布时,最小化MAE等价于极大似然估计。

与MSE的对比

特性 MSE MAE
对异常值敏感度
梯度稳定性 处处可导 0点不可导
单位 原始单位的平方 原始单位
最优解对应分布 高斯(正态)分布 拉普拉斯分布
常用场景 误差大致正态、需重点惩罚大误差 数据有离群点、需鲁棒性评估

三者关系总结图(概念层级)

复制代码
模型训练/求解阶段              模型评估阶段
      │                           │
      ▼                           ▼
  最小二乘法                  MSE / MAE
      │                           │
      │(目标函数)                │(指标)
      │                           │
      └───────> 最小化RSS ──> 等价于最小化MSE
  • 训练时 :如果用最小二乘法,目标就是最小化RSS(或MSE) ;如果用其他方法(如最小绝对偏差),目标就是最小化MAE
  • 评估时:无论用什么训练方法,你都可以计算MSE和MAE来比较模型好坏。

实际选择建议

场景 推荐方法/指标
误差大致对称、无明显离群点,追求理论最优 最小二乘 + MSE
数据中存在明显离群点,不想让它们主导模型 最小绝对偏差 + MAE
需要向非技术方解释平均误差大小 MAE(单位直观)
需要重点关注大误差(如金融风险控制) MSE(惩罚大误差)
相关推荐
Jmayday2 小时前
Pytorch:模型线性回归
pytorch·python·线性回归
执于代码2 小时前
python 环境知多少
开发语言·python
田梓燊2 小时前
力扣:138.随机链表的复制
算法·leetcode·链表
不忘不弃2 小时前
皇后摆放问题优化求解法
算法
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:线段覆盖
c++·算法·贪心·csp·信奥赛·区间贪心·线段覆盖
痴男本疒2 小时前
从一道算法题发现的泛型问题
算法
itzixiao2 小时前
L1-054 福到了(15 分)[java][python]
java·python·算法
斯维赤2 小时前
Python学习超简单第十一弹:邮件发送
开发语言·python·学习
qq_372154232 小时前
如何配置表中某列的排序权重_全文索引配置与权重分配
jvm·数据库·python