欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家!
理解 R 平方 (R²)
什么是相关性 R?
- 相关性测量两个定量变量(例如,重量和尺寸)之间关系的强度。
- 接近 1 或 -1 的值表示关系强。
- 接近 0 的值表示关系弱或无关系。
为什么 R² 重要?
- R² 是一种类似于 R 的相关性指标,它测量关系的强度,但更易于解释。
- 虽然 R = 0.7 可能看起来并不比 R = 0.5 强一倍,但 R² = 0.7 表现出来的效果确实是 R² = 0.5 的 1.4 倍。
- R² 提供了一个直观而简单的计算,用于理解关系解释的变异比例。
R² 直接告诉我们模型解释的变异百分比,使我们更容易理解预测变量对结果的影响。例如,R² 为 0.49 表示模型解释了 49% 的变异,而 R² 为 0.25 表示模型解释了 25% 的变异。
例子:老鼠体重预测
- 初始数据绘图
- 绘制老鼠体重(y 轴)与老鼠 ID(x 轴)的关系图。
- 计算并绘制平均体重。
- 计算方差,即从均值开始的平方差的总和。
数据的变异性 = ∑ ( 老鼠 i 的体重 − 均值 ) 2 \text{数据的变异性} = \sum (\text{老鼠 i 的体重} - \text{均值})^2 数据的变异性=∑(老鼠 i 的体重−均值)2
各数据点之间的差异被平方,以便低于均值的点不会抵消高于均值的点。
- 按尺寸重新排序数据
- 按尺寸重新排序老鼠,但不改变均值和方差。点与线之间的距离没有改变,只是它们的顺序变了。
- 通过拟合线更好地预测
- 对尺寸-体重数据拟合一条线。
- 使用这条线基于尺寸进行更准确的体重预测。
- 用 R² 量化改进
-
R
2
=
(
V
a
r
(
m
e
a
n
)
−
V
a
r
(
l
i
n
e
)
)
V
a
r
(
m
e
a
n
)
R² = \frac{(Var(mean) - Var(line))}{Var(mean)}
R2=Var(mean)(Var(mean)−Var(line))
R² 的取值范围从 0 到 1,值越高预测越好。
-
R
2
=
(
V
a
r
(
m
e
a
n
)
−
V
a
r
(
l
i
n
e
)
)
V
a
r
(
m
e
a
n
)
R² = \frac{(Var(mean) - Var(line))}{Var(mean)}
R2=Var(mean)(Var(mean)−Var(line))
R² 的范围从 0 到 1,因为线周围的变异永远不会大于均值周围的变异,并且永远不会小于 0。这种划分也使得 R² 成为一个百分比。
- 例子
- 高 R²(例如,0.81)表示关系强,如尺寸和体重。
- 低 R²(例如,0.06)表示关系弱,如嗅探时间和体重。
R² 为 0.81 表示线周围的变异比均值周围的变异少 81%,或者尺寸/体重关系解释了总变异的 81%。这意味着数据中大部分的变异可以通过尺寸/体重关系来解释。
在另一个例子中,我们比较两个可能不相关的变量,即老鼠体重和嗅探岩石的时间。我们发现 R² = 0.06,因此线周围的变异比均值周围的变异少 6%,或者嗅探/体重关系解释了总变异的 6%。这意味着只有 6% 的变异可以通过这种关系来解释,表明相关性很弱。
解释 R²
- 统计显著的 R² = 0.9:90% 的变异由这种关系解释。
- 统计显著的 R² = 0.01:只有 1% 的变异由这种关系解释。
当有人说“统计显著的 R² 是 0.9”时,你可以想,“很好!两个变量之间的关系解释了数据中 90% 的变异!” 反之,如果 R² = 0.01,你可以想,“即使这种关系是显著的,但只解释了 1% 的变异;剩下的 99% 必须由其他因素解释。”
即使统计测试显示两个变量之间的关系在统计上是显著的,如果 R² 值非常低,这种关系在实际上的重要性可能很小。换句话说,统计显著性并不一定意味着这种关系在解释数据变异方面是有意义的或重要的。
与 R 的关系
- R² 是 R 的平方。
- 高 R(例如,0.9)的平方得出高 R²(例如,0.81)。
- R² 提供了更清晰的比较,更容易理解(例如,R² 的 0.7² 比 0.5² 好两倍)。
当有人说“统计显著的 R 是 0.9”时,你可以想,“0.9 乘以 0.9 = 0.81。很好!两个变量之间的关系解释了数据中 81% 的变异!” 对于 R = 0.5,你可以想,“0.5 乘以 0.5 = 0.25。关系解释了数据中 25% 的变异。如果有一百万个其他因素解释剩下的 75%,那很好,如果只有一个因素,那就不好了。”
R² 比普通的 R 更容易解释。例如,R = 0.7 与 R = 0.5 比较:
- R² = 0.7² = 0.49:49% 的原始变异被解释。
- R² = 0.5² = 0.25:25% 的原始变异被解释。
有了 R²,很明显第一个相关性大约是第二个的两倍。
R 与解释的变异比例之间的关系是非线性的。R = 0.7 的相关性并不意味着它比 R = 0.5 好 1.4 倍。
将相关系数(R)平方得到 R² 使这种关系线性化,更直观地比较强度。
关键点
- R² 表示由关系解释的变异百分比。
- R² 不表示相关性的方向。
- 将 R 的值平方得到 R² 以便更容易理解。
R² 不表示相关性的方向,因为平方后的数值永远不会是负数。如果相关性的方向不明显,你可以说,“两个变量正相关(或负相关),R² = …”
R² 的主要思想
- R² 是由两个变量之间关系解释的变异百分比。
- 如果有人给你一个 R 的值,将其平方以理解解释的变异百分比。
理解为什么 Var(line) ≤ Var(mean)
方差和线性回归的概念
均值周围的方差 (Var(mean))
方差测量每个数据点偏离数据集均值的平均平方偏差。方差的公式为:
Var(mean) = 1 N ∑ i = 1 N ( y i − y ˉ ) 2 \text{Var(mean)} = \frac{1}{N} \sum_{i=1}^N (y_i - \bar{y})^2 Var(mean)=N1i=1∑N(yi−yˉ)2
其中, y i y_i yi 是数据点, y ˉ \bar{y} yˉ 是均值, N N N 是数据点的数量。
拟合线周围的方差 (Var(line))
在线性回归中,我们拟合一条线,以最小化实际数据点与预测值(即残差)之间的平方差之和。拟合线周围的方差(残差平方和)的公式为:
Var(line) = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 \text{Var(line)} = \frac{1}{N} \sum_{i=1}^N (y_i - \hat{y}_i)^2 Var(line)=N1i=1∑N(yi−y^i)2
其中, y ^ i \hat{y}_i y^i 是回归线的预测值。
为什么 Var(line) ≤ Var(mean)
线性回归最小化残差
线性回归的目标是找到最小化残差平方和(观测值与预测值之差)的线。这一过程称为“最小二乘法”。通过最小化这些残差,拟合线周围的方差(Var(line))比均值周围的方差(Var(mean))要小。
总方差的分解
数据的总方差 (Var(mean)) 可以分解为两部分:由回归模型解释的方差(解释方差)和模型未解释的方差(残差方差)。数学上表示为:
Total Variance (Var(mean)) = Explained Variance + Residual Variance (Var(line)) \text{Total Variance (Var(mean))} = \text{Explained Variance} + \text{Residual Variance (Var(line))} Total Variance (Var(mean))=Explained Variance+Residual Variance (Var(line))
由于解释方差和残差方差都是非负的,残差方差(Var(line))必须小于或等于总方差(Var(mean))。
视觉直观
均值周围的变异
如果你考虑均值线(在因变量均值处的一条水平线),每个数据点与这个均值线的距离(平方差)相对较大。
拟合线周围的变异
当你拟合一条回归线时,你会调整这条线,使其尽可能接近所有数据点,从而最小化平方差(残差)。与均值线相比,这减少了总体距离。
使用统计属性的正式证明
平方和
总平方和 (SST) 测量因变量的总方差,定义为:
S S T = ∑ ( y i − y ˉ ) 2 SST = \sum (y_i - \bar{y})^2 SST=∑(yi−yˉ)2
残差平方和 (SSR) 测量模型未解释的方差:
S S R = ∑ ( y i − y ^ ) 2 SSR = \sum (y_i - \hat{y})^2 SSR=∑(yi−y^)2
关系
解释平方和 (SSE) 测量模型解释的方差:
S S E = ∑ ( y ^ i − y ˉ ) 2 SSE = \sum (\hat{y}_i - \bar{y})^2 SSE=∑(y^i−yˉ)2
根据定义:
S S T = S S E + S S R SST = SSE + SSR SST=SSE+SSR
结论
由于线性回归模型旨在最小化残差方差(SSR 或 Var(line)),因此拟合线周围的方差(Var(line))总是小于或等于均值周围的方差(Var(mean))。这确保了拟合线相对于仅使用均值作为预测器提供了更好或相同的拟合。
因此,回归模型提供的拟合改进(通过 R² 衡量)表示模型解释了多少总方差,其中 Var(line) 是此比较中的关键组成部分。
示例:通过尺寸预测老鼠体重
假设我们有 5 只老鼠的数据,其中我们测量它们的尺寸(自变量,X)和体重(因变量,Y)。以下是数据:
鼠标 ID | 尺寸 (X) | 体重 (Y) |
---|---|---|
1 | 10 | 15 |
2 | 20 | 25 |
3 | 30 | 35 |
4 | 40 | 45 |
5 | 50 | 55 |
第一步:计算 Y 的均值
Y ˉ = 15 + 25 + 35 + 45 + 55 5 = 175 5 = 35 \bar{Y} = \frac{15 + 25 + 35 + 45 + 55}{5} = \frac{175}{5} = 35 Yˉ=515+25+35+45+55=5175=35
第二步:计算总平方和 (SST)
S S T = ∑ ( Y i − Y ˉ ) 2 = ( 15 − 35 ) 2 + ( 25 − 35 ) 2 + ( 35 − 35 ) 2 + ( 45 − 35 ) 2 + ( 55 − 35 ) 2 SST = \sum (Y_i - \bar{Y})^2 = (15 - 35)^2 + (25 - 35)^2 + (35 - 35)^2 + (45 - 35)^2 + (55 - 35)^2 SST=∑(Yi−Yˉ)2=(15−35)2+(25−35)2+(35−35)2+(45−35)2+(55−35)2
S S T = ( − 20 ) 2 + ( − 10 ) 2 + 0 2 + 1 0 2 + 2 0 2 = 400 + 100 + 0 + 100 + 400 = 1000 SST = (-20)^2 + (-10)^2 + 0^2 + 10^2 + 20^2 = 400 + 100 + 0 + 100 + 400 = 1000 SST=(−20)2+(−10)2+02+102+202=400+100+0+100+400=1000
第三步:计算均值周围的方差 (Var(mean))
Var(mean) = S S T N = 1000 5 = 200 \text{Var(mean)} = \frac{SST}{N} = \frac{1000}{5} = 200 Var(mean)=NSST=51000=200
第四步:拟合线性回归线
假设拟合的回归线为:
Y ^ = 10 + 0.9 X \hat{Y} = 10 + 0.9X Y^=10+0.9X
第五步:计算预测值 ((\hat{Y}))
鼠标 ID | 尺寸 (X) | 体重 (Y) | 预测体重 ((\hat{Y})) |
---|---|---|---|
1 | 10 | 15 | 10 + 0.9(10) = 19 |
2 | 20 | 25 | 10 + 0.9(20) = 28 |
3 | 30 | 35 | 10 + 0.9(30) = 37 |
4 | 40 | 45 | 10 + 0.9(40) = 46 |
5 | 50 | 55 | 10 + 0.9(50) = 55 |
第六步:计算残差平方和 (SSR)
S S R = ∑ ( Y i − Y ^ ) 2 = ( 15 − 19 ) 2 + ( 25 − 28 ) 2 + ( 35 − 37 ) 2 + ( 45 − 46 ) 2 + ( 55 − 55 ) 2 SSR = \sum (Y_i - \hat{Y})^2 = (15 - 19)^2 + (25 - 28)^2 + (35 - 37)^2 + (45 - 46)^2 + (55 - 55)^2 SSR=∑(Yi−Y^)2=(15−19)2+(25−28)2+(35−37)2+(45−46)2+(55−55)2
S S R = ( − 4 ) 2 + ( − 3 ) 2 + ( − 2 ) 2 + ( − 1 ) 2 + 0 2 = 16 + 9 + 4 + 1 + 0 = 30 SSR = (-4)^2 + (-3)^2 + (-2)^2 + (-1)^2 + 0^2 = 16 + 9 + 4 + 1 + 0 = 30 SSR=(−4)2+(−3)2+(−2)2+(−1)2+02=16+9+4+1+0=30
第七步:计算拟合线周围的方差 (Var(line))
Var(line) = S S R N = 30 5 = 6 \text{Var(line)} = \frac{SSR}{N} = \frac{30}{5} = 6 Var(line)=NSSR=530=6
第八步:使用公式计算 R²
R 2 = Var(mean) − Var(line) Var(mean) R^2 = \frac{\text{Var(mean)} - \text{Var(line)}}{\text{Var(mean)}} R2=Var(mean)Var(mean)−Var(line)
R 2 = 200 − 6 200 = 194 200 = 0.97 R^2 = \frac{200 - 6}{200} = \frac{194}{200} = 0.97 R2=200200−6=200194=0.97
解释
- R² 值:R² 值为 0.97。
- 含义:这意味着 97% 的老鼠体重变异可以通过鼠标尺寸来解释。只有 3% 的变异是由模型未解释的其他因素造成的。
总结
在这个例子中,高 R² 值(0.97)表明鼠标的尺寸和体重之间存在很强的线性关系。这意味着我们的线性回归模型在根据鼠标尺寸解释其体重的变异性方面表现非常好。
补充证明 S S T = S S E + S S R SST = SSE + SSR SST=SSE+SSR
当线性回归中包含截距(残差和为零)时,我们可以证明:
S S T = S S E + S S R SST = SSE + SSR SST=SSE+SSR
定义
-
总平方和(SST):
S S T = ∑ i = 1 n ( y i − y ˉ ) 2 SST = \sum_{i=1}^{n} (y_i - \bar{y})^2 SST=i=1∑n(yi−yˉ)2
-
解释平方和(SSE):
S S E = ∑ i = 1 n ( y ^ i − y ˉ ) 2 SSE = \sum_{i=1}^{n} (\hat{y}_i - \bar{y})^2 SSE=i=1∑n(y^i−yˉ)2
-
残差平方和(SSR):
S S R = ∑ i = 1 n ( y i − y ^ i ) 2 SSR = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 SSR=i=1∑n(yi−y^i)2
展开 SST
S S T = ∑ i = 1 n ( y i − y ˉ ) 2 SST = \sum_{i=1}^{n} (y_i - \bar{y})^2 SST=i=1∑n(yi−yˉ)2
将 y i − y ˉ y_i - \bar{y} yi−yˉ 分解为 ( y i − y ^ i ) + ( y ^ i − y ˉ ) (y_i - \hat{y}_i) + (\hat{y}_i - \bar{y}) (yi−y^i)+(y^i−yˉ):
S S T = ∑ i = 1 n ( y i − y ^ i + y ^ i − y ˉ ) 2 SST = \sum_{i=1}^{n} (y_i - \hat{y}_i + \hat{y}_i - \bar{y})^2 SST=i=1∑n(yi−y^i+y^i−yˉ)2
展开右侧:
S S T = ∑ i = 1 n ( y i − y ^ i ) 2 + ∑ i = 1 n ( y ^ i − y ˉ ) 2 + 2 ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) SST = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + \sum_{i=1}^{n} (\hat{y}_i - \bar{y})^2 + 2\sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) SST=i=1∑n(yi−y^i)2+i=1∑n(y^i−yˉ)2+2i=1∑n(yi−y^i)(y^i−yˉ)
因此:
S S T = S S R + S S E + 2 ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) SST = SSR + SSE + 2 \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) SST=SSR+SSE+2i=1∑n(yi−y^i)(y^i−yˉ)
要证明最后一部分等于0,我们需要证明:
∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = 0 \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) = 0 i=1∑n(yi−y^i)(y^i−yˉ)=0
替换 y ^ i = β 0 + β 1 x i \hat{y}_i = \beta_0 + \beta_1 x_i y^i=β0+β1xi:
∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = ∑ i = 1 n ( y i − β 0 − β 1 x i ) ( β 0 + β 1 x i − y ˉ ) \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) = \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)(\beta_0 + \beta_1 x_i - \bar{y}) i=1∑n(yi−y^i)(y^i−yˉ)=i=1∑n(yi−β0−β1xi)(β0+β1xi−yˉ)
这可以分解为:
( β 0 − y ˉ ) ∑ i = 1 n ( y i − β 0 − β 1 x i ) + β 1 ∑ i = 1 n ( y i − β 0 − β 1 x i ) x i (\beta_0 - \bar{y})\sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i) + \beta_1 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)x_i (β0−yˉ)i=1∑n(yi−β0−β1xi)+β1i=1∑n(yi−β0−β1xi)xi
最小二乘回归
在最小二乘回归中,残差平方和被最小化:
S S R = ∑ i = 1 n ( y i − y ^ i ) 2 = ∑ i = 1 n ( y i − β 0 − β 1 x i ) 2 SSR = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 = \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)^2 SSR=i=1∑n(yi−y^i)2=i=1∑n(yi−β0−β1xi)2
对 β 0 \beta_0 β0 取部分导数并设为零:
∂ S S R ∂ β 0 = ∑ i = 1 n 2 ( y i − β 0 − β 1 x i ) ⋅ 1 = 0 \frac{\partial SSR}{\partial \beta_0} = \sum_{i=1}^{n} 2(y_i - \beta_0 - \beta_1 x_i) \cdot 1 = 0 ∂β0∂SSR=i=1∑n2(yi−β0−β1xi)⋅1=0
所以:
∑ i = 1 n ( y i − β 0 − β 1 x i ) = 0 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i) = 0 i=1∑n(yi−β0−β1xi)=0
对 β 1 \beta_1 β1 取部分导数并设为零:
∂ S S R ∂ β 1 = ∑ i = 1 n 2 ( y i − β 0 − β 1 x i ) ⋅ x i = 0 \frac{\partial SSR}{\partial \beta_1} = \sum_{i=1}^{n} 2(y_i - \beta_0 - \beta_1 x_i) \cdot x_i = 0 ∂β1∂SSR=i=1∑n2(yi−β0−β1xi)⋅xi=0
所以:
∑ i = 1 n ( y i − β 0 − β 1 x i ) x i = 0 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)x_i = 0 i=1∑n(yi−β0−β1xi)xi=0
因此:
∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = ( β 0 − y ˉ ) ∑ i = 1 n ( y i − β 0 − β 1 x i ) + β 1 ∑ i = 1 n ( y i − β 0 − β 1 x i ) x i = 0 \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) = (\beta_0 - \bar{y})\sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i) + \beta_1 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)x_i = 0 i=1∑n(yi−y^i)(y^i−yˉ)=(β0−yˉ)i=1∑n(yi−β0−β1xi)+β1i=1∑n(yi−β0−β1xi)xi=0
因此:
S S T = S S R + S S E + 2 ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = S S E + S S R SST = SSR + SSE + 2 \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) = SSE + SSR SST=SSR+SSE+2i=1∑n(yi−y^i)(y^i−yˉ)=SSE+SSR
参考:
- YouTube 视频