机器学习 | GBDT再理解

1 背景

今天写了一篇关于基于树模型的集成学习中特征重要性的计算原理,见 机器学习 | 特征重要性判断 其中有一篇介绍GBDT的博文中,介绍了具体的例子来讲解GBDT,一开始不太理解,后来和同学讨论之后逐步了解了,记录一下!

2 再理解GBDT

2.1 算法原理

首先上GBDT的数学原理,即算法过程:
机器学习 | GBDT再理解

2.2 文字版

  1. 首先会有一个树模型
  2. 将上一个树模型的残差(损失函数的负梯度)结果作为新的label,结合自变量x来进行构建CART回归树!
  3. 将上述得到的回归树乘以一个较小的学习率(防止过拟合)+ 上一步树模型 即得本次迭代的模型!
  4. 不断迭代第2和第3步,直至满足要求。

2.3 图解

参考资料:https://mp.weixin.qq.com/s/9SrciKW-nJJMA2BbTs5CLg
机器学习 | GBDT再理解
机器学习 | GBDT再理解
问题:第二棵树0样本的残差值为:-0.3375怎么得到的?

首先了解第一棵树-0.375怎么得到?

根据2.1的算法原理的第一步可以知道,残差 = 本轮实际值 - 上轮预测值

第一轮:

本轮实际值 = 1.1

上轮预测值 = 1.475【弱学习器1】

故残差为:1.1 - 1.475 = -0.375

第二轮:

本轮实际值 = 1.475 + (-0.375) = 1.1

上轮预测值 = 1.475 + 0.1 * (-0.375) = 1.4375 【弱学习器2】

故残差为 : 1.1 - 1.4375 = -0.3375

第三轮:

本轮实际值 = 1.4375 + (-0.3375) = 1.1

上轮预测值 = 1.4375 + 0.1 * (-0.3375) = 1.40375 【弱学习器3】

故残差为 : 1.1 - 1.40375 = -0.30375

3 GBDT核心

GBDT的核心就在于:

  • 每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。
  • 比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学。这就是Gradient Boosting在GBDT中的意义。

4 参考