如何计算Scikit中的R2值?

时间:2014-04-26 09:35:59

标签: python machine-learning statistics scikit-learn

scikit learn(metrics.r2_score())返回的R ^ 2值可能为负数。 docs说:

  

“与大多数其他分数不同,R²分数可能是负数(不需要   实际上是数量R的平方。“

然而,R ^ 2上的wikipedia article提到没有R(非平方)数量。也许它使用绝对差异而不是方差。我真的不知道

2 个答案:

答案 0 :(得分:25)

scikit learn中的R^2the wikipedia article on the coefficient of determination中描述的内容基本相同(grep for"最常见的定义")。它是1 - residual sum of square / total sum of squares

经典统计设置与您通常尝试使用机器学习之间的最大区别在于,在机器学习中,您可以根据看不见的数据评估得分,这可能会导致[0,1]之外的结果。如果您将R^2应用于您用于模型的相同数据,它将位于[0, 1]

之内

另见very similar question

答案 1 :(得分:4)

由于R ^ 2 = 1-RSS / TSS,唯一的情况是RSS / TSS>当我们的模型比假设的最差模型(这是绝对平均模型)更糟糕时,就会出现1。

这里RSS =实际值(yi)和预测值(yi ^)之差的平方和 和TSS =实际值(yi)和平均值之间的差的平方和(在应用回归之前)。 因此,您可以想象TSS代表最佳(实际)模型,RSS介于我们的最佳模型和最差的绝对平均模型之间,在这种情况下,我们将获得RSS / TSS&lt; 1。 如果我们的模型甚至比最差的平均模型更差,则在那种情况下RSS> TSS(由于实际观察值与平均值之间的差异&<差异预测值和实际观察值)。

点击这里查看更直观的视觉表现:https://ragrawal.wordpress.com/2017/05/06/intuition-behind-r2-and-other-regression-evaluation-metrics/