首页 > 解决方案 > 如何组合不同指标的结果并从中生成分数?

问题描述

我有以下数据框,它使用不同的指标显示了我的 6 个模型的性能。我想从所有指标的结果中生成一个分数,然后检测最佳模型。我不能使用平均值,因为指标的方向不同。(例如,AUC 越高越好,但 MAE、MSE 和 RMSE 越低越好)

  Model RMSE    MAE     MSE     AUC    Score
0   a   0.29    0.187   0.084   0.65     ?
1   b   0.29    0.187   0.084   0.649    ?
2   c   0.299   0.17    0.09    0.64     ?
3   d   0.308   0.149   0.095   0.663    ?
4   e   0.314   0.143   0.099   0.675    ?
5   f   0.319   0.146   0.102   0.682    ?

如果我只是将它们全部相乘,然后将它们乘以 1/AUC 并使用这个值作为分数,这是否合理?

有任何想法吗?

标签: pythonmetricsauc

解决方案


这取决于您要解决的目标函数和问题。

通常,“最佳”模型在使用某些指标时比其他模型表现更好,但在其他指标中表现不佳。例如在您的示例中,RMSE 的增加会提供更好的 AUC 但更差的 MAE。查看 scikit 文档,了解您可能使用的大量错误指标列表:https ://scikit-learn.org/stable/modules/model_evaluation.html 。您将需要决定是否所有人都获得相同的权重。

您可能希望考虑 bagging,将所有模型的加权组合结合起来,而不是只选择一个模型来减少处理样本外数据时的泛化错误。

还可以考虑生成遵循训练数据集随机分布的样本外数据。您可能会发现样本外数据为每个模型生成的误差指标与样本内结果完全不同,这些样本外测试的蒙特卡罗模拟将使您更清楚地了解哪些模型和要关注的错误指标。


推荐阅读