XGBClassifier()Python 3.x中的subsample,colsample_bytree,colsample_bylevel

时间:2018-06-25 11:50:47

标签: python-3.x xgboost

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

谢谢!

2 个答案:

答案 0 :(得分:0)

“子样本”,“ colsample_by_tree”和“ colsample_bylevel”的思想来自随机森林。 在其中,您可以构建许多树木的集合,然后在进行预测时将它们分组在一起。

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

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

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

类似于随机森林,XGB是一组弱模型,将它们放在一起可以给出可靠而准确的结果。 弱模型可以是决策树,可以以与随机森林相同的方式将其随机化。 在这种情况下:

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

答案 1 :(得分:0)

希望有人会发现我的回答有帮助:

  1. colsample_bytree - 创建新树时列的随机子样本
  2. colsample_bylevel - 达到每个新的新级别时列的随机子样本。 IE。您有 3 个级别的树,在第 1 个级别 A 和 B 被选择,在第二个 B 和 C 等。 注意:此采样基于第一个 (colsample_bytree)。
  3. colsample_bynode - 基于每次拆分(向左或向右转向)的列的随机子样本。因此,如果该级别具有左右拆分,则每个级别可能有 2 个不同的子样本。 注意:此抽样基于 №2,因为 №2 基于 №1。

文档:https://xgboost.readthedocs.io/en/latest/parameter.html

CMND+F 以下内容,您将找到该部分: colsample_bytree, colsample_bylevel, colsample_bynode [default=1]