R.python常见问题③(xgboost介绍和安装)

如何安装 xgboost?

什么是 xgboost?

XGBoost :eXtreme Gradient Boosting
项目地址:https://github.com/dmlc/xgboost

是由 Tianqi Chen http://homes.cs.washington.edu/~tqchen/ 最初开发的实现可扩展,便携,分布式 gradient boosting (GBDT, GBRT or GBM) 算法的一个库,可以下载安装并应用于 C++,Python,R,Julia,Java,Scala,Hadoop,现在有很多协作者共同开发维护。

XGBoost 所应用的算法就是 gradient boosting decision tree,既可以用于分类也可以用于回归问题中。

那什么是 Gradient Boosting?

Gradient boosting 是 boosting 的其中一种方法

所谓 Boosting ,就是将弱分离器 f_i(x) 组合起来形成强分类器 F(x) 的一种方法。

所以 Boosting 有三个要素

  • A loss function to be optimized:
    例如分类问题中用 cross entropy,回归问题用 mean squared error。

  • A weak learner to make predictions:
    例如决策树。

  • An additive model:
    将多个弱学习器累加起来组成强学习器,进而使目标损失函数达到极小。

Gradient boosting 就是通过加入新的弱学习器,来努力纠正前面所有弱学习器的残差,最终这样多个学习器相加在一起用来进行最终预测,准确率就会比单独的一个要高。之所以称为 Gradient,是因为在添加新模型时使用了梯度下降算法来最小化的损失。

为什么要用 xgboost?

前面已经知道,XGBoost 就是对 gradient boosting decision tree 的实现,但是一般来说,gradient boosting 的实现是比较慢的,因为每次都要先构造出一个树并添加到整个模型序列中。

而 XGBoost 的特点就是计算速度快,模型表现好,这两点也正是这个项目的目标。

表现快是因为它具有这样的设计:

  • Parallelization:
    训练时可以用所有的 CPU 内核来并行化建树。
  • Distributed Computing :
    用分布式计算来训练非常大的模型。
  • Out-of-Core Computing:
    对于非常大的数据集还可以进行 Out-of-Core Computing。
  • Cache Optimization of data structures and algorithms:
    更好地利用硬件。

Xgboost第一感觉就是防止过拟合+各种支持分布式/并行,所以一般传言这种大杀器效果好(集成学习的高配)+训练效率高(分布式),与深度学习相比,对样本量和特征数据类型要求没那么苛刻,适用范围广。

Xgboost和深度学习的关系,陈天奇在Quora上的解答如下:
不同的机器学习模型适用于不同类型的任务。深度神经网络通过对时空位置建模,能够很好地捕获图像、语音、文本等高维数据。而基于树模型的XGBoost则能很好地处理表格数据,同时还拥有一些深度神经网络所没有的特性(如:模型的可解释性、输入数据的不变性、更易于调参等)。 这两类模型都很重要,并广泛用于数据科学竞赛和工业界。举例来说,几乎所有采用机器学习技术的公司都在使用tree boosting,同时XGBoost已经给业界带来了很大的影响。

参考文献:

    原文作者:左手柳叶刀右手小鼠标
    原文地址: https://www.jianshu.com/p/71eb2b26db59
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