【机器学习】均方误差根(RMSE:Root Mean Squared Error)

news2024/11/24 20:25:43

均方误差根(Root Mean Squared Error,RMSE)是机器学习和统计学中常用的误差度量指标,用于评估预测值与真实值之间的差异。它通常用于回归模型的评价,以衡量模型的预测精度。

RMSE的定义与公式

给定预测值 \hat{y}_i 和实际值 y_i,均方误差根的公式如下:

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

其中:

  • n 是数据点的数量。
  • \hat{y}_i 是模型的预测值。
  • y_i 是真实值。

RMSE的计算步骤

  1. 求误差:计算预测值 y^i和实际值 yi之间的差值。
  2. 平方误差:将每个误差进行平方,得到正值,以消除正负误差的抵消影响。
  3. 求均值:将所有平方误差求和后,除以样本总数 n,得到均方误差(MSE)。
  4. 开方:对均方误差开平方根,得到 RMSE。

RMSE的性质和意义

  • 衡量误差大小:RMSE值越小,表明预测值与真实值越接近。
  • 单位一致:由于开平方根,RMSE的单位与原始数据的单位相同,便于解释。
  • 对大误差敏感:RMSE对大误差更敏感,因为平方放大了误差的影响,因此,RMSE在含有较多异常值的数据集中可能会偏高。

RMSE在机器学习中的应用

RMSE广泛用于评估回归模型,如线性回归、支持向量机回归、决策树回归等。它帮助分析模型的误差分布,找出需要改进的地方。

Python 实现均方误差根 (RMSE) 的计算

可以使用 Python 实现均方误差根 (RMSE) 的计算。以下是简单的代码示例:

import numpy as np

def rmse(y_true, y_pred):
    return np.sqrt(np.mean((y_pred - y_true) ** 2))

# 示例
y_true = np.array([3, -0.5, 2, 7])
y_pred = np.array([2.5, 0.0, 2, 8])

result = rmse(y_true, y_pred)
print("RMSE:", result)

说明

  1. y_true 是真实值数组。
  2. y_pred 是预测值数组。
  3. np.mean((y_pred - y_true) ** 2) 计算均方误差 (MSE)。
  4. np.sqrt(...) 取平方根得到 RMSE。

运行此代码将输出 RMSE 的结果。

图解 RMSE

均方误差根 (RMSE) 是回归分析中用来度量预测值和真实值之间偏差的指标。让我们从图解的角度直观理解 RMSE 的计算过程以及它在误差评估中的作用。

这张图展示了真实值与预测值的关系,以及每个点之间的误差(用灰色虚线表示)。图中蓝线代表真实值,而红色交叉点代表预测值。RMSE 被计算为这些误差的平方平均值的平方根,用来量化预测值与真实值的整体偏差程度。

在这个例子中,RMSE 值越小表示模型预测越准确。如果所有红色点都紧贴在蓝线上,RMSE 会接近 0,表示预测非常精确。

import 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 RMSE
rmse_value = np.sqrt(np.mean((y_pred - y_true) ** 2))

# 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='Errors')

# Adding text and labels
plt.xlabel("x")
plt.ylabel("y")
plt.title(f"Illustration of RMSE (Root Mean Squared Error)\nRMSE = {rmse_value:.2f}")
plt.legend()
plt.grid(True)
plt.show()
  • 绘制实际值和预测值的散点图

    • 在图中,我们将真实值 y 和预测值 \hat{y}​ 分别表示为点。假设我们有几个数据点,每个点都有一个真实值和一个预测值。
  • 误差的可视化

    • 对于每个数据点,计算预测值与真实值之间的差(误差),可以用垂直线段表示每对真实值和预测值之间的距离。
    • 例如,对于数据点 i,误差为 e_i = \hat{y}_i - y_i​。
  • 平方误差

    • 将每个误差平方,即 e_i^2​,这样可以确保所有误差均为正值。此步骤可以通过加粗或更长的线条来表示更大的误差平方。
  • 均方误差

    • 计算所有平方误差的平均值,这表示整体误差的平方平均水平。
  • 取平方根

    • 对均方误差 (MSE) 取平方根,得到 RMSE。这一步可以用直观的距离感来说明,即 RMSE 反映了预测值和真实值之间的平均距离。

