1、前言定义
yiy_iyi 代表第i个真实值
yˉ\bar{y}yˉ 代表真实值的平均值
yi^\hat{y_i}yi^ 代表第i个预测值
2、总平方和(Total Sum of Squares, SST)
总平方和(Total Sum of Squares, SST) : 这是最"朴素"的模型的误差。这个朴素模型不考虑任何特征,直接用目标变量的平均值 yˉ\bar{y}yˉ 作为所有样本的预测值。SST 衡量了目标变量自身整体的波动程度。
SST=∑i=1n(yi−yˉ)2{SST} = \sum_{i=1}^{n}(y_i - \bar{y})^2SST=i=1∑n(yi−yˉ)2
3、残差平方和(Residual Sum of Squares, SSR 或 RSS)
残差平方和(Residual Sum of Squares, SSR 或 RSS) : 这是我们线性回归模型的误差。它是每个样本的真实值 yiy_iyi 与模型预测值 yi^\hat{y_i}yi^ 之差的平方和。SSR 衡量了模型未能解释的波动部分。
SSR=∑i=1n(yi−yi^)2{SSR} = \sum_{i=1}^{n}(y_i - \hat{y_i})^2SSR=i=1∑n(yi−yi^)2
(yi^\hat{y_i}yi^ -yˉ\bar{y}yˉ )代表残差
4、解释平方和(Explained Sum of Squares, SSE)
解释平方和(Explained Sum of Squares, SSE) : 这是模型解释的波动部分,即预测值 yi^\hat{y_i}yi^ 与平均值 yˉ\bar{y}yˉ 之差的平方和。
SSE=∑i=1n(yi^−yˉ)2{SSE} = \sum_{i=1}^{n}(\hat{y_i} - \bar{y})^2SSE=i=1∑n(yi^−yˉ)2
5、MSE(均方误差,Mean Squared Error)
对残差平方和求取平均值就是均方误差,即可用于训练集也可以用于测试集,公式如下:
MSE=1m∑i=1m(yi−y^i)2MSE = \frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y}_i)^2MSE=m1i=1∑m(yi−y^i)2
- MSE用于训练集
用于训练集,此时模型的权重集还未知,要找到一组参数 (β0,β1,...,βn)(\beta_0, \beta_1, ..., \beta_n)(β0,β1,...,βn),使得 MSE 损失函数的值最小,来得到一个模型。
得到模型之后再对训练集的预测值和真实值做MSE计算,一定是最小的 - MSE用于测试集
用于测试集,此时模型已经求解完成,可以获取测试集对应的预测值和准确值,进而求取测试集的均方误差。MSE用于测试集主要是用来判断模型的好坏,MSE越小,代表模型越好
6、平均绝对误差(Mean Absolute Error,简称 MAE)
它是用来衡量回归模型预测值与真实值之间误差的一种指标。
它的核心思想非常直观:计算所有样本的预测值与真实值之间的绝对差,然后求平均值。
MAE 的数学定义如下:
MAE = 1n∑i=1n∣yi−y^i∣\frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|n1∑i=1n∣yi−y^i∣
让我们来分解这个公式:
- n: 表示样本的总数量。
- i: 表示第 i 个样本。
- yiy_iyi: 表示第 i 个样本的真实值。
- y^i\hat{y}_iy^i: 表示模型对第 i 个样本的预测值。
- ∣yi−y^i∣|y_i - \hat{y}_i|∣yi−y^i∣: 这是绝对误差。计算真实值和预测值之间的绝对差。取绝对值是为了确保所有误差都是正数,这样正负误差不会相互抵消。
- ∑i=1n\sum_{i=1}^{n}∑i=1n: 求和符号,表示将每个样本的绝对误差加起来。
- 1n\frac{1}{n}n1: 最后除以样本总数,得到平均值。
简单来说:MAE = 所有样本的 |预测值 - 真实值| 之和 / 样本个数
7、决定系数(R-squared) R²
R2=1−(SSR/SST)R² = 1 - (SSR / SST)R2=1−(SSR/SST)
R² 既可以用作训练集,也可以用作测试集,
- R² 用作训练集
R² 用作训练集无意义,因为对于训练集SST是一个常数,而SSR本身就是用训练集的数据求取出来的最小值,所以R² 用作训练集无意义 - R² 用作测试集
R²用作测试集,是用于评估回归模型性能的一个核心指标。
它的核心思想是:与一个最简单的"基线模型"相比,我们的回归模型将误差降低了多少比例。
这个"基线模型"是什么? 它是一个非常"笨"的模型,它永远用目标变量 y的平均值 y_mean来作为预测值,不考虑任何特征。
R² 的含义: 我们的模型通过引入特征,将预测误差降低到了基线模型误差的百分之多少。
因此,R² 衡量的是模型对目标变量波动的解释能力。
R² 的取值范围看起来是 (-∞, 1],但通常我们这样解读:
| R² 值 | 解释 |
|---|---|
| R² = 1 | 完美模型。 模型完美拟合了所有数据点,残差为0(SSR=0)。这在实际中几乎不可能出现,如果出现,很可能是数据泄露或过拟合。 |
| R² 接近 1 | 模型优秀。 例如 R²=0.9,意味着模型解释了目标变量90%的方差。说明模型拟合效果好。 |
| R² > 0 | 模型优于基线模型。 即使 R²=0.3,也意味着你的模型比简单地使用平均值来预测要好,它解释了30%的方差。 |
| R² = 0 | 模型等同于基线模型。 你的模型的预测效果和直接猜测 y_mean 一样差。说明特征可能完全没有提供有用的信息。 |
| R² < 0 | 模型比基线模型还差。 这是一个警告信号!意味着你的模型拟合得极其糟糕,甚至不如直接使用平均值来预测。 |
重要提示: R² 为负通常发生在两种情况下:
- 你在测试集上评估模型,但模型在测试集上的表现非常差(模型没有泛化能力)。
- 你没有使用带截距项的线性回归模型(例如设置了
fit_intercept=False),而数据本身并不通过原点。此时,比较的基线就不再是y_mean,计算逻辑会出问题。
8、sklearn.metrics相关方法
python
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
| 类型 | 方法 |
|---|---|
| 均方误差(Mean Squared Error, MSE) | mean_squared_error(y_true, y_pred) |
| 均方根误差(Root Mean Squared Error, RMSE) | np.sqrt(mean_squared_error(y_true, y_pred)) |
| 平均绝对误差(Mean Absolute Error, MAE) | mean_absolute_error(y_true, y_pred) |
| 决定系数(R² Score, R-Squared) | r2_score(y_true, y_pred) |