Boosting - Xgboost (not finish)   2018-07-03


Github上和机器学习工具包(如sklearn)中有很多优秀的开源boosting实现。在这里重点介绍@陈天奇怪同学的 Xgboost.

Kaggle上的许多数据挖掘竞赛,Boosting 类方法都帮助参赛者取得了好成绩. 其中很多优秀战果都是用的 Xgboost神器

Xgboost 提供了Graident Boosting算法的框架,给出了GBDT,GBRT,GBM具体实现。提供了多语言接口(C++, Python, Java, R等),供大家方便使用。

最新版本的xgboost是基于分布式通信协议rabit开发的,可部署在分布式资源调度系统上(如yarn,s3等)。我们完全可以利用最新版的xgboost在分布式环境下解决分类、预估等场景问题。

XGBoost是DMLC(即分布式机器学习社区)下面的一个子项目,由@陈天奇怪,@李沐等机器学习大神发起。
Rabit是一个为分布式机器学习提供Allreduce和Broadcast编程范式和容错功能的开源库(也是@陈天奇同学的又一神器)。它主要是解决MPI系统机器之间无容错功能的问题,并且主要针对Allreduce和Broadcast接口提供可容错功能。

1. Overfitting 过拟合

XGBoost里可以使用两种方式防止 Overfitting

直接控制模型复杂度

  • max_depth,基学习器的深度,增加该值会使基学习器变得更加复杂,荣易过拟合,设为0表示不设限制,对于depth-wise的基学习器学习方法需要控制深度
  • min_child_weight,子节点所需的样本权重和(hessian)的最小阈值,若是基学习器切分后得到的叶节点中样本权重和低于该阈值则不会进一步切分,在线性模型中该值就对应每个节点的最小样本数,该值越大模型的学习约保守,同样用于防止模型过拟合
  • gamma,叶节点进一步切分的最小损失下降的阈值(超过该值才进一步切分),越大则模型学习越保守,用来控制基学习器的复杂度(有点LightGBM里的leaf-wise切分的意味)

给模型训练增加随机性使其对噪声数据更加鲁棒

  • 行采样:subsample
  • 列采样:colsample_bytree
  • 步长:eta即shrinkage

2. 数据类别分布不均

3. 调参

4. 一般参数

5. 基学习器参数

6. 任务参数

7. 命令行参数

Reference article


分享到:


  如果您觉得这篇文章对您的学习很有帮助, 请您也分享它, 让它能再次帮助到更多的需要学习的人. 您的支持将鼓励我继续创作 !
本文基于署名4.0国际许可协议发布,转载请保留本文署名和文章链接。 如您有任何授权方面的协商,请邮件联系我。

Contents

  1. 1. Overfitting 过拟合
  2. 2. 数据类别分布不均
  3. 3. 调参
  4. 4. 一般参数
  5. 5. 基学习器参数
  6. 6. 任务参数
  7. 7. 命令行参数
  • Reference article