今天浅谈一下本人对决定系数R2的理解,我们在对模型进行训练时,经常会用到决定系数R2这一模型评价指标,在对训练集和测试集进行模型评价时,经常会出现决定系数R2不在[0,1]之间,而是出现标题所说的情况:决定系数R2为什么计算出来小于0/为负数、大于1/远大于1、决定系数R2为什么计算出来不在0~1之间?
在百度百科上以及相关资料上(在百度百科上叫:确定系数或可决系数),决定系数的定义常见有如下两种:
其中关于总平方和Stot、回归平方Sreg和以及残差平方和Stot的定于如公式(3)、(4)、(5):
公式(1)~(5)在网上以及相关资料均能找到证明,在此便不花费时间证明其正确性。
根据公式(1)、(2)决定系数的定义,我们可以很明显的感受到,公式(1)的计算结果一定是大于0的,稍加证明,也能证明其小于1,即公式(1)的R2在[0,1]之间。具体我们看总平方和Stot、回归平方Sreg和以及残差平方和Stot之间的关系:
请记住式(6)这个部分,关于本文所写的决定系数R2以及网上很多关于决定系数R2出现问题的部分就是这个部分,这里我们假设它是成立的(大部分资料里都是默认成立的),后面的文章我会介绍这部分内容。
根据式(6),我们可以很容易得到式(1)中的R2范围:
因为这三个平方和都是平方的关系,所以都是一定大于等于0 的,从式(7)很容易判断分子一定是小于等于分母的,故由式(7)很容易计算出R2在[0,1]之间。
同时,根据式(6),也很容易推断出式(2)的R2的定义,实际上,我们很多朋友在进行模型评价时,使用的都是式(2)所示的决定系数R2。
由式(8)可以看到式(8)与式(7)是完全等价的,但是,注意一个前提,我们是在式(6)成立的时候才能证明这两者相等,但是很多朋友计算出来R2小于0的情况,往往是使用式(8)引起的,甚至同样的预测值和观测值,式(1)跟式(2)两种计算出来R2不一样 。
这里我用一个简单的例子来验证一下上述两者计算结果会出现不一样的问题,假设我们的观测值y=[1 2 3];我们的预测值y'=[2 3 4];我们分别用式(1)、(2)计算一下最终的结果。
上述这个例子我不知道有没有问题,但是假设我们的预测结果不好,就如我这个例子一样,两个式子计算得出的R2就是不一样有问题的,一个大于1,一个小于0。这个问题很大程度上是关于式(6)满不满足,实际上大部分情况下不好满足,后续文章会出关于式(6)的证明。
通过这个例子其实说明在模型评价时使用决定系数R2是 会出现本文标题所说的情况的,但是出现这种情况也很大程度上说明了模型训练的不好,或者模型不适合这个数据集,并不是说我们所使用的R2有问题。
如有不足之处,还请各位批评指正!
记得点赞,收藏,关注一键三连,谢谢未来的各位工程师、教授、院士……!