如何计算Scikit中的R2值?

joe*_*lly 17 python statistics machine-learning scikit-learn

scikit learn(metrics.r2_score())返回的R ^ 2值可以是负数.该文件说:

"与大多数其他分数不同,R²分数可能是负数(实际上不必是数量R的平方)."

然而维基百科关于R ^ 2的文章没有提到R(非平方)数量.也许它使用绝对差异而不是方差.我真的不知道

eic*_*erg 29

R^2在scikit学习的是基本相同什么是描述维基百科文章的决定系数(为"最普遍的定义的" grep).是的1 - residual sum of square / total sum of squares.

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

另见这个非常相似的问题

  • 那讲得通。非常感谢。 (2认同)

小智 8

由于 R^2 = 1 - RSS/TSS,只有当我们的模型比假设的最差模型(即绝对平均模型)更差时,才会发生 RSS/TSS > 1 的情况。

这里 RSS = 实际值 (yi) 和预测值 (yi^) 之间的差异平方和和 TSS = 实际值 (yi) 和平均值之间的差异平方和(应用回归之前)。所以你可以想象 TSS 代表最好的(实际)模型,而 RSS 介于我们最好的模型和最差的绝对平均模型之间,在这种情况下,我们将得到 RSS/TSS < 1。如果我们的模型比最坏的平均数更差模型然后在这种情况下 RSS > TSS(因为实际观察值和平均值之间的差异 < 预测值和实际观察值之间的差异)。

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