在跑XGBoost之前,我们必须设置三种类型的参数:general parameters、booster parameters和task parameters。
- General parameters关系到我们选择哪个booster来做boosting,通常是树模型和线性模型。
- Booster parameters取决于你选择的哪个booster。
- Learning Task parameters决定了学习场景,举个例子,回归任务在做排序任务时可能用不同的参数。
- Command line parameters和xgboost的CLI版本有关。
R包中的参数
在R包中,你可以用.(dot)来取代在参数中的下划线,比如,你可以用max.depth取代max_depth。在R中带下划线的参数也是有效的。
General Parameters
- booster [default=gbtree]
- 选择用哪个booster,可以使gbtree,gblinear或者dart。gbtree和dart都是基于树模型的,gblinear用的线性函数。
- silent [defaut=0]
- 0表示打印运行中的信息,1表示不显示。
- nthread [default to maximum number of threads available if not set]
- 在跑xgboost时并行使用的线程数量
- num_pbuffer [xgboost自动设置的,不用用户设置]
- 用于预测的缓存大小,通常设置为训练样本的个数。缓存是用来保存最后一步boosting预测的结果的。
- num_feature [xgboost自动设置,不需要用户设置]
- 使用在boosting中的特征的维数,设置为输入数据的特征的最大维数
Parameters for Tree Booster
- eta [default=0.3, 别名学习率]
- 为了防止股拟合每一步更新shrinkage的大小。在每一步boosting后,我们可以直接获得新的特征的权重。eta事实上就是收缩了特征的权重来让boosting的过程更加保守。
- 范围:[0,1]
- gamma [default=0,别名最小划分损失]
- 在树的叶节点上进行进一步的划分需要减小的最小的损失。gamma越大,这个算法越保守。
- 范围:[0, ∞ ]
max_depth [default=6]
- 树的最大深度,增加这个值能让模型更复杂,更可能过拟合。0表示不限制,明智的深度增长策略需要限制最大深度。
- 范围:[0, ∞ ]
min_child_weight [default=1]
- 一个孩子节点所包含的样例的权值和。在树的节点划分阶段,如果一个叶子节点样例权值之和小于min_child_weight则停止划分。在线性回归模型中,简单表示每个节点样例的数量。越大,算法越保守。
- 范围: [0,∞]
- max_delta_step [default=0]
- 这参数限制每棵树权重改变的最大步长。如果这个参数的值为0,那就意味着没有约束。如果它被赋予了某个正值,