优化 MAE 会降低 MAE 指标

数据挖掘 lightgbm 目标函数
2022-03-01 10:23:37

我通过优化 RMSE 并测量 RMSE 的性能运行了一个 lightgbm 回归模型:

model = LGBMRegressor(objective="regression", n_estimators=500, n_jobs=8)
model.fit(X_train, y_train, eval_metric="rmse", eval_set=[(X_train, y_train), (X_test, y_test)], early_stopping_rounds=20)

该模型在 500 次迭代中不断改进。以下是我在 MAE 上获得的表演:

火车上的 MAE:1.080571 测试中的 MAE:1.258383

但是我真正感兴趣的指标是MAE,所以我决定直接对其进行优化(并选择它作为评估指标):

model = LGBMRegressor(objective="regression_l1", n_estimators=500, n_jobs=8)
model.fit(X_train, y_train, eval_metric="mae", eval_set=[(X_train, y_train), (X_test, y_test)], early_stopping_rounds=20)

无论如何,MAE 在训练和测试中的表现都会下降:

火车上的 MAE:1.277689 测试中的 MAE:1.285950

当我查看模型的日志时,它似乎陷入了局部最小值,并且在大约 100 棵树之后没有改善......你认为这个问题与 MAE 的不可微性有关吗?

以下是学习曲线:

优化 RMSE 时的 MAE 演化 优化 RMSE 时的 MAE 演化

优化 MAE 时的 MAE 演化 优化 MAE 时的 MAE 演化

1个回答

我的猜测是,这是由于两种度量之间的差异:与 MAE 相比,RMSE 由于平方而更重视大误差。因此,在 RMSE 上优化的模型有强烈的动机在其预测远离真实值时更正其预测,即使这些情况并不常见。相比之下,在 MAE 上优化的模型倾向于为尽可能多的实例获得正确的预测。

所以我的假设是,在 RMSE 上优化的模型恰好通过尝试首先解决大错误来找到更好的参数,而在 MAE 上优化的模型最终处于无法在不牺牲大错误的情况下改进少数情况的状态误差小的情况很多。应该可以通过观察两个模型预测的不同实例以及预测的程度来检查。

我还要指出,MAE 优化模型不像 RMSE 模型那样过度拟合。所以我不确定 RMSE 模型通常比 MAE 模型好得多,因为测试集上的性能差异并不那么大。