回归分析第7讲:R² 等于相关系数平方吗?为什么机器学习里会出现负 R² ?

统计

很多同学第一次看到负的 R²,第一反应往往是:

是不是模型跑错了?是不是软件出问题了?是不是我写错代码了?

其实——模型没崩、电脑没坏,甚至你回归也没跑错。关键原因只是:

我们对 R² 的理解,还停留在传统教科书上。

今天我们讲一下,其实有两种不同的R²(不是调整的R²),以后我们就不会对 R²有困惑了。

【一】R²什么时候等于相关系数r的平方?

很多同学上课时听过一句话,不少老师上课也是这么讲的(包括我自己):

R² ≈ r²

但这句话只在一种情况下成立:

简单线性回归(只有一个自变量 X)

图片

此时,R² 就等于 X 与 Y 的皮尔逊相关系数的平方,能直接理解为“相关越强,模型解释度越高”。

但只要模型变复杂,情况就不同了

在以下情况,R² ≠ r²:

  • 出现两个或以上自变量
  • 有交互、非线性、多项式项
  • 模型不是简单回归

一句话:

只有一个自变量时,R² 才等于 r²;多元模型背景下,两者就没直接关系了。

【二】教科书里 R² 的定义,其实只是“线性回归版本”

我们先来看下图:

图片

这个图中的SST、SSE和SSR很重要,能够解释回归分析中的大部分内容。

上图中:

名称 含义
SST = 总离差平方和 Y 的整体波动
SSR = 回归平方和 模型解释掉的那一部分
SSE = 残差平方和 模型没解释掉的误差

对于R²,大多数教材写的是:

图片

或者读成:

R² = 回归解释度 / 总变异

如果我们把右边写全,其实是:

图片

这两个公式在经典 OLS 线性回归中是完全等价的,所以你在书里看到哪种,都没有错。

但是,重点来了:

只有在 “OLS + 截距项” 存在的情况下,这个公式才能保证 R² ≥ 0。

为什么?

因为 OLS 的求解方式保证了:

图片

等式永远成立,所以:

图片

这也是为什么你在课本习题里从来没见过负的 R²。

但世界没那么简单。

【三】只要不是标准 OLS,就可能出现负 R²

若模型不是经典形式,例如:

  • 没有截距(强制通过原点)
  • 使用岭回归 / Lasso / 随机森林 / XGBoost 等机器学习方法
  • 变量处理方式异常(如标准化、约束、错误模型规格)
  • 残差甚至比均值预测还差

那么可能出现:

图片

也就是:

模型的预测效果不如直接用平均值预测

于是自然得到:

图片

这意味着:

模型不仅没解释数据,还比“不做模型,直接猜均值”更差。

一句话总结:

结果 意味着什么?
R² > 0 模型有解释力(优于均值)
R² = 0 还不如瞎猜均值
R² < 0 模型反而把趋势带偏了

负 R² 不可怕,它只是告诉你:这个模型没抓到关系。

【四】机器学习时代的 R²,不是“线性回归专属”

R² 不再只属于线性回归,它同样出现在各种预测模型中:

  • Random Forest
  • XGBoost / CatBoost
  • Neural Networks
  • KNN / SVM / 多项式回归
  • AutoML、深度模型、甚至 NLP 回归任务

很多人可能会忽略了一个关键点:

在机器学习里,R²不是理论量,而是预测表现指标。

ML场景下常用的是预测型 R²,含义可以概括为:

模型的预测是否比“直接猜均值”更好?好了多少?

这意味着——只要模型预测不好、噪声太大或结构不匹配,R² 完全可能掉到 0 以下:

Train: R² = 0.92
Test: R² = -0.35

训练集表现亮眼,但测试集却直接崩盘。

此时的R²是负值,不是异常,只是在提醒你:

模型在背书,而不是在学习。

与其继续调参,不如换模型或重做特征工程。

【五】本文小结

我们把总结一下今天的重点:

R² ≥ 0 只有在 OLS + 有截距时才一定成立。
换模型、换场景、换算法,就可能变成负数。

另外 ,再记住三条:

  • R² = SSR/SST 是线性教材里的定义,但不是唯一表达
  • R² = 1 - SSE/SST 更适合理解为什么会出现负数
  • 机器学习时代的 R²,本质是预测评价指标,不是理论量

以后当你再次看到负的 R²,不要怀疑——它只是在提醒你:

这个模型的预测效果比“直接猜均值”还差,这时候不如直接换一个模型。