xgboost介绍
xgboost是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量kaggle选手选用它进行数据挖掘比赛,其中包括两个以上kaggle比赛的夺冠方案。在工业界规模方面,xgboost的分布式版本有广泛的可移植性,支持在YARN, MPI, Sungrid Engine等各个平台上面运行,并且保留了单机并行版本的各种优化,使得它可以很好地解决于工业界规模的问题。本文主要针对xgboost单机训练&预测以及spark训练与预测进行介绍&demo介绍,方便后面人借鉴使用。
xgboost-python环境&Demo
Anaconda 3安装
Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。Anaconda通过管理工具包、开发环境、Python版本,大大简化了你的工作流程。不仅可以方便地安装、更新、卸载工具包,而且安装时能自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目。在 Anaconda 官网中是这么宣传自己的:适用于企业级大数据分析的Python工具。其包含了720多个数据科学相关的开源包,在数据可视化、机器学习、深度学习等多方面都有涉及。不仅可以做数据分析,甚至可以用在大数据和人工智能领域。
创建python环境
conda create -n xgboost-en
激活&退出环境
source/conda activate xgboost-env
source/conda deactivate
安装xgboost
-
首先安装libgcc: conda install libgcc
-
然后安装xgboost: pip install xgboost
xgboost demo
训练数据准备
xgboost支持libsvm格式,使得训练加速,当然也支持numpy格式数据等,这里使用libsvm格式数据,采用数据集可以从这里
获取
训练
import xgboost as xgb
from sklearn.metrics import roc_auc_score
dtest = xgb.DMatrix('test.data')
dtrain = xgb.DMatrix('train.data')
param = {
'max_depth': 5,
'eta': 0.08,
'silent': 0,
'objective': 'binary:logistic',
'gamma': 0.2,
'subsample': 0.8,
'colsample_bytree': 0.8,
'eval_metric': 'auc',
'nthread': 16
}
watchlist = [(dtest, 'eval'), (dtrain, 'train')]
num_round = 100
bst = xgb.train(param, dtrain, num_round, watchlist)
bst.save_model('xgboost_demo.model')
# evaluate.
y_test = dtest.get_label()
y_pred = bst.predict(dtest)
auc = roc_auc_score(y_test, y_pred)
print (auc)
预测
import xgboost as xgb
from sklearn.metrics import roc_auc_score
xgbmodel = xgb.load('xgboost_demo.model')
dtest = xgb.DMatrix('test.data')
y_pred = bst.predict(dtest)
spark版xgboost环境&Demo
XGBoost4J-Spark这个项目通过使XGBoost适应Apache Spark的MLLIB框架,无缝集成XGBoost和Apache Spark。通过集成,用户不仅可以使用XGBoost的高性能算法实现,还可以利用Spark强大的数据处理引擎实现以下功能:
-
特征工程:特征提取,变换,降维和选择等.
-
管道:构造,评估和调整ML管道
-
持久性:持久性并加载机器学习模型甚至整个管道
依赖
XGBoost4J-Spark在0.72版本需要Apache Spark 2.3+,否则会出现各种异常情况,引入以下依赖:
<!--xgboost-->
<dependency>
<groupId>ml.dmlc</groupId>
<artifactId>xgboost4j</artifactId>
<version>0.72</version>
</dependency>
<dependency>
<groupId>ml.dmlc</groupId>
<artifactId>xgboost4j-spark</artifactId>
<version>0.72</version>
</dependency>
准备libsvm格式训练数据
libSVM是台湾林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量机的库,这套库运算速度还是挺快的&#x