当前位置: 首页 > 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.lryc.cn/news/585410.html

相关文章:

  • MCU芯片内部的ECC安全机制
  • 上位机知识篇---Docker
  • 新型变种木马正在伪装成Termius入侵系统
  • OpenCV多种图像哈希算法的实现比较
  • 什么是IP关联?跨境卖家如何有效避免IP关联?
  • DOM编程实例(不重要,可忽略)
  • 从Excel到PDF一步到位的台签打印解决方案
  • 扫描文件 PDF / 图片 纠斜 | 图片去黑边 / 裁剪 / 压缩
  • cnpm exec v.s. npx
  • Java基础-String常用的方法
  • 用AI做带货视频评论分析【Datawhale AI 夏令营】
  • 进程管理中的队列调度与内存交换机制
  • MinIO配置项速查表【五】
  • 云原生周刊:镜像兼容性
  • 「Linux命令基础」Shell命令基础
  • 从零到一:深度解析汽车标定技术体系与实战策略
  • React 的常用钩子函数在Vue中是如何设计体现出来的。
  • WinForm三大扩展组件:ErrorProvider、HelpProvider、ToolTipProvider详解
  • Apache Cloudberry 向量化实践(二):如何识别和定位向量化系统的性能瓶颈?
  • 资源分享-FPS, 矩阵, 骨骼, 绘制, 自瞄, U3D, UE4逆向辅助实战视频教程
  • Oracle 数据库 Dblink
  • PySpark中python环境打包和JAR包依赖
  • tensor
  • Word表格默认格式修改成三线表,一劳永逸,提高生产力!
  • 上位机知识篇---高效下载安装方法
  • 05 rk3568 debian11 root用户 声音服务PulseAudio不正常
  • PyTorch 与 Spring AI 集成实战
  • 2025Nginx最新版讲解/面试
  • 【yolo】模型训练参数解读
  • 七、gateway服务创建