XGBClassifier() Python 3.x 中的子样本、colsample_bytree、colsample_bylevel

新手上路,请多包涵

我花了很多时间试图找出这些“subsample”、“colsample_by_tree”和“colsample_bylevel”在 XGBClassifier() 中实际做了什么,但我无法确切地找出它们的作用。有人可以简要解释一下他们在做什么吗?

谢谢!

原文由 Pyrowomat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 571
1 个回答

“subsample”、“colsample_by_tree”和“colsample_bylevel”的概念来自随机森林。在其中,您构建了许多树的集合,然后在进行预测时将它们组合在一起。

“随机”部分通过对每棵树的训练样本进行随机抽样(自举),并仅考虑属性的随机子集来构建每棵树(实际上是每棵树的节点)。

换句话说,对于随机森林中的每棵树,您:

  1. 从数据集中选择一个随机样本来训练这棵树;
  2. 对于这棵树的每个节点,使用特征的随机子集。这避免了过度拟合和去相关树。

与随机森林类似,XGB 是弱模型的集合,当它们放在一起时会给出稳健和准确的结果。弱模型可以是决策树,可以像随机森林一样随机化。在这种情况下:

  • “子样本”是将用于训练每棵树的训练样本(随机选择)的一部分。
  • “colsample_by_tree”是将用于训练每棵树的部分特征(随机选择)。
  • “colsample_bylevel”是将在每个节点中用于训练每棵树的特征部分(随机选择)。

原文由 Álvaro Salgado 发布,翻译遵循 CC BY-SA 4.0 许可协议

logo
Stack Overflow 翻译
子站问答
访问
宣传栏