统计学、机器学习名词解析——TSS、ESS、RSS、拟合优度、调整后拟合优度
统计学、机器学习名词解析——TSS、ESS、RSS、拟合优度、调整后拟合优度
在统计学和机器学习领域,如何判断真实值与拟合值的贴合程度是一个基本问题。本文将介绍几个关键参数,帮助读者理解模型拟合效果的评估方法。
首先,我们通过一个简单的示例来说明这些概念。假设我们有一组随机生成的数据点,并尝试用一条直线来拟合这些数据。以下是数据生成和拟合的Python代码:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(1, 51)
y = x + np.round(np.random.uniform(-5, 5, 50), 2)
plt.plot(x, x, color='r') # 拟合线
plt.plot(x, y, color='b') # 实际数据点
plt.show()
核心概念
总平方和(TSS)
总平方和(Total Sum of Squares,TSS)衡量的是所有观测值与观测值平均值之间的差异。其计算公式为:
$$
TSS = \sum_{i=1}^{n} (y_i - \bar{y})^2
$$
其中,$y_i$ 是第 $i$ 个观测值,$\bar{y}$ 是所有观测值的平均值。
解释平方和(ESS)
解释平方和(Explained Sum of Squares,ESS)衡量的是模型预测值与观测值平均值之间的差异。其计算公式为:
$$
ESS = \sum_{i=1}^{n} (\hat{y}_i - \bar{y})^2
$$
其中,$\hat{y}_i$ 是模型对第 $i$ 个观测值的预测值。
残差平方和(RSS)
残差平方和(Residual Sum of Squares,RSS)衡量的是模型预测值与实际观测值之间的差异。其计算公式为:
$$
RSS = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
$$
拟合优度(R-squared)
拟合优度(R-squared)也称为决定系数,表示模型解释的数据方差比例。其计算公式为:
$$
R^2 = \frac{ESS}{TSS}
$$
当拟合程度越好时,TSS越大,ESS越大,RSS越小。TSS反映了数据的总变异,模型能够解释的方差越多,TSS就越大。ESS反映了模型对数据变异的解释能力,模型越能够解释数据,ESS就越大。RSS衡量了模型预测误差的总量,拟合得越好,残差就越小。
Python代码实现
以下是计算这些指标的Python代码:
def compute_R_square(data_real, data_pred):
# 计算真实值平均值
y_mean = sum(data_real) / len(data_real)
# 循环求解TTS
TSS = 0
for temp in data_real:
TSS += (temp - y_mean) ** 2
# 循环求解ESS
ESS = 0
for temp in data_pred:
ESS += (temp - y_mean) ** 2
# 循环求解RSS
temp_real_pred = data_real - data_pred
RSS = sum(x ** 2 for x in temp_real_pred)
# 计算拟合优度R方
R_square = ESS / TSS
return TSS, ESS, RSS, R_square
将真实值带入得到最终结果:
y_TSS, y_ESS, y_RSS, y_R_square = compute_R_square(y, x)
print(y_TSS, y_ESS, y_RSS, y_R_square)
输出结果为:
11065.547048 10416.845352000002 397.7123999999999 0.9413764459013126
调整后拟合优度(Adjusted R-squared)
调整后拟合优度(Adjusted R-squared)考虑了模型自由度对拟合优度的影响。其计算公式为:
$$
Adjusted\ R^2 = 1 - (1 - R^2) \frac{n-1}{n-k-1}
$$
其中,$n$ 是样本数量,$k$ 是自变量个数。
调整后拟合优度会在模型增加自变量但增加的拟合优度并不显著时进行惩罚,拟合越好,调整后拟合优度越大,但通常不会超过1,因为考虑了模型的复杂度。
Python代码实现
以下是计算调整后拟合优度的Python代码:
def compute_Adjust_R_square(n, k, R_square):
Adjust_R_square = 1 - (1 - R_square) * (n - 1) / (n - k - 1)
return Adjust_R_square
得到结果:
0.94015512185759
总结
- R-squared 衡量模型解释因变量变化的能力,但不考虑模型复杂度。
- Adjusted R-squared 在计算时考虑了模型的复杂度,通过减去自由度的惩罚项来避免因模型复杂度增加而导致的不合理的优化。
因此,一般来说,当比较不同模型时,调整后拟合优度更适合用作评估标准,因为它可以更准确地反映模型的预测能力,避免了过度拟合的可能性。
由于示例数据是随机生成的,每次运行代码得到的数值可能会有所不同,这是正常现象。