损失函数MSE和MAE的区别以及如何选择

article/2025/8/18 22:16:18

1、均方误差(L2损失)

均方误差(MSE)是最常用的回归损失函数,计算方法是求预测值与真实值之间距离的平方和,公式如下:

M S E = 1 m ∑ m i = 1 ( y i − y ^ i ) 2 MSE=\frac{1}{m} \sum_{m}^{i=1}\left(y_{i}-\hat{y}_{i}\right)^{2} MSE=m1mi=1(yiy^i)2

下图是MSE函数的图像,其中目标值是100,预测值的范围从-10000到10000,Y轴代表的MSE取值范围是从0到正无穷,并且在预测值为100处达到最小。通过数值模拟,平均绝对值误差的形状如下:

2、平均绝对值误差(L1损失)

M A E = 1 m ∑ m i = 1 ∣ ( y i − y ^ i ) ∣ MAE=\frac{1}{m} \sum_{m}^{i=1}\left|\left(y_{i}-\hat{y}_{i}\right)\right| MAE=m1mi=1(yiy^i)

平均绝对误差(MAE)是另一种用于回归模型的损失函数。MAE是目标值和预测值之差的绝对值之和。其只衡量了预测值误差的平均模长,而不考虑方向,取值范围也是从0到正无穷(如果考虑方向,则是残差/误差的总和——平均偏差(MBE))。


3、MSE(L2损失)与MAE(L1损失)的比较

简单来说,MSE计算简便,但MAE对异常点有更好的鲁棒性。下面就来介绍导致二者差异的原因。

训练一个机器学习模型时,我们的目标就是找到损失函数达到极小值的点。 当预测值等于真实值时,这两种函数都能达到最小。

下面是这两种损失函数的python代码。你可以自己编写函数,也可以使用sklearn内置的函数。

# true: Array of true target variable
# pred: Array of predictions
def mse(true, pred):return np.sum((true - pred)**2)/len(true)
def mae(true, pred):return np.sum(np.abs(true - pred))/len(true)
# also available in sklearn
# from sklearn.metrics import mean_squared_errorfrom 
# sklearn.metrics import mean_absolute_error

下面让我们观察MAE和RMSE(即MSE的平方根,同MAE在同一量级中)在两个例子中的计算结果。第一个例子中,预测值和真实值很接近,而且误差的方差也较小。第二个例子中,因为存在一个异常点,而导致误差非常大。

在这里插入图片描述
4、MSE与MAE各自的优缺点

1、MSE对误差取了平方(令e=真实值-预测值),因此若e>1,则MSE会进一步增大误差。如果数据中存在异常点,那么e值就会很大,而e则会远大于|e|。因此,相对于使用MAE计算损失,使用MSE的模型会赋予异常点更大的权重。在第二个例子中,用RMSE计算损失的模型会以牺牲了其他样本的误差为代价,朝着减小异常点误差的方向更新。然而这就会降低模型的整体性能。如果训练数据被异常点所污染,那么MAE损失就更好用(比如,在训练数据中存在大量错误的反例和正例标记,但是在测试集中没有这个问题)。

2、直观上可以这样理解:如果我们最小化MSE来对所有的样本点只给出一个预测值,那么这个值一定是所有目标值的平均值。但如果是最小化MAE,那么这个值,则会是所有样本点目标值的中位数。众所周知,对异常值而言,中位数比均值更加鲁棒,因此MAE对于异常值也比MSE更稳定。

3、MAE存在一个严重的问题(特别是对于神经网络):更新的梯度始终相同,也就是说,即使对于很小的损失值,梯度也很大。这样不利于模型的学习。为了解决这个缺陷,我们可以使用变化的学习率,在损失接近最小值时降低学习率。而MSE在这种情况下的表现就很好,即便使用固定的学习率也可以有效收敛。MSE损失的梯度随损失增大而增大,而损失趋于0时则会减小。这使得在训练结束时,使用MSE模型的结果会更精确。

5、MSE与MAE如何选择

如果异常点代表在商业中很重要的异常情况,并且需要被检测出来,则应选用MSE损失函数。相反,如果只把异常值当作受损数据,则应选用MAE损失函数。总的来说,处理异常点时,MAE损失函数更稳定,但它的导数不连续,因此求解效率较低。MSE损失函数对异常点更敏感,但通过令其导数为0,可以得到更稳定的封闭解。

当两者问题同时存在时,就需要考虑其他的更合适的损失函数了,如Huber损失(平滑的平均绝对误差)、Log-Cosh损失、分位数损失等,详见:

机器学习大牛最常用的5个回归损失函数,你知道几个?


http://chatgpt.dhexx.cn/article/QQXCrUDc.shtml

相关文章

连载|GBDT如何进行回归和分类

GBDT 在前几年的机器学习竞赛以及工作中,人们使用着各种传统算法进行调参取得性能的提升,突然有一天杀出了一种名为GBDT的算法,改变了当前的格局,该算法在不同的场景中总是能够产生很好的效果,本文就让我们来了解一下…

最小二乘法多项式曲线拟合数学原理及其C++实现

目录 0 前言1 最小二乘法概述2 最小二乘法求解多项式曲线系数向量的数学推导2.1 代数法2.2 矩阵法 3 代码实现4 总结参考 0 前言 自动驾驶开发中经常涉及到多项式曲线拟合,本文详细描述了使用最小二乘法进行多项式曲线拟合的数学原理,通过样本集构造范德…

GB和GBDT 算法流程及分析

1、优化模型的两种策略: 1)基于残差的方法 残差其实就是真实值和预测值之间的差值,在学习的过程中,首先学习一颗回归树,然后将“真实值-预测值”得到残差,再把残差作为一个学习目标,学习下一棵回…

