【问题标题】:CatBoost: Are we overfitting?CatBoost:我们是否过度拟合?
【发布时间】:2021-12-07 14:00:55
【问题描述】:

我们的团队目前正在使用 CatBoost 开发信用评分模型,我们目前的流程是...

  1. 按时间顺序对数据进行排序以进行超时采样,并将其拆分为训练集、有效集和测试集
  2. 执行特征工程
  3. 在火车上执行特征选择和超参数调整(主要是学习率),使用 valid 作为提前停止的评估集
  4. 对 train 和 valid 的组合执行超参数调整,使用 test 作为提前停止的评估集
  5. 使用标准指标(RMSE、ROC AUC 等)评估第 4 步的结果

但是,我担心我们可能会过度拟合第 4 步中的测试集。

在第 4 步中,我们是否应该只在训练上重新拟合模型并在不进行调整的情况下有效(即,使用第 3 步中选择的特征和超参数)?

由于我们的超时抽样方案,执行第 4 步的根本目的是根据更新的数据训练模型。

【问题讨论】:

  • 我认为测试集永远不会用于执行任何调整,只是在完成所有优化后确定谁是赢家。但是,我并不是真正的专家。好问题。不太关注具体的编程问题,但我认为仍然是主题。也许CrossValidated StackExchange 更适合这个问题。
  • 我认为测试集不能用于调优超参数
  • @Trilarion,这也是我的想法,感谢您的推荐——也会在那里转发。
  • @swritchie 请仅在您对此处的答案不满意并且可以添加到问题中为什么不满意的情况下重新发布(例如在此答案的评论中添加详细信息)。否则他们的回答可能完全相同。

标签: python xgboost hyperparameters catboost overfitting-underfitting


【解决方案1】:

第 4 步不属于机器学习的最佳做法。

创建测试集时,您需要将其放在一边,仅在最后使用它来评估您的模型在做出预测方面的成功程度。不要使用测试集来通知超参数调整!如果这样做,您将过度拟合数据。

尝试改用cross-validation

【讨论】:

  • 这也是我的想法,虽然我不认为普通的 StratifiedKFold 交叉验证方案由于超时采样而对我们有用,但我认为像 TimeSeriesSplit 这样的方法可能。我只需要思考如何去做。 sklearn 和 catboost 不能很好地结合在一起
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2020-02-17
  • 2021-04-30
  • 2020-01-11
  • 1970-01-01
  • 2017-12-23
  • 2021-03-09
  • 1970-01-01
相关资源
最近更新 更多