【机器学习】平均绝对误差(MAE:Mean Absolute Error)

平均绝对误差 (Mean Absolute Error, MAE) 是一种衡量预测值与实际值之间平均差异的统计指标。它在机器学习、统计学等领域中广泛应用,用于评估模型的预测精度。与均方误差 (MSE) 或均方误差根 (RMSE) 不同,MAE 使用误差的绝对值,因此它在处理异常值时更加稳定。

1. MAE 的定义和公式

给定预测值 \hat{y}_i​ 和真实值 y_i,MAE 的公式为:

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

其中:

  • n 是样本总数。
  • \hat{y}_i 是模型的预测值。
  • y_i​ 是对应的真实值。

MAE 表示了预测值与真实值之间的平均绝对差异。由于取了绝对值,每个误差的正负号被忽略,保证了所有差异的非负性。

2. MAE 的计算步骤

计算 MAE 的步骤如下:

  1. 求出误差:计算预测值 \hat{y}_i 与真实值 y_i 之间的差异。
  2. 取绝对值:计算每个误差的绝对值,以确保所有差异都是正值。
  3. 求均值:将所有误差的绝对值加总,并除以样本数量 n,得到 MAE。

3. MAE 的性质和意义

  • 易于解释:MAE 具有与原始数据相同的单位,直接表示预测值与真实值的平均差距,因而易于理解和解释。
  • 对异常值更稳定:相比 MSE 和 RMSE,MAE 对异常值不敏感,不会因为少数大误差的平方而放大结果,适用于具有较多异常值的数据集。
  • 偏好绝对误差:由于 MAE 忽略了误差的正负号,它无法提供误差的方向性信息。

4. MAE 的优缺点

优点

  • 简单直观:MAE 仅计算绝对误差的平均值,简单明了。
  • 对异常值稳定:由于没有误差平方的放大效应,MAE 不易受异常值的影响,更能反映数据的整体趋势。

缺点

  • 缺乏方向性:由于计算绝对误差,MAE 无法反映出误差是正偏还是负偏,可能不适用于需要区分偏差方向的应用场景。
  • 较低的区分度:MAE 没有放大误差的功能,因此在评估较复杂模型的表现时,可能没有 RMSE 那样敏感。

5. MAE 的应用

MAE 是回归问题中常用的评估指标,广泛应用于以下场景:

  • 时间序列预测:在金融、气象等时间序列预测问题中,MAE 可以用来评估预测精度。
  • 经济预测:在经济领域,MAE 用于衡量经济指标的预测偏差,帮助判断模型的可靠性。
  • 机器学习模型的比较:MAE 在回归模型的评估中用于衡量不同模型的预测效果,是算法调优时

6.Python 实现代码

import numpy as npdef mae(y_true, y_pred):return np.mean(np.abs(y_pred - y_true))# 示例
y_true = np.array([3, -0.5, 2, 7])
y_pred = np.array([2.5, 0.0, 2, 8])result = mae(y_true, y_pred)
print("MAE:", result)

说明

  1. y_true 为真实值数组,y_pred 为预测值数组。
  2. np.abs(y_pred - y_true) 计算每个误差的绝对值。
  3. np.mean(...) 求所有误差的绝对值的平均,得到 MAE。

图中 MAE 值越小表示预测越准确。

7. MAE 的图解说明

上图展示了 MAE 的计算过程,其中:

  • 蓝色圆点连线代表真实值 y。
  • 红色叉点连线代表预测值 \hat{y}​。
  • 每条灰色虚线表示预测值和真实值之间的绝对误差。
