机器学习boosting算法的简单介绍
机器学习
最后更新 2020-05-12 10:17 阅读 5079
最后更新 2020-05-12 10:17
阅读 5079
机器学习
boost算法是一种集成算法,就是把多个弱分类器,集成在一起,形成一个强分类器.以决策树为例,单决策树时间复杂度较低,模型容易展示,但是容易过拟合.决策树的boost方法就是:迭代过程,新的训练为了改进上一次的结果.
传统boost方法: 对正确、错误的样本进行加权,每一步结束后,增加分错点的权重(增加分错的样本数),减少对分对点的权重(减少分对的样本数).
Adaboost算法:关注被错分的样本,器重性能好的分类器.如下图,是adaboost的一般步骤:
- 每一轮训练计算该轮训练的误差比率,(分错的样本占总样本的比例)
- 当误差比率大于等于0.5,说明误差太大,需要重新选择模型或者调整模型
- 通过任意的一个单调函数(函数值随误差比率的增大而减小) ,计算出该轮的分类器占最终分类结果的权重
- 增加分错样本的数量,该比重根据误差比率的增加而减大,并不小于1.(因为比重小于1,是减少分错样本数量)
- 综合所有轮次的结果,得出最终结果
GBDT(Gradient Boosting Decision Tree)算法:常用于回归算法.思路为:用一个初始值来学习一棵决策树,叶子处可以得到预测的值,以及预测之 后的残差,然后后面的决策树就要基于前面决策树的残差来学习,直到预 测值和真实值的残差为零. 这个描述可能难于理解,举个例子说明:
假设预测年龄. 第一轮:A 真实年龄:15, 预测年龄: 13 这个残差(误差)是:真实值-预测值 = 2
第二轮训练时,A的真实标签修改为上一轮的残差:2 , 预测值为:3, 残差为: -1
第三轮训练 A 的真实标签: -1 ,预测值: -1.1, 残差为: 0.1
直到最后所有都训练结束,把最后预测值累加起来,
XGBoost是一个优化的分布式梯度提升库,旨在高效、灵活 便携式。XGBoost类似于gbdt的优化版,不论是精度还是效率上都有了提升。与gbdt相比,具体的优点有:
1.损失函数是用泰勒展式二项逼近,而不是像gbdt里的就是一阶导数
2.对树的结构进行了正则化约束,防止模型过度复杂,降低了过拟合的可能性
3.节点分裂的方式不同,gbdt是用的gini系数,xgboost是经过优化推导后的