首页 > 解决方案 > 通过更改 XGBClassifier 的 random_state 来更改模型性能

问题描述

我为我的分类问题训练了一个 XGBClassifier,并使用 optuna 对巨大的网格进行了超参数调整(可能调整了每个可能的参数)。在测试时,random_state 的变化会改变模型性能指标(roc_auc/recall/precision)、feature_importance 甚至模型预测(predict_prob)。

  1. 这告诉我关于我的数据的什么信息?

由于我必须在生产中使用这个模型,我应该如何解决这个问题以使模型更健壮?

  1. 使用我们在 cross_validation 期间使用的一个 random_state(例如默认值 0)并在样本外使用它。
  2. 在 cross_validation 期间,在每个 param_combination 之上,运行一些 random_state(比如 10)并获取 avg 模型性能。

标签: pythonxgboostfeature-selectionxgbclassifier

解决方案


我倾向于认为,如果模型对随机种子敏感,它就不是一个很好的模型。使用 XGB 可以尝试添加更多估算器 - 这有助于使其更加稳定。

对于具有随机种子的任何模型,对于每个候选参数选项集(通常已经过滤到候选候选名单),我倾向于对不同随机种子的相同数据运行一堆重复并测量输出的差异。我希望评估指标的标准差很小(相对于均值),并且每个类中预测的重叠度非常高。如果其中任何一个都不是我不接受该模型的情况。如果是这种情况,我只是随机选择一个候选模型——随机种子是什么并不重要!

我仍然记录使用的随机种子 - 这仍然需要重新创建结果!


推荐阅读