核心概念
提升法、梯度提升与XGBoost
区分提升法这一顺序集成家族、按损失梯度纠错的梯度提升,以及XGBoost这一具体树提升系统。
是什么
提升法(boosting)是一族按顺序增加弱学习器、再把它们组合起来的集成方法。弱学习器单独只会作较粗的预测,例如只有少数层的小树;组合后的模型可以更灵活。梯度提升(gradient boosting)是其中一类:它先规定对当前预测可微的损失,把各样本处的负导数作为下一轮学习器要近似的纠错目标。[1, §§10.1–10.12]
为何出现
一棵浅树容易漏掉非线性与交互;直接把树长得很深又可能不稳定。提升法让多个简单模型分轮修正前面留下的系统性错误,试图在表达能力与控制复杂度之间取得可验证的折中。
怎样逐轮工作
先给所有样本一个初始预测。第一轮找出当前最需要修正的模式;以后每轮都查看此前整个集成仍在哪里损失较大,训练一个新学习器,再只加入由学习率控制的一小步。不同提升法定义“纠错”的方式不同:AdaBoost等方法可调整样本权重;梯度提升拟合所选损失的负梯度。在通常的欧氏内积下,非零的精确负梯度是最陡局部下降方向;弱学习器却通常只能近似它:把修正向量与负梯度逐项相乘再求和,这个欧氏内积必须大于零,而不是只看统计“相关系数”。在损失于当前预测可微且采用足够小的正学习率时,这一条件才给出当前经验损失的局部下降方向,并非无条件保证。树数、树深、学习率与损失属于模型选择,须只用开发流程选择,不能偷看测试集。
能做什么
选择相应损失后,梯度提升可用于回归、分类或排序;以树为弱学习器时,常称gradient-boosted decision trees、GBDT或GBM。树的逐轮加法能表达非线性和特征交互,并常作为表格数据的强基线。
不能做什么
它不能自动修复错标签、数据泄漏、训练—部署漂移或不恰当的评价目标,也不能把相关预测变成干预效果。轮数过多、树过深或学习率过激仍可过拟合;分类分数即便落在0到1之间,也不自动是目标人群中的真实概率,仍须独立检查校准。它更不保证在每个数据集胜过随机森林或其他方法。
名称边界
XGBoost是Chen与Guestrin描述的一种具体树提升系统和软件实现。它使用带正则项的目标、一阶和二阶信息,并包含收缩、列抽样、稀疏感知切分与系统工程设计。[2, §§2–4] 所以boosting是方法家族,gradient boosting是其中按损失梯度逐轮优化的一类,XGBoost则是梯度树提升的一条具体实现路线;三个名称不能互换。
在本书中
见第10章:监督学习中的“Boosting与梯度提升”。
本页参考来源
- Hastie T, Tibshirani R, Friedman J. The Elements of Statistical Learning — Data Mining, Inference, and Prediction [M]. Springer, 2009. Second edition. 定位:§§10.1–10.12. DOI;稳定来源(访问 )。
- Chen T, Guestrin C. XGBoost: A Scalable Tree Boosting System [C]. Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 2016. 定位:§§2–4. DOI;稳定来源(访问 )。