RMSE 解释的图示要点

  • 误差增大效应:在图中,偏离实际值较大的点会显著影响 RMSE,因为平方会放大误差。
  • 越接近0越准确:图中 RMSE 越小,代表预测值越接近真实值;若 RMSE 为 0,则预测值完全等于真实值。

通过这样的图示,可以清楚看到 RMSE 对模型准确性和误差分布的敏感性。

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

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

相关文章

《计算机原理与系统结构》学习系列——存储器(上)

系列文章目录 目录 存储器技术概要存储器层次cache,内存辅存存储器技术SRAM技术DRAM技术闪存磁盘存储器 局部性原理 高速缓存cache访存性能概念命中与缺失访存阻塞的周期数 cache基础:直接映射块号内存地址字段缺失缺失处理和写策略 全相联映射组相连映…

python爬虫自动库DrissionPage保存网页快照mhtml/pdf/全局截图/打印机另存pdf

目录 零一、保存网页快照的三种方法二、利用打印机保存pdf的方法 零 最近星球有人问如何使用页面打印功能,另存为pdf 一、保存网页快照的三种方法 解决方案已经放在星球内:https://articles.zsxq.com/id_55mr53xahr9a.html当然也可以看如下代码&…

【Linux】进程概念与PCB,父子进程与foke函数

目录 一、进程概念: 描述: 组织: 二、Linux中的进程管理: 指令:ps ajx 三、父子进程: PID和PPID的调用查看: 四、创建子进程------fork: 一、进程概念: 首先&…

处理PhotoShopCS5和CS6界面字体太小

处理PhotoShop CS6界面字体太小 背景:安装PhotoShop CS6后发现无法调大字体大小,特别是我的笔记本14寸的,显示的字体小到离谱。 百度好多什么降低该电脑分辨率,更改电脑的显示图标大小,或者PS里的首选项中的界面设置。…

【Linux第八课-进程间通信】管道、共享内存、消息队列、信号量、信号、可重入函数、volatile

目录 进程间通信为什么?是什么?怎么办?一般规律具体做法 匿名管道原理代码 命名管道原理代码 system V共享内存消息队列信号量信号量的接口 信号概念为什么?怎么办?准备信号的产生信号的保存概念三张表匹配的操作和系统…

文件互传助手 v1.0

电脑和手机互传文件,经常需要找数据线,连着数据线还要下载安装手机助手,还要安装驱动识别手机,还要点手机那个连接模式,实在太麻烦了。 明明是一件简单的事情,往往需要很多层手续。有时会用到微信网页端作文…

Spring Boot 与 Vue 共筑航空机票预定卓越平台

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

面试总结!