机器学习和深度学习性能指标

这里写目录标题 1、声明2、机器学习评估性能指标2.1、回归(Regression)算法指标2.1.1、平均绝对误差 MAE2.1.2、均方误差 MSE2.1.3、均方根误差 RMSE2.1.4、决定系数R^22.1.5、解决评估指标鲁棒性问题 2.2、分类(Classification)算…

多模态信息融合研究

1、主要研究方向 多模态学习可以划分为以下五个研究方向: 多模态表示学习 Multimodal Representation:主要研究如何将多模态的数据所蕴含的语义信息通过embedding的方式实现向量化,便于后续的计算; 模态转化 Translation&#…

【时序】DeepGLO:可以学习全局依赖和局部信息的多时间序列预测模型

论文名称:Think Globally, Act Locally: A Deep Neural Network Approach to High-Dimensional Time Series Forecasting 论文下载:https://arxiv.org/abs/1905.03806 论文年份:NeurIPS 2019 论文被引:134(2022/04/21&…

独立性检验(卡方检验)

独立性检验(Test for Independence)是根据频数来判断两类因子是彼此独立还是彼此相关的一种假设检验。假如对某一个数据集有X(值域为x1, x2)跟Y(值域为y1, y2)变量,下面是他们的频数表: x1 x2 汇总 y1 …

列联表分析——独立性检验(卡方检验)

第一步:建立原假设和备择假设 H0:两变量相不立;H1:u两变量相互b独立 第二步:计算自由度和理论频数 第三步:计算卡方统计量 实际观察次数与理论次数之差的平方再除以理论次数得到的统计量近似服从卡方分布…

列联表分析-独立性检验

用SPSS分析甲乙丙三名推销员的对ABC三类产品的销售数据是否独立 原假设:他们之间相互独立 数据如下: 导入数据 将销量进行加权 点击分析-描述统计–交叉表; 结果 当表格是2X2的时候得到结果如下:

第15章卡方检验:拟合优度和独立性检验

第1章统计学入门 第2章频数分布略 第3章集中趋势的测量 第4章变异性 第5章分数的位置及标准化分布 第6章概率和正态分布 第7章概率和样本:样本均值的分布 第8章假设检验介绍 第9章t检验介绍 第10章两个独立样本的t检验 第11章两个相关样本的t检验…

独立样本t检验、方差齐性检验

什么是独立样本t检验? t检验是比较两组数据之间的差异,有无统计学意义;t检验的前提是,两组数据来自正态分布的群体,数据的方差齐,满足独立性。 独立样本t检验(各实验处理组之间毫无相关存在&am…

卡方列联表的独立性检验

1.列联表是按两个或多个特征分类的频数数据,一般以表格形式组成。 2.判断两个或多个属性之间有无关联,即判别属性之间是否独立。 3.检验步骤 建立原假设 H0: 两属性相互独立 H1: 两属性之间不独立 计算自由度 计算卡方统计量 拒绝域 对照卡方分布…

SPSS学习(五)独立样本t检验

参考书籍:《SPSS其实很简单》 应用场景:当对两个独立分组中感兴趣的一个连续因变量的均值进行比较时使用。 目标:检验两个组别中关于某些感兴趣的因变量的均值是否存在显著差异 数据要求:具有两个不同组别的一个自变量&#xf…

统计之 - 独立性检验

独立性检验(Testfor Independence)是根据频数来判断两类因子是彼此独立还是彼此相关的一种假设检验。假如对某一个数据集有X(值域为x1,x2)跟Y(值域为y1,y2)变量,下面是他们的频数表: x1x2汇总y1ababy2cdcd汇…

SAS学习第9章:卡方检验之适合性检验与独立性检验

卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时&#xf…

入门必学 | R语言数据的独立性,正态性及方差齐性检验

参数分析的三大前提检验 检验数据独立性的方法Chisq检验Fisher检验Cochran-Mantel-Haenszel检验 检验数据正态性的方法shapiro.test函数qqnorm函数ksnormTest函数lillie.test函数ks.test函数 方差齐性检验的方法bartlett.test()检验leveneTest ()检验 完整代码 参数检验-显著性…

基于卡方的独立性检验

本文给出基于两种统计量的假设检验,来检验变量间是否独立--χ2与秩和。χ2越小说明越独立 假设检验 假设检验(Test of Hypothesis)又称为显著性检验(Test of Ststistical Significance)。 在抽样研究中,由于…

SPSS之双独立样本的T检验

双独立样本的T检验 是指在两个样本相互独立的前提下,检验两个样本的总体均数(两个样本各自归属的总体的平均数,如果两样本均数不存在显著差异,那么可以认为两个样本来自同一个总体)是否存在了显著性差异。它的零假设&…

概率论:相关性与独立性

文章目录 (一) X与Z是相关还是独立?(二) 相关性与独立性的关系1.相关性 (线性关系)相关系数 ρ X Y ρ_{XY} ρXY​ 2.独立性 (无任何关系)3.相关性与独立性的关系 (三) 独立可加性 (XY独立且同类型分布) (一) X与Z是相关还是独立? 1.二维正态分布&…

spss中有关独立样本T检验的详细介绍(包含操作过程和结果分析)

SPSS学习记录day2 写在前面: 在上一篇里我们介绍了SPSS软件中平均值和单样本T检验两种比较平均值的方法,今天来介绍剩下的几个比较平均值的检验操作 分析>比较平均值 3.独立样本T检验 独立样本T检验类似于单样本T检验,不过独立样本T检验…