文 | Jin.Zhang
来自数据算法(gh_e67de4d10fad)
0. 前言
虽然近年深度学习的使用越来越广泛,但是在小数据集上树模型表现往往会更加优秀,也是中小规模数据集上首选使用的模型。理论上使用树模型可以对特征空间进行无限划分,同时可以加入反映树复杂度的正则项、剪枝策略等防止过拟合,因此通过参数调整权衡方差与偏差,可以得到较优的精度。
单一的树模型不太常用,提度提升树GBDT是一种精度更高的基于树的组合模型。XGBoost在GBDT的基础上,对目标函数增加了二阶泰勒展开项,同时加入了正则项,是一个更高效、更高精度的树模型实现框架。LightGBM是软微2017年开源的相比XGBoost具有更快速度的树模型。CatBoost是俄罗期Yandex公司开源的另一个实现框架,有自己的特色。
本文将从GBDT开始逐渐展开依次介绍这三个开源框架的实现原理以及各自主要的特点,并且通过我们业务数据上的实验对比三个框架的性能以及精度。
1. XGBoost介绍
XGBoost是在原始GBDT的基础上一步一步改进而来,不管是算法的优化还是系统实现都非常优秀。在速度以及精度上均比传统的GBDT表现更好。
1.1 GBDT实现方式
传统的GBDT是一种基于Boosting的加性模型,基模型是CART。CART最终结果是多颗CART的结论之和,因此学习过程是依次学习每一颗树。每颗树的学习方向是目标函数在当前已学到模型的梯度方向。整体框架还是基于Gradient Boosting:
GBDT的每一次迭代都是学习一颗C