机器学习回归评估指标全解析:如何衡量模型的准确性?


📖阅读时长:25分钟

🕙发布时间:2025-02-09

近日热文:全网最全的神经网络数学原理(代码和公式)直观解释
欢迎关注知乎和公众号的专栏内容
LLM架构专栏
知乎LLM专栏
知乎【柏企
公众号【柏企科技说】【柏企阅文

为什么评估指标在回归中至关重要?

在回归任务里,我们的目标是预测一个连续的结果。评估指标就像是精准的“度量衡”,能帮我们量化预测的准确性,还能帮我们找到模型有待提升的地方。至于选择哪种评估指标,这得看我们具体想要衡量什么:预测值与实际值有多接近?模型是否总是预测偏高或偏低?评估指标对异常值的敏感程度如何?每个评估指标都有其独特的用途,下面我们就逐个详细分析。

1. 均方误差(MSE)

均方误差,是实际值和预测值之间平方差的平均值。对误差进行平方处理,意味着较大的误差会受到更严重的“惩罚”,这也导致均方误差对异常值十分敏感。

  • 公式:$MSE=\frac{1}{n}\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^{2}$ ,这里的$n$代表样本数量,$y_{i}$是实际值,$\hat{y}_{i}$是预测值。
  • 优点:对大误差的惩罚力度大,能有效揪出那些明显偏离实际的预测,对捕捉重大偏差很有帮助。
  • 缺点:由于误差是平方计算的,所以均方误差可能会对异常值过于敏感,超出我们预期的程度。
  • 代码示例

    from sklearn.metrics import mean_squared_error
    mse = mean_squared_error(y_test, y_pred)
    print("Mean Squared Error (MSE):", mse)
  • 释义:均方误差的值越低,代表模型的表现越出色。不过,因为它的单位是平方后的,直接去理解它的大小含义可能有点困难。

2. 平均绝对误差(MAE)

平均绝对误差衡量的是一组预测中误差的平均大小,而且不考虑误差的方向。和均方误差不同,它不会对误差项进行平方操作,所以对异常值没那么敏感。

  • 公式:$MAE=\frac{1}{n}\sum_{i = 1}^{n}|y_{i}-\hat{y}_{i}|$ ,$n$、$y_{i}$、$\hat{y}_{i}$含义同上。
  • 优点:能直截了当地展现出误差的大小,理解起来毫无压力。
  • 缺点:对所有误差“一视同仁”,大误差和小误差受到的“惩罚”是一样的,这样就没办法突出大误差的问题了。
  • 代码示例

    from sklearn.metrics import mean_absolute_error
    mae = mean_absolute_error(y_test, y_pred)
    print("Mean Absolute Error (MAE):", mae)
  • 释义:平均绝对误差表示的是预测值和实际值之间平均的绝对差异。它和目标变量的单位一致,这就让我们解读起来更加轻松。

3. 均方根误差(RMSE)

均方根误差其实就是均方误差的平方根,它的误差单位和目标变量是一样的。这个指标巧妙地结合了均方误差(对大误差敏感)和可解释性的优点,因为它和原始数据的单位相同。

  • 公式:$RMSE = \sqrt{\frac{1}{n}\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^{2}}$ ,依然是基于均方误差公式开根号得到。
  • 优点:既有平均绝对误差那种易于解释的特点,又保留了均方误差对异常值敏感的特性。
  • 缺点:和均方误差一样,很容易受到异常值的影响。
  • 代码示例

    import numpy as np
    rmse = np.sqrt(mean_squared_error(y_test, y_pred))
    print("Root Mean Squared Error (RMSE):", rmse)
  • 释义:均方根误差越低,说明模型的拟合效果越好。而且由于它和目标变量单位相同,比起均方误差,理解起来更加直观。

4. R²分数(确定系数)

R²分数表示的是因变量中,能由自变量预测出来的方差比例。简单来说,它能告诉我们模型对目标数据变化的解释能力究竟如何。

  • 公式:$R^{2}=1-\frac{\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^{2}}{\sum_{i = 1}^{n}(y_{i}-\bar{y})^{2}}$ ,其中$\bar{y}$是实际值的均值。
  • 优点:用一个标准化的数值(取值在0到1之间)来衡量模型性能,方便比较不同模型的优劣。
  • 缺点:要是往模型里加一些不相关的特征,R²分数有时会虚高,容易让人误以为模型真的变好了,产生误导。
  • 代码示例

    from sklearn.metrics import r2_score
    r2 = r2_score(y_test, y_pred)
    print("R² Score:", r2)
  • 释义

    • R² = 1 :代表模型和数据完美契合,预测效果堪称完美。
    • R² = 0 :说明模型的预测效果和直接取平均值差不多,没有发挥出模型的优势。
    • R² < 0 :这就表明模型表现比直接取平均值还差劲。

真实世界的例子:评估学生表现预测

我们把这些评估指标用到预测学生成绩的模型中,看看依据学生的学习时长、过往成绩等因素,这个模型预测学生表现的能力到底怎么样。

mse = mean_squared_error(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)
print("Evaluation Metrics for Student Performance Prediction")
print("Mean Squared Error (MSE):", mse)
print("Mean Absolute Error (MAE):", mae)
print("Root Mean Squared Error (RMSE):", rmse)
print("R² Score:", r2)

结果解释

  • MSE:反映平均平方误差,数值越小,意味着大误差出现的次数越少。
  • MAE:直接展示平均误差幅度,让我们对误差大小一目了然。
  • RMSE:结合目标变量的单位,帮助我们更好地理解误差的实际大小。
  • R² Score:体现模型能够解释学生成绩表现指标变化的程度。

本文由mdnice多平台发布


柏企科技圈
15 声望5 粉丝