boost

来源:互联网 发布:更改淘宝密码 编辑:程序博客网 时间:2024/04/23 15:17

提升方法:将弱学习器组合以求得到高效的模型。弱学习器要‘和而不同’和:准确性要有;不同:学习器之间的独立性
加性和向前算法,来构建boost模型,优化参数.
adaboost 采用最小化指数损失函数 做为模型选择策略。初始确定学习器后,通过改变样本的权重获得新的学习器。最终将学习器加权。适用于二分类问题。
此外,boost tree被认为是统计学习中最有效的方法之一,是使用分类树和回归树作为基本分类器的提升方法。
要说明的是对于不同问题的boost tree 主要区别是损失函数的不同
对于二分类问题,使用指数损失函数。提升树就是将adaboost中的基分类器定为二类分类树(决策树);对于回归树,如使用平方误差损失函数则相当于每次选择的学习器要尽量拟合残差 。
对于其他损失函数:提出梯度提升方法,原来是计算残差,现在用损失函数的负梯度作为近似值。来拟合回归树。
而xgboost,则是变化了目标函数,不仅有模型残差还添加了模型正则项来约束模型的复杂度。xgboost 的目标是每次找到一个新的学习器:能够使该目标函数最小。(其实每个boost都是)只是优化的方法不同,adaboost是调整样本分布计算新的学习器,GBDT是找一个学习器能拟合当前模型的负梯度,使得损失函数下降,xgboost通过Taylor展开目标函数中的误差部分,找到新的学习器是目标函数最小(高效枚举方法,依次)只要你定义的函数能够说得有道理,并且能求一阶二阶导,就可以用Xgboost;

对于bagging 和随机森林 两者与boost的不同是:booststrap sample 且随机森林不止对行(样本)进行自助采样,而且对列(特征)也进行随机选择
adaboost侧重改善原弱学习器模型偏差的影响。bagging侧重改善模型中噪音点中的影响。
至于GBDT,boost tree,xgboost。。。。优化再优化,组合起来达到高效。也算是偏差吧

(代码待补。。)