Xgboost中需要注意的点

1 简介

Xgboost是目前非常流行的机器学习模型,它属于集成学习中的boosting方法,在多种竞赛场合取得非常好的成绩,在工业界也有广泛应用。它和一般教科书上的讲解的梯度树在理论推导上有较大不同,陈天奇在其分享的ppt《Introduction to Boosted Trees》和发表的论文《XGBoost: A Scalable Tree Boosting System》中详细介绍了Xgb的理论推导,通过泰勒展开引入一阶,二阶信息,推导过程不受具体损失函数影响,形成上非常完美。但是在实际使用中需要注意一些地方,总结如下

2 Xgboost在使用中的注意点

2.1 离散特征如何处理

在Xgb中需要将离散特征one-hot编码,和连续特征一起输入训练,这样做是为了达到在cart树中处理离散特征的方式一致,即每次选择一个离散特征对应的样本作为一类,剩下的所有特征值对应的样本作为一类。不按照扫描切分,因为扫描切分会导致后续的子树中特征组合变少。

2.2 训练数据的格式选择稀疏还是稠密

Xgb中支持稀疏矩阵训练模型,导致数据稀疏的原因如下

  • 缺省值
  • 稠密数据中零元素
  • 离散特征one-hot编码后产生的0值
    下图是《XGBoost: A Scalable Tree Boosting System》中稀疏训练数据和稠密训练数据的效率
    Xgboost中需要注意的点

2.3 缺省值是如何处理的

在Xgb中处理稀疏数据时,没有值的特征是走默认的分支。在2.2中提到缺省值也是稀疏存储的,所以在Xgb中缺省值也是走默认分支

2.4 回归树不仅仅可以处理回归问题

Xgb预测的是树节点上的最有得分,它不仅可以处理回归问题,还可以处理分类,排序问题。它只依赖于定义的损失函数。它可以支持均方误差,似然函数等。