Boosting
-
Boosting将多个弱学习器结合成强的一个
- 主要是降低偏差
-
顺序学习N个弱学习器,在第i步
- 训练一个弱学习器 h_i,评估损失
- 根据当前误差重新采样数据使得下一个模型H去关注预测不正确的样本
-
比较著名的算法有AdaBoost,gradient Boosting
Gradient Boosting
- 假设在t时刻训练了模型$H_t(x)$,初始 $H_1(x)=0$
- 在t=1时刻
- 训练一个新的模型 $h_t$ 在残差上:${(x_i,y_i)-H_t(x_i)}_{i=1,…,m}$
- $H_{t+1}(x)=H_t(x)+\eta f_t(x)$
- 学习率 $\eta$ 作为收缩的正则项,假设等于1就是完全拟合了,可能就过拟合了
- 残差等于 $-\part L/\part H$ 如果使用MSE作为损失的话
- 其他的Boosting算法可以视作差不多的梯度下降的方法
Gradient Boosting Code
1 | class GradientBoosting: |
Summary
- Boosting就是把弱学习器结合成一个强学习器来降低偏差
- 梯度下降Boosting学习残差