一、 Mean Absolute Error

平均绝对误差(MAE)也是一种常用的回归损失函数,它是目标值yjy_{j}yj​与预测值yj^\hat{y_{j}}yj​^​之差绝对值的和,表示了预测值的平均误差幅度,而不需要考虑误差的方向,其公式如下所示:
MAE=1N∑i=1N∣yj−yj^∣MAE= \frac{1}{N} \sum_{i =1}^{N} |y_{j} - \hat{ y_{j} } | MAE=N1​i=1∑N​∣yj​−yj​^​∣

二、 Mean Square Error

均方误差(MSE)用于计算预测值yj^\hat{y_{j}}yj​^​与真实值yjy_{j}yj​之间差的平均值,其公式如下所示:
MSE=1N∑i=1N(yj−yj^)2MSE = \frac{1}{N}\sum_{i=1}^{N}(y_{j}-\hat{y_{j}})^2MSE=N1​i=1∑N​(yj​−yj​^​)2

三、 代码实现MAE和MSE

import numpy as np
import matplotlib.pyplot as pltdef MAE_Loss(act, pred):diff = act - preddiff_abs = np.absolute(diff)mae = diff_abs.mean()return maedef MSE_Loss(act, pred):diff = act - preddiff_square = diff ** 2mse  = diff_square.mean()return mse'''
create an array containning 500 numbers,
the value range is between -1 and 1.
'''
pred = np.linspace(-1., 1., 500)
# the actual value is 0
target = 0.
l1_y = []
l2_y = []
for x in pred:y = MAE_Loss(target, x)l1_y.append(y)for x2 in pred:y2 = MSE_Loss(target, x2)l2_y.append(y2)
plt.plot(pred, l1_y, label="L1_loss")
plt.plot(pred, l2_y, label="L2_loss")
plt.legend()

结果图:

四、 MAE与MSE的比较

通常来说,利用均方差更容易求解,但平方绝对误差则对于局外点更鲁棒。
在机器学习的模型通常是用来找到使目标函数最小的点。在最小值处每一种损失函数都会得到最小值。

MAE优于MSE的情况
由上图可知,当预测值与目标值很接近,误差与方差都很小,而由于局外点的存在使得 MSE误差变得很大。
由于均方误差(MSE)在误差较大点时的损失远大于平均绝对误差(MAE),它会给局外点赋予更大的权重,模型会致力减小局外点造成的误差,从而使得模型的整体表现下降。
所以当训练数据中含有较多的局外点时,平均绝对误差(MAE)更为有效。当我们对所有观测值进行处理时,如果利用MSE进行优化则我们会得到所有观测的均值,而使用MAE则能得到所有观测的中值。与均值相比,中值对于局外点的鲁棒性更好,这就意味着平均绝对误差对于局外点有着比均方误差更好的鲁棒性。
** MSE优于MAE的情况**

但MAE也存在一个问题,特别是对于神经网络来说,它的梯度在极值点处会有很大的跃变,及时很小的损失值也会长生很大的误差,这不利于学习过程。为了解决这个问题,需要在解决极值点的过程中动态减小学习率。MSE在极值点却有着良好的特性,及时在固定学习率下也能收敛。MSE的梯度随着损失函数的减小而减小,这一特性使得它在最后的训练过程中能得到更精确的结果。

总结

L1损失对于局外点更鲁棒,但它的导数不连续使得寻找最优解的过程低效;L2损失对于局外点敏感,但在优化过程中更为稳定和准确。
但现实中还存在两种损失都很难处理的问题。例如某个任务中90%的数据都符合目标值——150,而其余的10%数据取值则在0-30之间。那么利用MAE优化的模型将会得到150的预测值而忽略的剩下的10%(倾向于中值);而对于MSE来说由于局外点会带来很大的损失,将使得模型倾向于在0-30的方向取值。这两种结果在实际的业务场景中都是我们不希望看到的。

参考的博客:
https://zhuanlan.zhihu.com/p/376024235

