一. XGBoost简介
XGBoost(eXtreme Gradient Boosting)是基于GB(Gradient Boosting)模型框架实现的一个高效,便捷,可扩展的一个机器学习库。该库先由陈天奇在2014年完成v0.1版本之后开源到github[1]上,当前最新版本是v0.6。目前在各类相关竞赛中都可以看到其出现的身影,如kaggle[2],在2015年29个竞赛中,top3队伍发表的解决方案中有17个方案使用了XGBoost,而只有11个解决方案使用了深度学习;同时在2015KDDCup中top10队伍都使用了XGBoost[3]。由于其与GBDT(Gradient Boosting decision Tree)存在一定相似之处,网上也经常会有人将GBDT和XGBoost做个对比[4]。最近正好读了陈天奇的论文《XGBoost: A Scalable Tree Boosting System》[3], 从论文中可以看出XGBoost新颖之处在于:
1. 使用了正则化的目标函数,其加入的惩罚项会控制模型复杂度(叶子个数)和叶子结点的得分权重
图1-1 目标函数
2. 使用Shrinkage,通过一个因子η缩减每次最新生成树的权重,其目的是为了降低已生成的树对后续树的影响。
3. 支持列(特征)采样,该方式曾被用于随机森林。可以预防过拟合且加快模型训练速度。
4. 并行计算。Boost方式树是串行生成的,所以其在寻找树分裂点