梯度提升思想
来源:互联网 发布:西游记源码 编辑:程序博客网 时间:2024/05/12 18:48
1.模型要素
1.提升模型(加法模型)
2.参数
- 二分类(以Adaboost为例): 基函数(分类器)
Gm(x) (输出为-1,1),权重αm (每个分类器唯一) - 提升树(以回归树为例):树结构
Rmk (对应叶子节点,类似Gm ),节点权重αmk
3.目标函数(此处即为损失函数)
提升模型有三种损失函数,对于分类问题(adaboost)用指数损失函数
2.模型训练(求解参数)
- 模型目标函数为其损失函数,训练目的是使的目标函数最小。此模型使用梯度提升算法,每一步弱预测模型依据损失函数的梯度方向)
- 思想:对目标函数泰勒展开,仅考虑一阶导数的情况。对
L(y,Fm(x)) 使用泰勒展开近似当L(y,Fm(x))=L(y,Fm−1(x)+fm(x))≃L(y,Fm−1)+∂L(y,Fm−1)∂Fm−1fm(x) fm(x) 方向取−[∂L(y,Fx)∂Fx]Fx=Fm−1 时,梯度下降最快(因为正交,梯度下降法),此时更新后的模型应为其中Fm(x)=Fm−1−λm∂L(y,Fm−1)∂Fm−1 λm 为步长,最终fm=−λm∂L(y,Fm−1)∂Fm−1 ,在回归问题中fm 为基函数,分类问题为基函数+分类器权重 - 由上面的分析可得提升方法的一般步骤为:
1)计算伪残差rmi=−[∂L(yi,Fx)∂Fx]Fx=Fm−1 ,其中i表示样本号,m表示基函数(分类器)号
2)基于rmi,i∈1,2,..,n ,构建新函数f¯m (分类问题为基函数,CART回归树输出为叶子节点)
3)将f¯m 带入损失函数,求解步长λm=argminλL(y,Fm−1−λf¯m) (分类:分类器权重;回归:叶节点取值)
4)更新Fm=Fm−1+λf¯m
3. Adaboost推导
- 模型为加法模型,损失函数为指数损失函数,参数为分类器
Gm(x)∈{−1,1} 和分类器权重αm - 梯度提升推导:
1)对损失函数L(y,fm−1) 求梯度:可理解为带权重的样本,对模型影响度不同rmi=yiexp(−yifm−1)=yiw¯mi
2)根据rm 创建新的基函数Gm ,使Gm 与rm 尽量接近Gm=argminG∑i=1nw¯miI(yi≠G(xi))
3)将基函数Gm 带入损失函数求分类器权重(步长)αm 损失函数变为仅关于αm=argminα∑i=1nw¯miexp(−yiαGm(xi)) α 的函数,对α 求导得3)更新模型αm=12log1−ememem=∑ni=1w¯miI(yi≠Gm(xi))∑i=1nw¯mi=∑i=1nwmiI(yi≠Gm(xi)) fm(x)=fm−1(x)+αmGm(x) ,继续重复1),其中w¯m+1,i=w¯m,iexp(−yiαmGm(xi)) - 前向分布算法推导
损失函数可写为:然后最小化损失函数,与2中2)形式相同L(y,fm)=L(y,fm−1+αmGm)=∑i=1nexp(−yi(fm−1+αmGm(xi)))=∑i=1nw¯miexp(−yiαG(xi))w¯mi=exp(−yifm−1(xi) - 算法性能:误差率与分类器个数成指数关系
4.GBDT回归树推导
1)损失函数为平方损失,对损失函数求梯度,得到伪残差:
2)对
4)遍历所有可能的切分点(将所有
5)更新
6)其中2)同样可用前向分布算法得出
0 0
- 梯度提升思想
- 思想提升
- GBDT:梯度提升决策树
- GBDT:梯度提升决策树
- GBDT--梯度提升决策树
- 梯度提升算法 介绍
- GBDT 梯度提升决策树
- GBDT:梯度提升决策树
- GBDT:梯度提升决策树
- GBDT:梯度提升决策树
- GBDT:梯度提升决策树
- GBDT:梯度提升决策树
- GBDT:梯度提升决策树
- 梯度提升(gradient boosting)算法
- 梯度提升树GBDT原理
- Spark MLLib 梯度提升树
- 梯度提升树GBDT原理
- 梯度提升树(GBDT)原理
- 第四周-4圆柱表面积
- AJAX
- 第五周—双分支
- ExpandableListView 会出现的问题
- 第五周项目—raptor圆的周长
- 梯度提升思想
- xgboost基础
- Python错误SyntaxError: unexpected EOF while parsing
- 单例设计模式
- 启动tomcat 服务报 The file is absent or does not have execute permission
- C++并发编程2——为共享数据加锁(四)
- 第五周:Raptor:选择结构的嵌套
- sql语句 (中 提升)
- 第五周项目4--简单公式计算