OSI七层模型: 什么是OSI七层模型? 我们需要了解互联网的本质是一系列的网络协议,这个协议就叫做OSI协议(开放系统互联(Open System Interconnection)),它是由ISO(国际标准化组织&…

MATLAB实现智能水滴算法(Intelligent Water Drops Algorithm, IWDA)

1.智能水滴算法介绍 智能水滴算法(Intelligent Water Drops Algorithm,IWDA)是一种基于水滴特性的智能优化算法,它借鉴了水滴在自然界中的运动和形态变化规律,通过模拟水滴的形成、发展和消亡过程,实现问题…

RabbitMQ延迟队列(重要)

RabbitMQ延迟队列 1、延迟队列1.1、延迟队列使用场景1.2、延迟队列实现原理 2、使用rabbitmq-delayed-message-exchange 延迟插件2.1、下载2.2、安装2.2.1、解压2.2.2、启用插件2.2.3、查询安装情况 2.4、示例2.4.1、RabbitConfig配置类(关键代码)2.4.2、…

Tencent Hunyuan3D

一、前言 腾讯于2024年11月5日正式开源了最新的MoE模型“混元Large”以及混元3D生成大模型“Hunyuan3D-1.0”,支持企业及开发者在精调、部署等不同场景下的使用需求。 GitHub - Tencent/Hunyuan3D-1 二、技术与原理 Hunyuan3D-1.0 是一款支持文本生成3D(…

新品发布:广州大彩科技DB系列5.0寸带CAN/RS485外壳串口屏发布!

新品发布:广州大彩科技DB系列5.0寸带CAN/RS485外壳串口屏发布! 一、产品介绍 该产品是一款5寸的医疗级外壳系列组态串口屏,液晶屏采用800*480分辨率,拥有电阻触摸。硬件上针对工控行业,汽车行业串口使用RS485电平,并且另外加入了…

Js — 定时器

有两种:setInterval 和 setTimeout 间隔时间单位为毫秒 setInterval 每隔指定的毫秒数重复执行一个函数或代码 开启定时器:setInterval(函数,间隔时间) 作用:每隔一段时间调用这个函数 注意:它不是立即执行&#x…

WPF+MVVM案例实战与特效(二十六)- 3D粒子方块波浪墙效果实现

文章目录 1、案例效果2、案例实现1、文件创建2. 功能代码实现3、粒子功能应用1、前端布局与样式2、代码解释2、 后端功能代码1、案例效果 2、案例实现 1、文件创建 打开 Wpf_Examples 项目、Models 文件夹下创建 3D粒子模型类 ParticleCubeWaveModel.cs 文件。在Tools 文件夹…

Linux命令 - linux索引节点、硬链接、软链接的介绍与使用

文章目录 1 索引节点inode2 硬链接Hard Link3 软链接Soft Link 1 索引节点inode 在Linux系统中,保存在磁盘分区中的文件,不管是什么类型,系统都会给它分配一个编号,这个编号被称为索引节点编号(Inode Index&#xff0…

基于Python通过DOI下载文献(至简仅需2行代码)

文章目录 一、安装库二、导入库三、准备doi3.1 excel法3.1.1 检索数据3.1.2 导出excel 3.2 txt法3.3 列表or字符串法3.3.1 字符串3.3.2 列表 四、下载4.1 脚本4.2 下载成功4.3 已存在4.4 至于失败的 五、结果5.1 目标文件夹5.2 失败记录 一、安装库 pip install OAFuncs 二、导…

SpringBoot技术在企业资产管理中的应用

4系统概要设计 4.1概述 系统设计原则 以技术先进、系统实用、结构合理、产品主流、低成本、低维护量作为基本建设原则,规划系统的整体构架. 先进性: 在产品设计上,整个系统软硬件设备的设计符合高新技术的潮流,媒体数字化、压缩、…

OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示

当打开蓝牙后没有反应时,需要排查蓝牙节点是否对应、固件是否加载成功,本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法,触觉智能SBC3568主板演示 修改对应节点 开发板蓝牙硬件连接为UART1,修改对应的节点,路径为…

招标采购系统(源码+文档+部署+讲解)

本文将深入解析“招标采购系统(供应商管理系统)”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 包含基础数据管理、供应商和专家库管理,还涉及招标代理机构、政策法规和文件模板的管理。…

javascript里面的blob和worker

目录 Blob 1. Blob的基本概念 2. 创建Blob 3. Blob的属性和方法 示例: 3.1. Blob 的方法 4. 使用Blob 4.1 创建对象URL 4.2 使用FileReader读取Blob 4.3 上传Blob 5. Blob与其他对象的关系 6. 释放Blob对象 7. Blob的应用场景 8. 总结 Web Worker 1.…