机器学习常用到booting思想,通过一步一步向目标迈进
两种用此思想的向前分步算法:
每次训练一棵树,用此棵数训练的结果调整下一棵树的输入
1.adaboost
boosting抽样训练每一颗树
每次迭代时加大错误case(input data)的权重进行下次训练
最终模型的权重也会根据总体效果调整每棵的权重
for m round
for n trees
调整input 进行训练
根据n棵树的预测调整树的权重
2.mart
for n trees
调整学习目标为前面预测的负梯度值,通过找到最小损失的预测值生成树
典型的算法有gbdt和xgboost ,xgboost是在损失函数里加上l2正则,用负梯度代替残差(gbdt实际也是负梯度)
上面两种算法和rf比,容易控制树的规模,减少过拟合