集成学习——梯度提升树(GBDT)
1 模型算法介绍
GBDT 也是集成学习 Boosting 家族的成员,通过采用加法模型,不断减小训练过程中产生的残差算法。即通过多轮迭代,每轮迭代生成一个弱分类器,并在上一轮分类器残差的基础上进行训练,但是弱学习器限定了只能使用 CART 回归树模型,且迭代思路与 Adaboost(利用前一轮迭代弱学习器的误差率来更新训练集的权重)有所不同。
GBDT 采用的是加法模型,这就要保证每一个弱学习器的输出结果进行加减是有意义的。但不能把 GBDT 看成很多棵分类树,因为分类树的输出结果是不同的类别,进行加减无意义,弱学习器只有采用回归树才有意义。GBDT 的核心就在于,每一个弱学习器学习的是上一轮迭代结论和的残差,即残差与预测值之和等于真实值,例如 A 的真实年龄是 18 岁,第一棵树的预测年龄是 12 岁,差了 6 岁,即残差为 6 岁;那么在第二棵树里我们把 A 的年龄设为 6 岁去学习,如果第二棵树真的能把 A 分到 6 岁的叶子节点,那累加两棵树的结论就是 A 的真实年龄;如果第二棵树的结论是 5 岁,则 A 仍然存在 1 岁的残差,第三棵树里 A 的年龄就变成1岁,如果迭代轮数还没有完,可以继续迭代,每一轮迭代拟合的岁数误差都会减小。
模型如下:
F m ( x ) = ∑ m = 1 M T ( x ; θ m ) F_m(x)=\sum_{m=1}^MT(x;\theta_m) Fm(x)=m=1∑MT(x;θm)
M M M 表示模型训练的轮数,每轮产生一个弱学习器 T ( x ; θ m ) T(x;\theta_m) T(x;θm), θ m \theta_m θm 表示迭代之后的残差,则残差的求解可以表示成如下形式:
θ ^ m = a r g min ⎵ θ m ∑ i = 1 N L ( y i , F m