xgboost

来源:http://blog.csdn.net/han_xiaoyang/article/details/52665396

xgboost实战:http://www.jianshu.com/p/5709fa18cdb4

4. XGBoost的优势

XGBoost算法可以给预测模型带来能力的提升。当我对它的表现有更多了解的时候,当我对它的高准确率背后的原理有更多了解的时候,我发现它具有很多优势:

4.1 正则化

  • 标准GBM的实现没有像XGBoost这样的正则化步骤。正则化对减少过拟合也是有帮助的。
  • 实际上,XGBoost以“正则化提升(regularized boosting)”技术而闻名。

4.2 并行处理

  • XGBoost可以实现并行处理,相比GBM有了速度的飞跃。
  • 不过,众所周知,Boosting算法是顺序处理的,它怎么可能并行呢?每一课树的构造都依赖于前一棵树,那具体是什么让我们能用多核处理器去构造一个树呢?我希望你理解了这句话的意思。如果你希望了解更多,点击这个链接
  • XGBoost 也支持Hadoop实现。

4.3 高度的灵活性

  • XGBoost 允许用户定义自定义优化目标和评价标准
  • 它对模型增加了一个全新的维度,所以我们的处理不会受到任何限制。

4.4 缺失值处理

  • XGBoost内置处理缺失值的规则。
  • 用户需要提供一个和其它样本不同的值,然后把它作为一个参数传进去,以此来作为缺失值的取值。XGBoost在不同节点遇到缺失值时采用不同的处理方法,并且会学习未来遇到缺失值时的处理方法。

4.5 剪枝

  • 当分裂时遇到一个负损失时,GBM会停止分裂。因此GBM实际上是一个贪心算法
  • XGBoost会一直分裂到指定的最大深度(max_depth),然后回过头来剪枝。如果某个节点之后不再有正值,它会去除这个分裂。
  • 这种做法的优点,当一个负损失(如-2)后面有个正损失(如+10)的时候,就显现出来了。GBM会在-2处停下来,因为它遇到了一个负值。但是XGBoost会继续分裂,然后发现这两个分裂综合起来会得到+8,因此会保留这两个分裂。

4.6 内置交叉验证

  • XGBoost允许在每一轮boosting迭代中使用交叉验证。因此,可以方便地获得最优boosting迭代次数。
  • 而GBM使用网格搜索,只能检测有限个值。

4.7、在已有的模型基础上继续

  • XGBoost可以在上一轮的结果上继续训练。这个特性在某些特定的应用上是一个巨大的优势。
  • sklearn中的GBM的实现也有这个功能,两种算法在这一点上是一致的。

xgboost把缺失值当作稀疏矩阵来对待,本身在节点分裂时不考虑缺失值的数值,

缺失值会被分到左子树和右子树分别计算损失,选择较优的那一个,如果训练中没有数据缺失,

预测时出现了数据缺失,那么默认被分类到右子树。

 

posted @ 2017-02-17 18:16  simple_wxl  阅读(1025)  评论(0编辑  收藏  举报