摘要
集成学习是机器学习算法中地位非常重要的一类算法, 其拥有理论基础扎实、易扩展、可解释性强等特点, 其核心思想是, 使用弱学习器(如线性模型、决策树等)进行加权求和, 从而产生性能较为强大的强学习器. 若按照指导弱学习器进行学习的理论基础进行分类的话, 集成学习的算法可分为两大类: 1. 基于偏差方差分解和bagging(bootstrap aggregating, 有放回抽样与集成)进行弱学习器学习的算法, 其典型代表是RF(Random Forest, 随机森林); 2. 基于梯度下降和boosting
- 阐述梯度提升算法的理论基础;
- 阐述GBDT的算法框架;
- 阐述XGBoost的具体实现;
- 阐述GBDT与LR(logistics regression, 逻辑斯底回归)在点击率预估任务中的具体应用;
- 总结.
关键词: 梯度提升, 决策树, 集成学习, 机器学习, 推荐系统
校对: @小猪猪, @幻觉他妈妈, @齐天大圣
知乎专栏: 「张同学讲机器学习」
梯度提升算法的理论基础
集成学习是机器学习算法中地位非常重要的一类算法, 其核心思想是, 使用弱学习器(如线性模型、决策树等)进行加权求和, 从而产生性能较为强大的强学习器. 具体的, 假设我们有数据集
其中, 系数
即可得到强学习器
- bagging. 使用bootstrap aggregating进行有放回抽样, 训练出若干个弱学习器进行集成, 其目的是通过有放回抽样构造出多个数据集并分别进行弱学习器训练再进行集成, 以期降低模型的期望泛化误差偏差方差分解中的方差部分, 从而增强模型的泛化能力
由(3)我们可知, 模型的期望泛化误差可表示成模型
由于在生产环境中, 数据的获得往往成本较为昂贵, 所以, 随机森林使用bagging在数据集
2. boosting. 以分阶段的形式顺序迭代地学习每个弱学习器, 而每个弱学习器都是在对前序模型的不足之处进行改进, 从而得到更强的强学习器, 其理论基础是梯度下降. 具体地, 对于数据集
由(7)我们便可获得最终的强学习器
那么, 为什么说上述的学习过程是以梯度下降为理论基础的呢? 我们不妨换一个角度来看(6). 当模型
(8)可以被看做自变量为
若此处我们采用MSE(mean squared error, 均方误差)作为其损失函数, 则(9)可进一步表示为
由(10)我们发现, 损失函数
由(11)可以看出, 弱学习器相加的过程, 其实就是损失函数进行梯度下降的过程, 所以, boosting的理论基础就是梯度下降.
若从一阶泰勒展开的角度来看待(6)(8), 我们试图对自变量
由(12)可知, 损失函数值确实会逐步地进行下降, 当然, 如果能使用二阶导数的信息来帮助
综上所述, boosting使用梯度来指导弱学习器
GBDT的算法框架
上一小节中, 我们阐述了boosting的理论基础, 了解了其训练过程是梯度下降的本质. 那么, 我们应该使用什么样的模型来训练弱学习器
算法(13)提供了一个GBDT的框架, 其可以拥有多种不同变体且细节相异的实现方式.
XGBoost的具体实现
通过前面章节的阐述我们知道, 在每一轮迭代中, 梯度提升算法使用前序模型的预测值
对于
则有
由于(14)是损失函数
(17)中加入了
(18)经由叶子重新进行组织, 使得落在同一个叶子的
值得注意的是, (16)与(19)是相同的形式, 一脉相承的牛顿法. 此时, 损失函数
(20)给出了在树的结构已经确定为
(21)给出了树节点分裂前后损失函数
如何进行一个树节点的分裂, 看起来已经成为一个至关重要的步骤了. XGBoost提供了两种分裂的方式, 具体地
- Exact Greedy Algorithm. 对于每一维特征, 该算法针对此特征对样本集进行排序, 然后遍历每个样本在该特征上的取值并进行分裂, 计算出
以确定最佳分裂特征和分裂点.
Exact Greedy Algorithm进行了一次完全的扫描, 从而得到最佳的分裂方案. 其优点是, 能确保找到最佳的分裂方案, 然而缺点也非常明显, 当特征的维数
2. Approximate Algorithm. 当训练集的样本量为千万甚至上亿级别时, 对于任一特征
(23)表示特征值
正如我们在(16)中由牛顿法得出,
使用
在(26)中, 我们便只需围绕分裂点集
GBDT + LR 进行点击率预估
CTR(Click-Through Rate Prediction, 点击率预估)在推荐系统、计算广告中是一个重要的环节, CTR的性能将直接影响用户体验和广告营收. 使用LR进行CTR预估, 在工业级的推荐系统中是很常见的技术方案. LR是一种广义线性模型, 其使用
如上图所示, 图中的GBDT模型由两棵树组成, 共5个叶子节点, 故
使用GBDT代替人工的特征发现和特征组合在工业级的推荐系统中已经得到广泛的应用, 其表现出了卓越的性能. 另外, 除了与LR进行糅合, 还有一些工作尝试了GBDT+FM等, 总的来说都不逊色于人工的特征.
总结
本文从集成学习的理论基础出发, 阐述了bagging与boosting的数学原理. 并着重阐述了GBDT与XGBoost的算法流程和具体实现, 最后给出了GBDT+LR进行CTR预估的具体示例. 集成学习是非常活跃的机器学习研究领域, 学术界的产出也与工业界的使用联系得相当紧密.
引用
[1] Wikipedia contributors. (2019, March 22). Gradient boosting. InWikipedia, The Free Encyclopedia. Retrieved 13:00, April 10, 2019, fromhttps://en.wikipedia.org/w/index.php?title=Gradient_boosting&oldid=888968392
[2] Zhang, J. (2016). GBDT算法原理深入解析. [online] Zybuluo.com. Available at: https://www.zybuluo.com/yxd/note/611571 [Accessed 19 Mar. 2019].
[3] Chen, T., & Guestrin, C. (2016, March 9). XGBoost: A Scalable Tree Boosting System. http://arXiv.org. http://doi.org/10.1145/2939672.2939785
[4] TccccD. (2018).GBDT与XGBOOST的联系和区别 - TcD的博客 - CSDN博客. [online] Available at: https://blog.csdn.net/u011094454/article/details/78948989 [Accessed 10 Apr. 2019].
[5] Li, C. (2019).A gentle introduction of gradient boosting. [online] Chengli.io. Available at: http://www.chengli.io/tutorials/gradient_boosting.pdf [Accessed 20 Mar. 2019].
[6] Zhou, Z. (2016).机器学习. 1st ed. 北京: 清华大学出版社, pp.45-46.
[7] Zhang, L. (2019).为什么负梯度是函数值减小的最快方向. [online] Zhuanlan.zhihu.com. Available at: https://zhuanlan.zhihu.com/p/57601606 [Accessed 18 Apr. 2019].
[8] Wikipedia contributors. (2019, April 11). Decision tree learning. InWikipedia, The Free Encyclopedia. Retrieved 14:31, April 18, 2019, fromhttps://en.wikipedia.org/w/index.php?title=Decision_tree_learning&oldid=891961623
[9] Wang, X. (2018).从XGB到LGB:美团外卖树模型的迭代之路. [online] Itcodemonkey.com. Available at: https://www.itcodemonkey.com/article/9065.html [Accessed 20 Apr. 2019].
[10] Wikipedia contributors. (2019, April 18). Newton's method. InWikipedia, The Free Encyclopedia. Retrieved 03:42, April 21, 2019, fromhttps://en.wikipedia.org/w/index.php?title=Newton%27s_method&oldid=892955071
[11] He, X. and Pan, J. (2014).Practical Lessons from Predicting Clicks on Ads at Facebook. [online] Facebook Research. Available at: https://research.fb.com/publications/practical-lessons-from-predicting-clicks-on-ads-at-facebook/ [Accessed 22 Apr. 2019].