# MAE Python implementation and visualizationimport numpy as np
import matplotlib.pyplot as plt# Generate sample data for illustration
np.random.seed(0)
x = np.linspace(0, 10, 10)                   # Independent variable (e.g., input feature)
y_true = 2 * x + 1                           # True relationship (e.g., ground truth values)
y_pred = y_true + np.random.normal(0, 2, 10) # Predicted values with random noise# Calculate MAE
mae_value = np.mean(np.abs(y_pred - y_true))# Plotting the true vs. predicted values with errors
plt.figure(figsize=(10, 6))
plt.plot(x, y_true, label="True Values", color="blue", marker='o')
plt.plot(x, y_pred, label="Predicted Values", color="red", marker='x')
plt.vlines(x, y_true, y_pred, colors='gray', linestyles='dotted', label='Absolute Errors')# Adding text and labels
plt.xlabel("x")
plt.ylabel("y")
plt.title(f"Illustration of MAE (Mean Absolute Error)\nMAE = {mae_value:.2f}")
plt.legend()
plt.grid(True)
plt.show()

可以用垂直线表示预测值与实际值之间的绝对误差,每条线段的长度对应于预测值和真实值的差异。以下是一个 MAE 的计算图解步骤:

  1. 绘制真实值和预测值的散点图:将实际值和预测值分别绘制在坐标图上。
  2. 计算误差:每个预测点到真实点的垂直线段代表误差的绝对值。
  3. 平均误差长度:将这些垂直线段的长度平均,即得到 MAE。

通过这样的图示,MAE 能帮助直观展示预测结果与实际情况的整体差异。

8. MAE 与 RMSE 的对比

指标MAERMSE
计算方式绝对误差的均值平方误差的均值开平方根
对异常值敏感性
是否反映方向性
应用场景数据含有较多异常值的数据集对精度要求高的数据分析场景

9. 结论

MAE 是一种简单、直观且对异常值较为稳定的误差度量方法。它适合用于需要估计预测与真实值间差距的应用场景。对于希望避免极端值过度影响的情况,MAE 是一个有效的选择。而在需要更精细的模型评价时,通常会与 RMSE 一起使用,从而更全面地评估模型的预测表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目功能--运营数据统计

一、需求分析 通过运营数据统计可以展示出体检机构的运营情况,包括会员数据、预约到诊数据、热门套餐等信息。我们要通过一个表格的形式来展示这些运营数据。如下图: 二、代码实现 实现步骤: 步骤一:定义数据模型,通过…

网络安全技术在能源领域的应用

摘要 随着信息技术的飞速发展,能源领域逐渐实现了数字化、网络化和智能化。然而,这也使得能源系统面临着前所未有的网络安全威胁。本文从技术的角度出发,探讨了网络安全技术在能源领域的应用,分析了能源现状面临的网络安全威胁&a…

wangeditor富文本编辑器以文本的形式展示公式

最终展示的效果 1.首先将要传给后端的富文本值进行转化 //假设workContent是富文本写入的值this.workContent this.escapeHTML(this.workContent)//通过escapeHTML方法转化传给后端 methods:{escapeHTML(str) {return str.replace(/&/g, &) // 将 & 替换为…

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪BD311R 发布时间: 2024-10-23 11:28:42 一、 产品图片: 二、 产品特性: 4G性能:支持2K超高清图传,数据传输不掉帧,更稳定。 独立北…

【自学笔记】神经网络(2) -- 模型评估和优化

文章目录 划分数据集训练集和测试集训练误差 测试误差交叉验证测试集 偏差与方差偏差方差表现基准 学习曲线error - train set sizeerror - degree of polynomial 数据增强迁移学习项目的完整周期样本不平衡问题精确率和召回率精确率与召回率的平衡 划分数据集 我们当然希望把所…

Windows 局域网IP扫描工具:IPScaner 轻量免安装

IPScaner是一款258KB的工具,具备快捷修改IP、批量扫描、地址计算等功能,自动识别本机IP网段,快速查看IP使用情况,适用于监控维护、企业IT运维等场 软件功能介绍: 1)快捷修改本地IP、IP批量扫描、IP地址计算…

2024 年Postman 如何安装汉化中文版?

2024 年 Postman 的汉化中文版安装教程

