GBDT
1.GBDT算法流程
\(设有训练集:Data=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\},y_i\in \{+1,-1\}\)
- 初始化弱学习器
一般用所有训练样本的标签值的均值
- for t=1 to T do
- \(计算负梯度:\tilde y_i=-[\frac{\partial L(y_i,F(x_i))}{\partial F(x_i)}]_{F(x)=F_{t-1}(x)},i=1,2,...,N\)
- \(拟合残差得到基学习器\)
- \(得到基学习器的权重\)
- \(更新\)
2.GBDT回归的流程
- 初始化弱学习器
\(初始化取所有训练样本标签值的均值,c=\frac{1.1+1.3+1.7+1.8}{4}=1.475\)
\(得到初始学习器:f_0(x)=1.475\) - \(计算负梯度=y_i-c,也就是计算残差,因为求导=\frac{\partial 1/2(y_i-c)^2}{\partial c}=c-y_i\)
3.令数据集中的标签值替换为残差
4.遍历回归树中的最佳划分点,两个循环遍历,一层是特征,一层是特征下面的每个切分点
分别计算分裂后的两组数据的平方损失,找到\(SE_l+SE_r最小的那个划分节点,(SE_l,SE_r代表左右两组残差的方差)\)
所以就是
for 所有特征值
for 所有样本的划分点
计算划分后左右两边的均值mu_l,mu_r
计算左右两边的方差SE_l,SE_r
找到SE_l+SE_r 最小的特征和对应的划分点
上面的案例有两个最小值,随机取一个,选上面的年龄;21
5.依次对上面的左右两个数据集循环上面的1-4步
6.得到分类树
从上面的案例可以知道,GBDT的本质还是CART树,只不过在划分的过程中,将平方和误差损失中的\(y_i\)替换为了残差
注意事项
3.GBDT分类的流程
同回归树一样,但在第二步中的梯度要改变下,要增加一层sigmoid函数
2. \(计算负梯度=y_i-sigmoid(c)\)
\(因为有\)