R2一定大于0吗?判定系数 R-square (R2)的定义和取值范围讨论

一般常用\(R^{2}\)(判定系数,拟合优度)评价拟合及回归效果的好坏,学过数学或统计学的同学会有这样的印象,\(R^{2}\)的取值范围为[0,1],\(R^{2}\)的值越接近1代表拟合效果越好,越接近0代表拟合效果越差。
但是,在使用一些人工神经网络库训练模型时(例如:sklearn,pytorch等),这些库内置的计算\(R^{2}\)的方法有时会计算出负值(一般是在模型训练效果很差的情况下)。那么问题来了,\(R^{2}\)一定大于0吗?负值产生的原因又是什么呢?

事实上,造成这一现象的原因是\(R^{2}\)存在两种十分相似的定义。其中一种\(R^{2}\)的定义域包含负值。

  1. \(R^{2}\)定义域为[0,1]时的定义:

设自变量为\(x_{i}\),其对应的观测值为\(y_{i}\),观测值的平均值为\(\bar{y}\),此时,原始数据\(y_{i}\)的总变异平方和(total sum of squares)为

\[SS_{tot}=\sum_{i=1}^{n}(y_{i}-\bar{y})^{2} \]

一元线性回归方程(\(\hat{y_{i}}=\hat{\beta_{0}}+\hat{\beta_{1}}x_{i}\),其中\(\hat{\beta_{0}}\)\(\hat{\beta_{1}}\)由最小二乘法得出;由于使用了最小二乘法进行回归,\(\hat{y_{i}}\)的均值与\(y_{i}\)相同,均为\(\bar{y}\))可解释的变异平方和(explained sum of squares,regression sum of squares)为

\[SS_{reg}=\sum_{i=1}^{n}(\hat{y_{i}}-\bar{y})^{2} \]

定义判定系数为:使用最小二乘法所得的一元线性回归方程(\(\hat{y_{i}}=\hat{\beta_{0}}+\hat{\beta_{1}}x_{i}\))可解释的变异占总变异的百分比,用\(R^{2}\)表示

\[R^{2}=\frac{SS_{reg}}{SS_{tot}} \]

由于此时\(\hat{y_{i}}=\hat{\beta_{0}}+\hat{\beta_{1}}x_{i}\)由最小二乘所得,则可以证明以下关系成立

\[\sum_{i=1}^{n}(y_{i}-\bar{y})^{2}=\sum_{i=1}^{n}(\hat{y_{i}}-\bar{y})^{2}+\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2} \]

此时,易知方程最后一项\(\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2}\)为残差平方和(residual sum of squares)

\[SS_{res}=\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2} \]

则有

\[SS_{tot}=SS_{reg}+SS_{res} \]

\[R^{2}=\frac{SS_{reg}}{SS_{tot}}=1-\frac{SS_{res}}{SS_{tot}} \]

从该判定系数(\(R^{2}\))的定义可知,此时的\(R^{2}\)反映的是一元线性回归方程(\(\hat{y_{i}}=\hat{\beta_{0}}+\hat{\beta_{1}}x_{i}\),其中\(\hat{\beta_{0}}\)\(\hat{\beta_{1}}\)由最小二乘法得出)对\(x_{i}\)\(y_{i}\)拟合效果的好坏,并且\(R^{2}\)具有以下性质:
(1)\(0\leqslant R^{2}\leqslant 1\)
(2)当\(R^{2}=1\)时,有\(SS_{tot}=SS_{reg}\),意味着原始数据的总变异完全可以由拟合值(\(\hat{y_{i}}\))的变异来解释,此时残差为0(\(SS_{res}=0\)),即拟合值(\(\hat{y_{i}}\))与原始观测值(\(y_{i}\))完全重合。
(3)当\(R^{2}=0\)时,有\(SS_{tot}=SS_{res}\),意味着回归方程完全不能解释原始观测值(\(y_{i}\))的总变异,\(y_{i}\)的变异完全由与\(x_{i}\)线性无关的因素引起。


2. $R^{2}$定义域包含负值时的定义:

上述定义描述的是使用最小二乘法建立一元线性回归方程对原始观测值(\(y_{i}\))拟合效果的好坏,即\(\hat{y_{i}}=\hat{\beta_{0}}+\hat{\beta_{1}}x_{i}\)\(y_{i}\)的拟合效果。但是在实际应用中,我们不仅使用线性模型描述\(x_{i}\)\(y_{i}\)之间的关系,还有可能使用非线性回归(\(\hat{y_{i}}=\hat{\alpha _{0}}+\hat{\alpha _{1}}x_{i}^{2}\))或者建立\(x_{i}\)\(y_{i}\)之间的复杂神经网络关系。此时\(\hat{y_{i}}\)\(x_{i}\)之间为非线性关系,\(SS_{tot}=SS_{reg}+SS_{res}\)不再成立。
\(y_{i}\)为原始观测数据,\(\bar{y}\)\(y_{i}\)的平均值,\(\hat{y_{i}}\)\(y_{i}\)的拟合或预测数据。
则原始数据\(y_{i}\)的总变异平方和(total sum of squares)为

\[SS_{tot}=\sum_{i=1}^{n}(y_{i}-\bar{y})^{2} \]

残差平方和(residual sum of squares)为

\[SS_{res}=\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2} \]

定义判定系数为(该定义为一般定义)

\[R^{2}=1-\frac{SS_{res}}{SS_{tot}} \]

如果此时\(\hat{y_{i}}\)\(x_{i}\)之间为非线性关系,则\(SS_{res}\)可能会大于\(SS_{tot}\),由定义可知,此时有可能出现\(R^{2}<0\)的现象。
可见,该定义范围更加宽泛(不要求使用最小二乘法建立\(x_{i}\)\(\hat{y_{i}}\)之间的线性关系),这也可以解释为什么人工神经网络库内置的\(R^{2}\)计算方法会在模拟效果较差时得出负值的原因,因为神经网络一般是高度非线性的,按此定义计算的\(R^{2}\)有可能是负值。




参考资料:
https://blog.csdn.net/goodljq/article/details/117061878
https://zhuanlan.zhihu.com/p/353112893
https://en.wikipedia.org/wiki/Coefficient_of_determination
https://blog.csdn.net/qq_44724526/article/details/113599608?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-113599608-blog-117061878.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-113599608-blog-117061878.pc_relevant_antiscanv2
https://www.zhihu.com/question/20134106


特别感谢:
黎杰

posted @ 2022-05-13 14:42  CollinsLi  阅读(5760)  评论(0编辑  收藏  举报