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

R² 决定系数详解:原理 + Python手写实现 + 数学公式 + 与 MSE/MAE 比较

在回归任务中,评估模型好坏的指标有很多,除了常见的 MAE(平均绝对误差)、MSE(均方误差)、RMSE(均方根误差)之外,R²(决定系数) 也是非常常见且直观的重要指标。

✅ 一、什么是 R²?

,又叫 决定系数(coefficient of determination),是衡量模型拟合优度的一个指标。通俗来讲,R² 表示模型解释了多少比例的目标变量方差:

  • R² 越接近 1,说明模型越好;

  • R² 等于 0,说明模型还不如直接用均值来预测;

  • R² 小于 0,表示模型效果很差,比“瞎猜”还糟糕。

🧠 二、R² 的数学公式 

我们先来看它的数学定义:

R^2 = 1 - \frac{SS_{\text{res}}}{SS_{\text{tot}}} = 1 - \frac{\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2}

其中:

  • $R^2$:决定系数,衡量模型解释方差的能力

  • $y_i$:第 i 个样本的真实值

  • \hat{y}_i​:第 i 个样本的预测值

  • \bar{y}​:真实值的均值

  • SS_{\text{res}}:残差平方和(Residual Sum of Squares),衡量预测误差

  • SS_{\text{tot}}:总变差(Total Sum of Squares),衡量总波动

💻 三、Python手动实现 R²(不使用sklearn) 

def r2_score_manual(y_true, y_pred):mean_y = sum(y_true) / len(y_true)ss_tot = sum((yt - mean_y) ** 2 for yt in y_true)ss_res = sum((yt - yp) ** 2 for yt, yp in zip(y_true, y_pred))return 1 - ss_res / ss_tot# 示例
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]print("R² score:", r2_score_manual(y_true, y_pred))  # 输出接近 0.948

🔍 四、R² 与 MAE、MSE、RMSE 的区别和联系 

指标含义单位对异常值敏感解释性
MAE平均绝对误差较低每个误差权重相同
MSE平均平方误差是(平方单位)放大大误差
RMSE均方根误差(MSE 开根号)与原始单位一致
决定系数,模型拟合优度无单位较敏感衡量解释能力强弱
  • MAE:稳健,不惩罚大误差;

  • MSE/RMSE:适合注重大误差的场景,如金融风险;

  • :衡量模型“解释了多少方差”,是一个更宏观的评估标准。

🧩 五、总结

  • R² 是一个 相对指标,并非误差的绝对值,而是比较预测值与均值的差距;

  • 在多个模型之间进行对比时,R² 是一个很直观的参考;

  • 若配合 MAE / RMSE 使用,可以获得更全面的模型评估视角。

http://www.dtcms.com/a/273715.html

相关文章:

  • 模拟实现unordered_map
  • 《月亮与六便士》:天才的背叛与凡人救赎的残酷辩证法
  • [Dify] -基础入门4-快速创建你的第一个 Chat 应用
  • vscode 中的 mermaid
  • Go语言WebSocket编程:从零打造实时通信利器
  • Lecture #20:Database Logging
  • 用TensorFlow进行逻辑回归(二)
  • 如何将ONLYOFFICE文档集成到Go网页应用中
  • 大模型在卵巢癌预测及诊疗方案制定中的应用研究
  • 香港站群服务器8C/4C/2C/1C有什么区别
  • Jenkins 分布式和并发构建
  • 借助 Wisdom SSH AI 助手,轻松安装 CentOS 8 LNMP 环境
  • 高速路上的 “阳光哨兵”:分布式光伏监控系统守护能源高效运转
  • 专题 字符串 Unicode
  • LLaMA-Factory安装部署
  • uniapp实现微信小程序端图片保存到相册
  • 深入拆解Spring思想:DI(依赖注入)
  • Python-正则表达式-信息提取-滑动窗口-数据分发-文件加载及分析器-浏览器分析-学习笔记
  • 榫卯企业云平台自服务中心模块(SSC)关键能力解读
  • 数据库报错:Column ‘xxx‘ in field list is ambiguous
  • 2025年体育科学与健康大数据国际会议(ICSSHBD 2025)
  • 在 GitHub 上创建私有仓库
  • 如何在 Windows 10 上安装设置 Apache Kafka
  • hive/spark sql中unix_timestamp 函数的坑以及时间戳相关的转换
  • AI技术正以前所未有的速度重塑职业生态与行业格局,尤其在自动化测试领域,AI驱动的测试框架通过智能化、低代码化重构传统测试流程。
  • PySpark中python环境打包和JAR包依赖
  • spark3 streaming 读kafka写es
  • Google Benchmark 介绍和使用指南
  • 流批一体的“奥卡姆剃刀”:Apache Cloudberry 增量物化视图应用解析
  • CReFT-CAD 笔记 带标注工程图dxf,png数据集