“GBDT和XGBoost在竞赛和工业界使用都非常频繁,能有效的应用到分类、回归、排序问题,虽然使用起来不难,但是要能完整的理解还是有一点麻烦的。本文尝试一步一步梳理GB、GBDT、XGBoost,它们之间有非常紧密的联系,GBDT是以决策树(CART)为基学习器的GB算法,XGBoost扩展和改进了GDBT,XGBoost算法更快,准确率也相对高一些。”,上面这句话引用自《一步一步理解GB、GBDT、XGBoost》,个人觉的很好的对比了几种算法的不同,更好的理解XGBoost,有兴趣的同学可以看看。
经测试用GBDT(Gradient Boosting Decision Tree)在Spark上需要10小时才能训练出的数据量,XGBoost仅仅只用了一半的集群资源,10分钟就搞定了。真实速度惊人,为了进一步发挥Spark的潜能,这篇文章我们讲讲如何把XGBoost部署在分布式环境中。
因为Jupyter安装在node0中,所以我们在node0节点上安装XGBoost。root用户登录此节点。
Quick Start
安装 GCC
下载gcc源码包,并解压,进入该目录
检测
1 | configure --enable-checking=release --enable-languages=c,c++ --disable-multilib |
编译
1 | make -j10 |
安装
1 | make install |
本文使用的是 gcc version 4.8.5
安装 CMake
下载cmake的源码包,安装方法与gcc安装相同。本文使用的是cmake version 3.10.1
编译 libhdfs
libhdfs主要用于XGBoost访问HDFS文件系统。
在hadoop-common,下载最近发布版,下载完成后进入hadoop-hdfs-project/hadoop-hdfs/src,编辑:
1 | cmake -DGENERATED_JAVAH=/opt/jdk1.8.0_65 -DJAVA_HOME=/opt/jdk1.8.0_65 |
将编译完成的文件,拷贝到xgboost-packages中
1 | cp -r /usr/local/lib /opt/xgboost-packages/libhdfs |
安装 XGBoost
它支持Python,R,Julia,Scala 4种语言。本文介绍Python的安装和使用。
下载
root用户登录,下载python-package,我们把文件包依然放在/opt目录下。下载完后进入/python-package/xgboost文件夹,拷贝配置文件:
1 | cp make/config.mk ./ |
修改配置
修改./config.mk文件配置
1 | # 使用HDFS文件系统 |
编译
1 | make -j10 |
小结
完成上述配置后,XGBoost就可以在Spark集群中运行了。你也可以参考《官方文档》,查看单机安装教程。下篇《Hadoop 附录》
本系列文章《目录》