回归分析第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²,不要怀疑——它只是在提醒你:
这个模型的预测效果比“直接猜均值”还差,这时候不如直接换一个模型。