从三个角度看XBGoost参数

XGBoost 的优点


1. Regularization

  1. XGBoost被看作是 ‘regularized boosting’ 技术.
  2. BGM是没有regularization的

2. Parallel Processing:

  1. XGBoost实现了并行化计算====>
  2. 提问:boosting是sequential process,怎么并行?
  3. XGBoost能在Hadoop上执行

3. High Flexibility

  1. 可以自定义优化目标和评估标准(custom optimization objectives and evaluation criteria.)
  2. 如此一来增加了新的维度,使得 there is no limit to what we can do.

4. Handling Missing Values

  1. XGBoost有内置的routine处理缺失值
  2. 用户需要提供与其他观察值不同的值,并将其作为参数传递。
    XGBoost在任何节点上遇到缺失的值的时候,会尝试不同的方法,学习填充缺失值应该使用哪条路径。

5. Tree Pruning

  1. GBM采用的是贪心算法,分裂时候遇到 negative loss 就会停止划分 (走一步看一步)
  2. XGBoost使分割达到指定的max_depth,然后开始向后修剪树并移除没有正增益的分割(走完全部,回头审查)
  3. GBM看到 loss == -2 的时候可能就停止了,但是也许后面 loss == +10。XGBoost会继续下去,使得 loss== +8

6. Built-in Cross-Validation

  1. 允许 每次迭代进行交叉验证
  2. This is unlike GBM where we have to run a grid-search and only a limited values can be tested.

7. Continue on Existing Model

  1. 我们可以基于上一次迭代来训练XGBoost
  2. 不过,sklearn 中的GBM也有这个功能实现

XGBoost Parameters


General Parameters: Guide the overall functioning
Booster Parameters: Guide the individual booster (tree/regression) at each step
Learning Task Parameters: Guide the optimization performed

1. General Parameters

1.1 booster [default=gbtree]

每次迭代选择何种模型,主要有两种选择:

  • gbtree: tree-based models
  • gblinear: linear models

1.2 silent [default=0]

  • 设置为1,表示不打印任何信息。(Silent mode is activated is set to 1 )
  • 设置为0,打印适时有用信息

1.3 nthread [default to maximum number of threads available if not set]

  • 用于平行处理(number of cores in the system should be entered)
  • 不设置改参数,则会使用所有cores

2. Booster Parameters

下文主要介绍 tree booster

2.1 eta [default=0.3]

  • 类似于GBM中的学习率
  • 通过缩小每个步骤的权重使模型更健壮
  • 典型的最终值将被使用:0.01-0.2

2.2 min_child_weight [default=1]

  • 孩子节点的样本权重和的最小值。
  • 如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束。在现行回归模型中,这个参数是指建立每个模型所需要的最小样本数。该成熟越大算法越保守。
  • 可以理解为某些节点的分裂对损失函数的贡献很小,因此不再分裂
  • 和GBM的 min_child_leaf 参数类似,但不完全一样。XGBoost的这个参数是最小样本权重的和,而GBM参数是最小样本总数。
  • 这个参数用于避免过拟合。当它的值较大时,可以避免模型学习到局部的特殊样本。
  • 但是如果这个值过高,会导致欠拟合。这个参数需要使用CV来调整。

2.3 max_depth [default=6]

  • 和GBM中的参数相同,这个值为树的最大深度。
  • 这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。
  • 需要使用CV函数来进行调优。
  • 典型值:3-10

2.4 max_leaf_nodes

  • 树上最大的节点或叶子的数量。
  • 可以替代max_depth的作用。因为如果生成的是二叉树,一个深度为n的树最多生成n2个叶子。
  • 如果定义了这个参数,GBM会忽略max_depth参数。

2.5 gamma [default=0]

  • 在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。
  • 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。### 2.6

2.6 max_delta_step [default=0]

  • 这参数限制每棵树权重改变的最大步长。如果这个参数的值为0,那就意味着没有约束。如果它被赋予了某个正值,那么它会让这个算法更加保守。
  • 通常,这个参数不需要设置。但是当各类别的样本十分不平衡时,它对逻辑回归是很有帮助的。
  • 这个参数一般用不到,但是你可以挖掘出来它更多的用处。

2.7 subsample [default=1]

  • 和GBM中的subsample参数一模一样。这个参数控制对于每棵树,随机采样的比例。
  • 减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。
  • 典型值:0.5-1

2.8 colsample_bytree [default=1]

  • 和GBM里面的max_features参数类似。用来控制每棵随机采样的列数的占比(每一列是一个特征)。
  • 典型值:0.5-1

2.9 colsample_bylevel [default=1]

  • 用来控制树的每一级的每一次分裂,对列数的采样的占比。
  • 一般不太用这个参数,因为subsample参数和colsample_bytree参数可以起到相同的作用。但是如果感兴趣,可以挖掘这个参数更多的用处。

2.10 lambda [default=1]

  • 权重的L2正则化项。(和Ridge regression类似)。
  • 这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数在减少过拟合上还是可以挖掘出更多用处的。

2.11 alpha [default=0]

  • 权重的L1正则化项。(和Lasso regression类似)。
  • 可以应用在很高维度的情况下,使得算法的速度更快。

2.12 scale_pos_weight [default=1]

  • 在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。

3. Learning Task Parameters

3.1 objective [default=reg:linear]

这个参数定义需要被最小化的损失函数。最常用的值有:

  • binary:logistic :二分类的逻辑回归,返回预测的概率(不是类别)。
  • multi:softmax : 使用softmax的多分类器,返回预测的类别(不是概率)。 在这种情况下,你还需要多设一个参数:num_class(类别数目)。
  • multi:softprob: 和multi:softmax参数一样,但是返回的是每个数据属于各个类别的概率。

3.2 eval_metric [ default according to objective ]

  • 对于有效数据的度量方法。
  • 对于回归问题,默认值是rmse,对于分类问题,默认值是error。
  • 典型值有:
    • rmse 均方根误差
    • mae 平均绝对误差
    • logloss 负对数似然函数值
    • error 二分类错误率(阈值为0.5)
    • merror 多分类错误率
    • mlogloss 多分类logloss损失函数
    • auc 曲线下面积

3.3 seed [default=0]

  • 随机数的种子
  • 设置它可以复现随机数据的结果,也可以用于调整参数

Scikit-learn中有个XGBClassifier包,有些函数名需要变动:
1、eta -> learning_rate
2、lambda -> reg_lambda
3、alpha -> reg_alpha

点击原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值