问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

机器学习中的决定系数(R²):定义、计算及应用

创作时间:
作者:
@小白创作中心

机器学习中的决定系数(R²):定义、计算及应用

引用
CSDN
1.
https://blog.csdn.net/IT_ORACLE/article/details/143624121

决定系数(R²)是机器学习中衡量回归模型预测效果的重要统计指标。它表示模型解释目标变量总变异的程度,数值介于0和1之间,数值越接近1表明模型的解释力越强。本文将从定义、计算步骤、解释意义、优缺点、应用以及与其他误差指标的对比等多个维度对R²进行详细的阐述,并提供Python实现代码和图解示例。

1. 决定系数(R²)的定义和公式

决定系数(R²)的公式如下:

$$
R^2 = 1 - \frac{RSS}{TSS}
$$

其中:

  • $y_i$ 是真实值。
  • $\hat{y}_i$ 是模型的预测值。
  • $\bar{y}$ 是真实值的平均值。
  • $RSS$ 是残差平方和 (Residual Sum of Squares)。
  • $TSS$ 是总平方和 (Total Sum of Squares)。

从公式可以看出,$R^2$ 表示残差平方和占总平方和的比例。换句话说,$R^2$ 越接近 1,表示模型的预测越接近真实值,模型解释越充分。

2. 决定系数(R²)的计算步骤

计算 $R^2$ 的步骤如下:

  1. 计算真实值的平均值 $\bar{y}$。
  2. 计算残差平方和 $RSS$。
  3. 计算总平方和 $TSS$。
  4. 计算 $R^2$ 值,即使用公式 $R^2 = 1 - \frac{RSS}{TSS}$。

3. 决定系数(R²)的解释和意义

  • 解释度:$R^2$ 值表示自变量解释因变量变异的比例。例如,$R^2 = 0.8$ 表示模型能解释 80% 的目标变量变异。
  • 值域:$R^2$ 的取值范围通常为 [0, 1]。0 表示模型无法解释任何目标变量的变异,1 表示模型可以完全解释目标变量的变异。
  • 负值的情况:在某些情况下,当模型预测效果极差时(例如,模型欠拟合),$R^2$ 可能为负数。这表示预测值甚至比用平均值预测的效果更差。

4. 决定系数(R²)的优缺点

优点

  • 直观解释:$R^2$ 直接表示了模型对目标变量的解释力。
  • 适用性广:广泛应用于回归模型的效果评价。

缺点

  • 对样本大小敏感:在小样本数据中,$R^2$ 值容易偏高,可能夸大模型的预测效果。
  • 对异常值敏感:由于平方的存在,$R^2$ 对异常值敏感,异常值可能会过度影响结果。
  • 无法区分方向性:仅仅反映解释力,不反映模型预测的方向性,容易掩盖预测偏差。

5. 决定系数(R²)的应用

在回归分析、机器学习和经济学等领域,$R^2$ 是一种常用的评价指标。其应用场景包括:

  • 回归模型效果评价:常用于衡量线性回归、多项式回归等模型的解释力。
  • 经济和金融数据分析:例如评估某些经济指标对 GDP 增长的解释力。
  • 机器学习模型调优:用于评估模型的拟合程度,帮助选择合适的模型或调参。

6. 决定系数(R²)与其他误差指标的对比

指标
MAE
RMSE
计算方式
绝对误差
平方误差
残差平方和和总平方和之比
值域
非负值
非负值
[0, 1](可能为负数)
异常值敏感性
解释力
表示模型预测误差的均值
表示模型预测误差的均值
表示模型解释的变异比例

7. Python 实现代码

以下是计算 $R^2$ 的 Python 代码:

import numpy as np

def r2_score(y_true, y_pred):
    ss_res = np.sum((y_true - y_pred) ** 2)
    ss_tot = np.sum((y_true - np.mean(y_true)) ** 2)
    return 1 - (ss_res / ss_tot)

# 示例
y_true = np.array([3, -0.5, 2, 7])
y_pred = np.array([2.5, 0.0, 2, 8])
result = r2_score(y_true, y_pred)
print("R^2:", result)

运行结果

R^2: 0.9486081370449679

说明

  1. y_true 是真实值的数组,y_pred 是预测值的数组。
  2. ss_res 是残差平方和,表示误差的总量。
  3. ss_tot 是总平方和,表示目标变量的总变异。
  4. 1 - (ss_res / ss_tot) 得出 $R^2$ 值,表示模型对数据变异的解释程度。

8. 决定系数(R²)图解示例

下面将生成一个包含 $R^2$ 计算图解的图示,以便更清楚地理解 $R^2$ 在模型解释力上的作用。

上图展示了 $R^2$ 的计算过程,其中:

  • 蓝色圆点连线表示真实值 $y_i$。
  • 红色叉点连线表示模型的预测值 $\hat{y}_i$。
  • 每条灰色虚线表示预测值与真实值之间的差距,即残差。

为了更直观地理解 $R^2$,我们可以用一个散点图展示真实值和预测值的分布:

  1. 绘制真实值与预测值的散点图:展示所有数据点的真实值与预测值之间的差异。
  2. 展示总平方和 (TSS):每个数据点到真实值均值的垂直线表示目标变量的总变异。
  3. 展示残差平方和 (RSS):每个数据点到预测值的垂直线表示模型预测误差。
  4. 理解解释力:图中 $R^2$ 值越大,模型预测值越接近真实值,即解释力越高。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号