SQL面试题——飞猪SQL面试 重点用户

飞猪SQL面试题—重点用户 在一些场景中我们经常听到这样的一些描述,例如20%的用户贡献了80%的销售额,或者是20%的人拥有着80%的财富,你知道这样的数据是怎么算出来的吗 数据如下,uid 是用户的id ,amount是用户的消费金额 |uid|amount| ---…

fork函数详解

前言 之前我们提到,创建子进程的时候,需要使用fork()函数,其中分别有id 0和id >0的if函数,但是实验表明,两个if函数中的内容都得到了实现。按照我们之前所学,一个变量同一时间只能有一个值,…

OkHttp网络请求框架

添加依赖 在 build.gradle 文件中添加 OkHttp 依赖: dependencies {implementation("com.squareup.okhttp3:okhttp:4.10.0") }使用OkHttp发起GET请求 同步请求 public class MainActivity extends AppCompatActivity {// Used to load the okhttptes…

Ue5 umg学习(三)文本控件

从通用中,选择文本控件 将其拉入画布中,和图像控件使用方法类似。 右边是字形,尺寸,字间距。 可以导入字形,使用,不过要注意,不要导入FZ系字体,不然可能会涉及侵权 修改尺寸会修…

wireshark演进之路——从GTK到Qt

Wireshark 自 1998 年诞生至今,已有超过26年的历史了。它最早由 Gerald Combs 创建,最初名为 Ethereal。2006 年,Ethereal 更名为 Wireshark,并继续发展成了全球领先且人尽皆知的网络协议分析工具,其GUI演变就是其中非…

【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩

1. rowkey的设计 ​ RowKey可以是任意字符串,最大长度64KB,实际应用中一般为10~100bytes,字典顺序排序,rowkey的设计至关重要,会影响region分布,如果rowkey设计不合理还会出现region写热点等一系列问题。 …

JavaWeb后端开发案例——苍穹外卖day01

day1遇到问题: 1.前端界面打不开,把nginx.conf文件中localhost:80改成81即可 2.前后端联调时,前端登录没反应,application.yml中默认用的8080端口被占用,就改用了8081端口,修改的时候需要改两个地方&…

Centos7镜像下载与docker安装

注意: CentOS 7 已于2024年6月30日停止维护! 1、下载 由于 centos 7 已经停止维护,部分镜像网站移除了对centos 7的支持,这里找到了部分现在还可以使用的镜像网站 阿里云开源镜像站:https://mirrors.aliyun.com/cent…

科技云报到:数字化转型,从不确定性到确定性的关键路径

科技云报到原创。 数字化转型是VUCA时代最大的确定性。 如果说,过去是数字化转型的试验阶段,实施的是开荒动土、选种育苗,那么当前要进行的是精耕细作、植树造林,数字化转型已进入了由个别行业、个别场景的“点状应用”向各行各业…

AgentReview:基于 LLM Agents 模拟同行评审过程的框架

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号&#xff…

如何查看电脑关机时间

要查看电脑的关机时间,可以按照以下步骤进行操作: 1. 打开事件查看器:按下键盘上的Windows键R键,然后在弹出的运行对话框中输入"eventvwr.msc",并按下Enter键。 2. 在事件查看器窗口中,单击左侧窗…

详解Gemini API的使用:在国内实现大模型对话与目标检测教程

摘要:本博客介绍了如何利用Gemini API实现多轮对话和图像目标检测识别功能,在Python中快速搭建自己的大模型完成实际任务。通过详细的步骤解析,介绍了如何申请Gemini API密钥,调用API、对话实现的代码,给出了上传图片识…

HashMap的put流程知道吗

HashMap 的 put 方法算是 HashMap 中比较核心的功能了,复杂程度高但是算法巧妙,同时在上一版本的基础之上优化了存储结构,从链表逐步进化成了红黑树,以满足存取性能上的需要。本文逐行分析了 put 方法的执行流程,重点放…