提升Boost:GBDT & Xgboost & Adaboost

来源:互联网 发布:java波斯王子武者之心 编辑:程序博客网 时间:2024/06/05 03:59

提升:将弱分类器进行提升,形成强分类器。
两种基本思想:
1、梯度提升(Gradient Boosting, GB)
在每一步生成弱分类器后,依据损失函数的梯度方向,迭代选择负梯度方向上的基函数,逼近局部极小值。
->GBDT & Xgboost
2、样本加权
考虑提高分类错误样本的权值,即每次更关心做错了的部分,从而提高分类器的能力。
->Adaboost


梯度提升算法基本模型
初始模型:这里写图片描述
对m = 1,…,M

  • 计算伪残差(pseudo residuals):
    这里写图片描述

  • 得到基函数:用数据这里写图片描述 计算拟合残差的基函数这里写图片描述

  • 计算步长:这里写图片描述

  • 更新模型:这里写图片描述

决策树是提升算法中的典型基函数->GBDT


GBDT
在上述基本模型的第m步中,根据数据和伪残差得到的基函数为:
这里写图片描述
其中,J为这里写图片描述 的叶节点数;
这里写图片描述 将输入划分为J个不相交的区域这里写图片描述
I(x)为指示标记(True=1, False=0);
这里写图片描述 为样本在区域这里写图片描述上的预测值。

从而,模型更新为:
这里写图片描述

考虑对每个区域这里写图片描述 计算步长,则系数这里写图片描述 可以被合并,即模型更新为:
这里写图片描述


Xgboost
考虑在损失函数中使用二阶导信息
损失函数:这里写图片描述

考虑泰勒二阶导展开:这里写图片描述
用gi和hi分别表示一二阶导数:
这里写图片描述
这里写图片描述

则,损失函数可表示为:
这里写图片描述

决策树的T个叶节点,权值为这里写图片描述
若样本x落在叶节点q中,则:这里写图片描述
正则项可以表示为:这里写图片描述 ,保证叶子个数和权值都不过大。

再看目标函数:
这里写图片描述
第一项与ft无关,合并到常数项中:
这里写图片描述
这里写图片描述这里写图片描述带入:
这里写图片描述
考虑到任何样本只落入一个叶子中:
这里写图片描述
合并:
这里写图片描述

这里写图片描述这里写图片描述

则目标函数最终化简为:
这里写图片描述

对wj求偏导:
这里写图片描述
令偏导为0,得这里写图片描述
回代wj到目标函数得:
这里写图片描述

目标函数分数越小,树结构越好。


Adaboost
基本思想:在下一次训练中,给预测错的加大权制。

训练数据集:这里写图片描述
初始权值:这里写图片描述这里写图片描述
基本分类器(任意算法)为Gm(x)

则在第m次预测中,分类误差率为这里写图片描述 ,I为指示函数(True=1,False=0)。
系数这里写图片描述

更新权值:这里写图片描述
其中,这里写图片描述
规范化因子:这里写图片描述
若预测错了,则yiGm(xi)项为-1,exp( )项大于1,即下一次升高了权制。

构成基本分类器的线性组合:这里写图片描述

最终分类器:这里写图片描述

0 0
原创粉丝点击