R方

783 阅读2分钟

R方是统计学里常用的统计量,在不同任务模型下的解读和用途不一,有时候会出现误用情况。本文总结了对R方的理解和用法,遵循“从一般到特殊”的思路,先讲一般回归模型中的R方,再讲线性回归模型里的R方。"一般"回归模型包括线性模型,随机森林,神经网络等。

  • R方的定义

R方的名字是coefficient of determination,另一个名字是Nash–Sutcliffe model efficiency coefficient。给定一系列真值 yiy_i 和对应的预测值y^i\hat y_i, 另有yˉ\bar y为期望均值,R方的定义为

R2=1i(y^iyi)2i(yiyˉ)2R^2=1-\frac{\sum_i (\hat y_i-y_i)^2}{\sum_i(y_i-\bar y)^2}

R方的含义是,预测值解释了 yiy_i 变量的方差的多大比例,衡量的是预测值对于真值的拟合好坏程度。通俗理解,假定 yiy_i 的方差为1个单位,则R方表示"使用该模型之后, yiy_i的残差的方差减少了多少"。比如R方等于0.8,则使用该模型之后残差的方差为原始 yiy_i 值方差的20%。

后边的分式中,分子是预测值与真实值的差方和,分母是真实值与均值的差方和,对一个样本来说,分母是固定的,当分子上预测值和真实值相当接近时,分子就非常的小,R方值就趋近于1,表示预测的就越准;如果预测值和均值很接近,那么分式就比较接近于1,R方接近于0,也就是胡乱用平均值来应付预测也可以得到一个R方为0的结果;如果预测值和真实值差别相当的大,后边的分式结果就比较大了,方差值就非常小(当然可能是负数,比用平均值来预测都差的结果啊)。

  • R方=1:最理想情况,所有的预测值等于真值。
  • R方=0:一种可能情况是"简单预测所有y值等于y平均值",即所有 y^i\hat y_i 都等于yˉ\bar y(即真实y值的平均数),但也有其他可能。
  • R方<0:模型预测能力差,比"简单预测所有y值等于y平均值"的效果还差。这表示可能用了错误模型,或者模型假设不合理。
  • R方的最小值没有下限,因为预测可以任意程度的差。因此,R方的范围是 (−∞,1] 。
  • 注意:R方并不是某个数的平方,因此可以是负值

Python里的scikit-learn包里,sklearn.metrics.r2_score即是R方的实现。sklearn的RandomForestRegressor等回归模型中,带有score(self, X, y)的函数,这个函数返回的是根据X得到的预测值和真值y的R方。