近期学到这个,整理了一下笔记发上来~
小建议:
先理解信息熵、决策树、Adaboost以及机器学习基础,这样学起来更容易懂~
简单理解
我们知道,ensemble learning(可以理解为“组学习”)分为bagging和boosting。
首先,我们从对Gradient Boosting的简单理解开始~(敲黑板~重点关注下Residual)
我们先从一个示例数据集(来源于Josh Starmer的视频)开始,如下所示:
身高Height,喜欢的颜色Favorite Color以及性别Gender均为输入变量(理解为x),体重Weight是预测目标(即为y)。
Height (m) | Favorite Color | Gender | Weight (kg) | Residual |
1.6 | Blue | Male | 88 | 16.8 |
1.6 | Green | Female | 76 | 4.8 |
1.5 | Blue | Female | 56 | -15.2 |
1.8 | Red | Male | 73 | 1.8 |
1.5 | Green | Male | 77 | 5.8 |
1.4 | Blue | Female | 57 | -14.2 |
先从体重入手,这里我们利用平均值作为我们的预测值,计算得到平均体重为71.2kg。然后我们计算参数Residual的值:
Residual = 观测值 – 预测值(如16.8 = 88 – 71.2)
观测值是指数据表中的各行的体重(88、76 …),预测值就是我们上面计算得到的71.2。逐个代入计算,我们得到了表格最右侧的Residual列。
但是!这样计算的结果虽然偏置较低,但是方差可能会很高。咋办?
解决的办法是——加入一个学习率:
第二个Residual(也称Pseudo Residual) = 观测值 - (平均体重 + 学习率 * 第一个误差树)
第二个Residual = 观测值 - (平均体重 + 学习率 * 第二个误差树)
… …
设置学习率为0.1,于是我们得到:
Residual | Residual2 | Residual3 | … |
16.8 | 15.1 | 13.6 | … |
4.8 | 4.3 | 3.9 | … |
-15.2 | -13.7 | -12.4 | … |
1.8 | 1.4 | 1.1 | … |
5.8 | 5.4 | 5.1 | … |
-14.2 | -12.7 | -11.4 | … |
(Residual3的第一个 = 88 -(71.2 + 0.1 * 16.8)+(0.1 * 15.1)= 13.6)
大家可以看出,Gradient boosting其实就是用我们熟悉的梯度下降(泰勒一阶展开)的思路求解预测函数的。
例如,在线性回归里面:
第二个参数 = 第一个参数 + 参数增量
类似的,在Gradient Boosting里面:
第二个函数 = 第一个函数 + 函数增量
最终函数等于每次迭代的增量的累加和。而这里面的增量(residual),就是一个个的弱分类器。
总结
Gradient Boosting与梯度下降类似,通过迭代更新。不同的是,梯度下降是基于参数的更新,而它是基于函数的更新,最终函数的增量叠加可以理解为很多弱分类器的叠加。
Reference
https://www.youtube.com/watch?v=3CC4N4z3GJc
https://www.youtube.com/watch?v=ErDgauqnTHk
https://www.bilibili.com/video/av70439977from=search&seid=10587792174714988540