文章目录
1. GBDT 简介
GBDT全称为Gradient Boost Decision Tree,提升决策树,其实本质上和AdaBoost模型没有太大的区别,仅仅是在提升对象方面略有差别。AdaBoost模型是通过调整错误样本的权重达到提升的目的,而GBDT则是通过调整整体样本的残差达到提升的目的。
2. GBDT在回归的应用
2.1 基础流程
假设数据集为:
图中,数据集包括4个特征值:Height, Favorite Color, Gender, Weight,Height, Weight为连续变量,Favorite Color, Gender为离散变量。Weight是我们需要预测的变量,Height, Favorite Color, Gender是已知变量。
1. 初始化参数
计算目标的均值,作为所有样本的初始预测值。
88
+
76
+
56
+
73
+
77
+
57
6
=
71.2
\frac{88+76+56+73+77+57}{6}=71.2
688+76+56+73+77+57=71.2,该值代表,如果此时模型停止,则预测所有的Weight=71.2。
与AdaBoost模型的对比
- AdaBoost模型第一个若学习器为一个决策树桩,而GBDT的第一个弱学习器为一个叶子节点。
- 通常情况下,GBDT的剩下的弱学习器设定为具有指定叶结点数量的决策树,叶结点数量通常为8~32。(本例中限制为4个)
2. 计算误差
利用输入数据和Residual构造决策树:
对于同一叶结点的数据,取其均值,有:
(
−
14.2
−
15.2
)
/
2
=
−
14.7
(-14.2-15.2)/2 = -14.7
(−14.2−15.2)/2=−14.7,
(
1.8
+
5.8
)
/
2
=
3.8
(1.8+5.8)/2 = 3.8
(1.8+5.8)/2=3.8
3. 更新估计值
新的估计值=原估计值+学习率*当前模型输出值
假定学习率为0.1,以第一个样本数据为例:
以此类推,更新Residual的值:
4 重复步骤3
假设生成的第3个弱学习器为:
则模型的输出为:
直到精度不再提升或达到指定迭代次数。
3. GBDT在分类的应用
使用GBDT做分类,其实是相当于计算数据属于各个标签的概率值。
3.1 具体案例
假设有数据集:Likes Pocorn、Age、Favorite Color是特征数据,Loves Troll2是标签数据
1. 初始化参数
计算为yes的概率
2. 计算伪残差
如果是yes:
1
−
0.69311
1-0.69311
1−0.69311
如果是no:
0
−
0.69311
0-0.69311
0−0.69311
3. 训练拟合残差的弱学习器
2. 找一个合适该弱学习器的权重
∑
R
e
s
i
d
u
a
l
i
∑
[
P
r
e
v
i
o
u
s
P
r
o
b
i
∗
(
1
−
P
r
e
v
i
o
u
s
P
r
o
b
i
)
]
\frac{\sum Residual_i}{\sum[Previous Prob_i*(1-Previous Prob_i)]}
∑[PreviousProbi∗(1−PreviousProbi)]∑Residuali
以第3个叶节点为例:
0.3
+
0.3
+
0.3
(
0.6667
∗
(
1
−
0.6667
)
+
(
0.6667
∗
(
1
−
0.6667
)
+
(
0.6667
∗
(
1
−
0.6667
)
)
=
1.4
\frac{0.3+0.3+0.3}{(0.6667*(1-0.6667)+(0.6667*(1-0.6667)+(0.6667*(1-0.6667))}=1.4
(0.6667∗(1−0.6667)+(0.6667∗(1−0.6667)+(0.6667∗(1−0.6667))0.3+0.3+0.3=1.4
5. 更新模型
此时第一条数据的概率更新为:
以此类推,计算每个数据新的误差
5. 重复上述过程
更新概率为:
0.1
+
0.1
+
0.1
+
0.1
0.9
∗
(
1
−
0.9
)
+
0.1
∗
(
1
−
0.
)
+
0.9
∗
(
1
−
0.9
)
+
0.9
∗
(
1
−
0.9
)
\frac{0.1+0.1+0.1+0.1}{0.9*(1-0.9)+0.1*(1-0.)+0.9*(1-0.9)+0.9*(1-0.9)}
0.9∗(1−0.9)+0.1∗(1−0.)+0.9∗(1−0.9)+0.9∗(1−0.9)0.1+0.1+0.1+0.1
4. 参考文献
《StatQuest》