gbdt(又称Gradient Boosted Decision Tree/Grdient Boosted Regression Tree),是一种迭代的决策树算法,该算法由多个决策树组成。它最早见于yahoo,后被广泛应用在搜索排序、点击率预估上。
xgboost是陈天奇大牛新开发的Boosting库。它是一个大规模、分布式的通用Gradient Boosting(GBDT)库,它在Gradient Boosting框架下实现了GBDT和一些广义的线性机器学习算法。
本文首先讲解了gbdt的原理,分析了代码实现;随后分析了xgboost的原理和实现逻辑。本文的目录如下:
一、GBDT
1. GBDT简介
2. GBDT公式推导
3. 优缺点
4. 实现分析
5. 常用参数和调优
二、Xgboost
1. Xgboost简介
2. Xgboost公式推导
3. 优缺点
4. 实现分析
5. 常用参数和调优
一、GBDT/GBRT
1. GBDT简介
GBDT是一个基于迭代累加的决策树算法,它通过构造一组弱的学习器(树),并把多颗决策树的结果累加起来作为最终的预测输出。
树模型也分为决策树和回归树,决策树常用来分类问题,回归树常用来预测问题。决策树常用于分类标签值,比如用户性别、网页是否是垃圾页面、用户是不是作弊;而回归树常用于预测真实数值,比如用户的年龄、用户点击的概率、网页相关程度等等。由于GBDT的核心在与累加所有树的结果作为最终结果,而分类结果对于预测分类并不是这么的容易叠加(稍等后面会看到,其实并不是简单的叠加,而是每一步每一棵树拟合的残差和选择分裂点评价方式都是经过公式推导得到的),所以GBDT中的树都是回归树(其实回归树也能用来做分类的哈)。同样的我们经常会把RandomForest的思想引入到GBDT里面来,即每棵树建树的时候我们会对特征和样本同时进行采样,然后对采样的样本和特征进行建树。
好啦,既然每棵树拟合的值、预测值、分裂点选取都不是随便选取的,那么到底是如何选择的呢?我们先进入GBDT的公式推导吧
2. GBDT公式推导
我们都知道LR的映射函数是,损失函数是
。对