通过实际数字来查看MAE、MSE、RMSE和R方这些指标的计算方式,有助于加深理解,并为评估您自己的回归模型做好准备。案例:预测房价假设我们建立了一个简单的回归模型,根据房屋面积(平方英尺)来预测房价。我们用一些数据训练了这个模型,现在想在它从未见过的一组5套房屋(我们的测试集)上评估其表现。以下是实际房价和我们的模型预测的房价(单位:千美元):房屋编号面积(平方英尺)实际价格(千美元) $(y_i)$预测价格(千美元) $(\hat{y}_i)$1150030031021200250240318003803504140029030051600330340我们的目标是使用学过的指标来量化模型预测与实际价格的匹配程度。我们的测试集有 $n=5$ 个数据点。第一步:计算单个误差第一步总是找到每个数据点的实际值 ($y_i$) 与预测值 ($\hat{y}_i$) 之间的差异。这个差异称为误差或残差。$$ 误差_i = y_i - \hat{y}_i $$让我们在表中添加一列“误差”:房屋编号实际价格 $(y_i)$预测价格 $(\hat{y}_i)$误差 $(y_i - \hat{y}_i)$1300310-102250240103380350304290300-105330340-10第二步:计算平均绝对误差 (MAE)MAE 给出了误差的平均大小,不考虑它们是正还是负。公式如下: $$ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| $$计算绝对误差: 取每个误差的绝对值。求绝对误差之和: 将它们相加。计算平均值: 将总和除以数据点的数量 ($n=5$)。| 房屋编号 | 误差 $(y_i - \hat{y}_i)$ | 绝对误差 $|y_i - \hat{y}_i|$ | | :------- | :---------------------- | :-------------------------------- | | 1 | -10 | 10 | | 2 | 10 | 10 | | 3 | 30 | 30 | | 4 | -10 | 10 | | 5 | -10 | 10 | | 总和 | | 70 |现在,计算平均值: $$ MAE = \frac{70}{5} = 14 $$解读: 平均而言,我们模型的房价预测误差为14,000美元。MAE的单位与目标变量(本例中为千美元)相同。第三步:计算均方误差 (MSE)MSE 计算的是误差平方的平均值。误差平方使其都变为正值,并赋予较大误差更大的权重。公式如下: $$ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 $$计算平方误差: 将每个误差平方。求平方误差之和: 将它们相加。计算平均值: 将总和除以数据点的数量 ($n=5$)。房屋编号误差 $(y_i - \hat{y}_i)$平方误差 $(y_i - \hat{y}_i)^2$1-101002101003309004-101005-10100总和1300现在,计算平均值: $$ MSE = \frac{1300}{5} = 260 $$解读: MSE为260。请注意,房屋3的单个较大误差30对总和贡献了900,显著影响了MSE。这里的单位是(千美元)平方,这不太直观。这引出了RMSE。第四步:计算均方根误差 (RMSE)RMSE 仅仅是MSE的平方根。这使得指标回到目标变量的原始单位,更易于理解。公式如下: $$ RMSE = \sqrt{MSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} $$计算MSE: 我们已经计算过,MSE = 260。求平方根: 计算 $\sqrt{260}$。$$ RMSE = \sqrt{260} \approx 16.12 $$解读: RMSE约为16,120美元。与MAE类似,它表示我们预测中误差的典型大小,以千美元计。因为它来源于MSE,RMSE对大误差比MAE更敏感(注意RMSE 16.12 > MAE 14)。第五步:计算决定系数 (R方, $R^2$)$R^2$ 告诉我们模型能够解释实际价格变异的比例。它将我们模型的误差与一个仅预测所有房屋平均价格的非常简单的基准模型的误差进行比较。公式如下: $$ R^2 = 1 - \frac{SSR}{SST} = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}i)^2}{\sum{i=1}^{n} (y_i - \bar{y})^2} $$其中:$SSR$(残差平方和)是我们模型平方误差的总和。我们为MSE计算过这个值:$SSR = 1300$。$SST$(总平方和)是实际价格与平均实际价格 ($\bar{y}$) 之间平方差的总和。这表示实际价格的总变异性。让我们计算 $SST$:计算实际价格的平均值 ($\bar{y}$): $$ \bar{y} = \frac{300 + 250 + 380 + 290 + 330}{5} = \frac{1550}{5} = 310 $$ 平均实际价格为310,000美元。计算与平均值的偏差: 找出每套房屋的 $(y_i - \bar{y})$。计算平方偏差: 将这些偏差平方。求平方偏差之和: 将它们相加得到 $SST$。房屋编号实际价格 $(y_i)$平均价格 $(\bar{y})$偏差 $(y_i - \bar{y})$平方偏差 $(y_i - \bar{y})^2$1300310-101002250310-60360033803107049004290310-20400533031020400总和9400 ($SST$)因此,$SST = 9400$。现在我们可以计算 $R^2$: $$ R^2 = 1 - \frac{SSR}{SST} = 1 - \frac{1300}{9400} $$ $$ R^2 = 1 - 0.1383 \approx 0.8617 $$解读: 我们模型的 $R^2$ 约为0.86,即86%。这意味着我们的模型(使用房屋面积)能够解释测试集中实际房价约86%的变异性。对于这个简单例子来说,这通常被认为是很好的拟合。如果 $R^2$ 为1,则表示完美拟合;而 $R^2$ 为0,则表示我们的模型不比仅仅预测每套房屋的平均价格更好。结果总结以下是我们房价预测模型计算出的指标总结:指标值解读MAE14.00平均绝对预测误差为14,000美元。MSE260.00平均平方预测误差(单位为美元平方)。RMSE16.12典型预测误差大小为16,120美元(对大误差敏感)。$R^2$0.8617模型解释了房价约86%的变异性。预测值与实际值可视化散点图通常有助于直观展现回归表现。我们在一个轴上绘制实际值,在另一个轴上绘制预测值。靠近对角线 ($y=x$) 的点表示预测准确。{"layout": {"xaxis": {"title": "实际价格(千美元)"}, "yaxis": {"title": "预测价格(千美元)"}, "title": "实际与预测房价", "shapes": [{"type": "line", "x0": 240, "y0": 240, "x1": 380, "y1": 380, "line": {"color": "#adb5bd", "dash": "dash"}}], "width": 600, "height": 450}, "data": [{"x": [300, 250, 380, 290, 330], "y": [310, 240, 350, 300, 340], "mode": "markers", "type": "scatter", "name": "预测值", "marker": {"color": "#228be6", "size": 10}}]}散点图显示了实际房价与预测房价的对比。虚线灰色线代表完美预测(预测值 = 实际值)。靠近这条线的点表示模型预测良好。本练习展示了如何从一组实际值和预测值中计算标准回归指标。亲手计算这些指标能帮助您直观理解每个指标的含义以及它们对预测误差的不同反应。在评估您自己的模型时,通常会使用库来为您计算这些指标,但理解其背后的计算原理是基本功。