二、回归问题评估指标

回归问题的目标是预测连续值,常见的评估指标有以下几种。

1. 均方误差 (MSE)

MSE 是预测值与真实值之间差异的平方的平均值,常用于衡量模型的预测误差。

适用场景

对大误差比较敏感的场景,因为误差平方放大了大的偏差。

from sklearn.metrics import mean_squared_error  
  
y_true = [3, -0.5, 2, 7]  
y_pred = [2.5, 0.0, 2, 8]  
mse = mean_squared_error(y_true, y_pred)  
print("Mean Squared Error (MSE):", mse)

2. 均方根误差 (RMSE)

RMSE是 MSE 的平方根,用于衡量预测误差的平均幅度。

RMSE 的单位与原始预测变量相同,因此便于理解。

from sklearn.metrics import mean_squared_error  
import numpy as np  
  
y_true = [3, -0.5, 2, 7]  
y_pred = [2.5, 0.0, 2, 8]  
mse = mean_squared_error(y_true, y_pred)  
rmse = np.sqrt(mse)  
print("Root Mean Squared Error (RMSE):", rmse)

3. 平均绝对误差 (MAE)

MAE 是预测值与真实值之间差异的绝对值的平均值,衡量模型预测误差的平均大小。

适用场景

对所有误差同等看待的场景。

from sklearn.metrics import mean_absolute_error  
  
y_true = [3, -0.5, 2, 7]  
y_pred = [2.5, 0.0, 2, 8]  
mae = mean_absolute_error(y_true, y_pred)  
print("Mean Absolute Error (MAE):", mae)

4. R方值

R² 表示模型解释了目标变量总变异的比例,取值范围为 0到1,数值越大表示模型越好。

适用场景

适用于评估回归模型的整体性能。

from sklearn.metrics import r2_score  
  
y_true = [3, -0.5, 2, 7]  
y_pred = [2.5, 0.0, 2, 8]  
r2 = r2_score(y_true, y_pred)  
print("R-squared (R^2):", r2)

5. 调整后的 R²

调整后的 是在 的基础上引入了对模型复杂度的惩罚,考虑了模型中自变量的数量。

其公式为

其中:

  • n 是样本数量。
  • p 是模型中的自变量(特征)数量。
from sklearn.metrics import r2_score  
def adjusted_r2(r2, n, k):  
    return 1 - (1 - r2) * (n - 1) / (n - k - 1)  
  
y_true = [3, -0.5, 2, 7]  
y_pred = [2.5, 0.0, 2, 8]  
r2 = r2_score(y_true, y_pred)  
n = len(y_true)  # Number of observations  
k = 1  # Number of predictors  
adj_r2 = adjusted_r2(r2, n, k)  
print("Adjusted R-squared:", adj_r2)