当前位置: 首页 > news >正文

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

均方误差根(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 npdef 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.lryc.cn/news/480595.html

相关文章:

  • [含文档+PPT+源码等]精品基于springboot实现的原生Andriod广告播放系统
  • 【机器学习】均方误差(MSE:Mean Squared Error)
  • 融合虚拟与现实,AR Engine为用户提供沉浸式交互体验
  • python | xmltodict,一个非常厉害的 关于XML数据 Python 库!
  • 教程:FFmpeg结合GPU实现720p至4K视频转换
  • MeterSphere接口自动化-ForEach循环
  • ssm074应急资源管理系统+jsp(论文+源码)_kaic
  • 怎么对 PDF 添加权限密码或者修改密码-免费软件分享
  • LVSM: A LARGE VIEW SYNTHESIS MODEL WITH MINIMAL 3D INDUCTIVE BIAS 论文解读
  • 7.《双指针篇》---⑦三数之和(中等偏难)
  • 鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)
  • mybatis连接PGSQL中对于json和jsonb的处理
  • Redis 权限控制(ACL)|ACL 命令详解、ACL 持久化
  • 内网学习一:windows基础
  • 编译工具与文件学习(一)-YAML、repos、vcstoolcolcon
  • 使用 HuggingFace 提供的 Elasticsearch 托管交叉编码器进行重新排名
  • CKA认证 | Day1 k8s核心概念与集群搭建
  • [极客大挑战 2019]PHP 1
  • 【c++丨STL】vector模拟实现
  • SQLAlchemy 介绍与实践
  • docker进行SRS直播服务器搭建
  • windows server2019下载docker拉取redis等镜像并运行项目
  • 数据结构(8.7_2)——败者树
  • 设计模式-七个基本原则之一-里氏替换原则
  • k8s中基于overlay网络和underlay网络的网络插件分别有哪些
  • 一文详解java的数据类型
  • Flink API 的层次结构
  • lua入门教程:math
  • ROS2简介与Ubuntu24.04中安装指南
  • 命令行工具PowerShell使用体验