xgboost构建过程
- xgboost 从顶到底构建树,在从低到顶反向进行剪枝。
- xgboost的并行不是tree粒度的,而是在特征粒度上的。决策树学习中最耗时的一个步骤是对特征的值进行排序,xgboost在训练之前,预先对数据进行了排序,保存为block结构,迭代中重复地使用这个结构。
在进行节点分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,各个特征的增益计算可以并行计算。 - xgboost支持自定义目标函数和评估函数,只要目标函数二阶可导。
- xgboost借鉴了随机森林的做法,支持column subsampling(特征采样)。
- 5.
booster : tree、linear
参数
- eta 收缩步长,缺省值=0.3,通常设置为[0.01,0.2]。
减小eta,模型学习速度变慢,增加num_round。 - gamma 最小分裂损失函数值,取值[0,+∞]。默认情况下,节点的划分需在loss 值大于0的情况下进行。
- max_depth, 树的最大深度,最大值为6。通常取值[3,10]。
- min_child_weight , 孩子节点中最小的样本权重和。如果一个叶子节点的样本权重和小于该值则拆分过程结束。
- subsample 训练数据采样率。
- colsample_bytree 每个树对特征的采样率
- colsample_bylevel 每次分割对特征的采样率
- lambda L2 norm of leaf weights
- alpha L1 norm one leaf weights
max_depth、min_child_weight、gamma直接控制模型的complexity,影响模型的过拟合程度;subsample、colsample_bytree 增加模型鲁棒性。
objective
默认为reg:linear , 这个参数定义需要被最小化的损失函数。
binary:logistic 二分类逻辑回归,返回预测的概率
multi:softmax 返回预测的类别,需要定义num_class。
multi:softprob 返回属于各个类别的概率。
eval_metric
默认值取决于objective的取值。对于回归问题,默认值为rmse,对于分类问题,默认值是error。