Gradient Boosted Decision Trees for High Dimensional Sparse Output
Si Si, Huan Zhang, S. Sathiya Keerthi, Dhruv Mahajan, Inderjit S. Dhillon, Cho-Jui Hsieh
Google Research, University of California at Davis, Microsoft, Facebook, University of Texas at Austin
ICML 2017
http://proceedings.mlr.press/v70/si17a/si17a.pdf
这篇文章主要研究GBDT如何应对输出空间是高维且稀疏的情形。比如,在多标签分类中,输出空间是L维的向量,其中每个元素都是0/1取值的,这里的L是标签的个数,L可以取值很大,在现实中,L可能多至百万甚至更多。
这种情况下,普通的GBDT很容易就会内存溢出或者接近永远运行下去。为了解决这种问题,这篇文章提出了一种GBDT的变体,GBDT-SPARSE,该变体的特点在于L0正则。
这篇文章给出了训练这种稀疏GBDT的细节,其中包含了如何确定分割节点,如何计算稀疏残差,如何以次线性的时间复杂度进行预测。
作者们将这种算法用于具有非常多标签的分类问题,结果显示,本文提出的GBDT-SPARSE在模型容量和预测耗时等方面相对现有方法具有大幅度提升,同时能够得到跟现有方法接近的效果。
小知识点1: GBDT构建树的过程中每棵回归树都是拟合之前的树所得残差。
这篇文章讨论的焦点有个前提,每个样本只有少量标签,基于此前提,可以利用L0正则约束来迫使每棵树的叶子节点只有少量节点非零。容易看出,对于每个样本,需要计算的梯度次数跟树的个数线性相关,跟非零叶节点的个数线性相关。
本文所提算法不仅速度快,而且效果可观,另外还可以高效并行,多核时能够近似线性加速。跟FASTXML在速度和容量以及准确率等方面对比如下。
在bagging、boosting、random forest这些方法中,boosting在减小模型容量和缩短预测时间方面比较有效,这是因为训练下一个模型利用了之前模型的输出。
在GBDT中,每棵树都是对残差进行训练,这里的残差是指相对之前树所得损失函数的负梯度。