平均绝对值误差(L1_Loss)和 均方误差(L2_Loss)相关推荐

  1. 利用pytorch实现平均绝对值误差(MAE)

    LOSS functions L1Loss CLASS torch.nn.L1Loss(size_average=None, reduce=None, reduction='mean') 创建一个标准 ...

  2. python mse_python 计算平均平方误差(MSE)的实例

    我们要编程计算所选直线的平均平方误差(MSE), 即数据集中每个点到直线的Y方向距离的平方的平均数,表达式如下: MSE=1n∑i=1n(yi−mxi−b)2 最初麻烦的写法# TODO 实现以下函数 ...

  3. (均方、均方根、平均绝对值、标准)误差

    转自链接:https://blog.csdn.net/m0_37138008/article/details/102527468 1.均方误差(Mean square Error) 真实值与预测值的差 ...

  4. [人工智能-深度学习-9]:神经网络基础 - 常见loss损失函数之均分误差MSE、绝对值误差MAE、平滑平均绝对误差Huber

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  5. 【ANFIS 回归预测】基于平均定位误差 D 的 ANFIS 实现数据非线性回归附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  6. 深度学习——fastai第四课 04_minist_basics

    文章目录 幕后:训练一个数字分类器 像素:计算机视觉的基础 边栏:韧性和深度学习 初尝试:像素相似 NumPy 数组和PyTorch 张量 使用广播计算评价指标 随机梯度下降(SGD) 计算梯度 通过 ...

  7. 深度学习中的损失函数总结以及Center Loss函数笔记

    北京 上海巡回站 | NVIDIA DLI深度学习培训 2018年1月26/1月12日 NVIDIA 深度学习学院 带你快速进入火热的DL领域 阅读全文                        ...

  8. 原创 | 常见损失函数和评价指标总结(附公式代码)

    作者:董文辉 本文长度为4500字,建议阅读10+分钟 本文为你总结常见损失函数和评价指标. 目录 一.损失函数 1.1 回归问题 1.2 分类问题 二.评价指标 2.1 回归问题 2.2 分类问题 ...

  9. 原创 | 常见损失函数和评价指标总结(附代码)

    作者:董文辉 本文长度为4500字,建议阅读10+分钟 本文为你总结常见损失函数和评价指标. 注:本文采用markdown进行编写,用markdown打开可得更佳展示效果- ## 1. 损失函数: # ...

  10. 常见损失函数和评价指标总结

    作者:董文辉 本文长度为4500字,建议阅读10+分钟 本文为你总结常见损失函数和评价指标. 注:本文采用markdown进行编写,用markdown打开可得更佳展示效果- ## 1. 损失函数: # ...

最新文章

  1. tar 和gzip 的区别
  2. PAT(甲级)2019年春季考试 7-4 Structure of a Binary Tree
  3. Java常见的面试算法题:实现两个线程交替打印1到100的数
  4. MVC 中的Model对象
  5. java多维数组的指针_Java基础之二维数组
  6. 洛谷 3381 【模板】最小费用最大流
  7. redis核心与实战(一)数据结构篇
  8. Oracle物化视图的创建及使用(一
  9. GB35114—②、公共安全视频监控联网信息安全系统互联结构
  10. android浏览器病毒,2018安卓手机杀毒软件排行榜
  11. class 文件比较
  12. SAP Transactions
  13. 蒙特卡罗算法的matlab实现
  14. PPT演讲时投影仪显示技巧:分屏演示PPT,你可同时看见备注
  15. 2012浙大计算机考研分数线,2012浙江大学考研分数线
  16. DOCK6.9学习(VII)
  17. mysql YEARWEEK(date[,mode]) 函数
  18. java 中加载图片
  19. 不知道如何选择可视化图形?9大类别数据图表教你使用最佳表达图形
  20. oracle数据文件被误删或损坏故障处理

热门文章

  1. 数据评估:SD(标准差), 方差, 方差分析(ANOVA)
  2. 芯片和计算机专业的关系,cpu是芯片吗?芯片和cpu是什么关系?
  3. 1.数字芯片后端设计小概述
  4. 文献解读-物理信息深度学习(PINN)
  5. Unity免费资源汇总
  6. 【高等数学】平面束方程的俩种设法与其中一种设法会出现的漏解问题
  7. Undefined symbols for architecture x86_64:xxxxxx, referenced from:
  8. 发票专用驱动sjz_税务局紧急提醒!10月31日前,不能领票,不能勾选!11月1日后,发票开具将大不同!...
  9. QT入门(一)——QT概述
  10. RISV-Reader小结