【集成学习系列教程4】GBDT回归算法原理及sklearn应用

更新时间:2023-05-20 10:17:23 阅读: 评论:0

【集成学习系列教程4】GBDT 回归算法原理及sklearn 应⽤
⽂章⽬录
6 GBDT 回归算法
6.1 概述
GBDT不仅可以应⽤于分类任务,它在回归任务中也有很好的表现。GBDT回归算法的原理与⼆分类算法很相似,最⼤的区别在于⽬标函数的选择上。下⾯就来看看GBDT回归算法的具体步骤。
6.2 算法具体步骤
该算法的具体步骤如下:英语口语mp3免费下载
1. 找到⼀个数,使得该到数据集中所有样本⽬标值的差值之和最⼩,并⽤初始化第⼀个弱分类器:
听音乐用英语怎么说其中表⽰回归损失函数,在GBDT回归算法中⼀般使⽤最⼩⼆乘回归:
由于是⼀个凸函数,故使得导数为0的值就是就是我们要求的初始化值:
八年级下册英语作文
故:
也就是说,⽤所有训练样本标签的均值初始化。
c c c F (x )0F (x )=0arg min L (y ,c )
c i =1∑
N
i L (y ,c )i F (x )=0arg min L (y ,c )=c i =1∑
N i F (x )=0arg min [(y −c i =1∑N
21
i c )]
2(y −i c )2c F (x )0=i =1∑N ∂c ∂L (y ,c )i Nc −y =i =1∑
N怎样做好一个管理者
i 0⇒c =N
nowrapy ∑i =1N
i F (x )=0c =N
y ∑i =1N
i
F (x )0
2. 初始化完成后,下⾯要建⽴起棵分类回归树,设每⼀棵树的编号为,求出各棵树对各个样本的残差。以第1
棵树对第个样本的残差为例:
也就是说,第1棵提升树对第个样本的残差为:样本的标签值减去初始弱分类器对样本的预测值。3. 根据上⾯求得的残差,就可以计算出第1棵树对其第个叶⼦节点的最佳拟合值为:
其中表⽰第1棵树的第个叶⼦节点区域,为第1棵树叶⼦节点的个数。
该函数也是个凸函数,使得导数为0的值就是我们要求的最佳拟合值,故可求得:
即:第1棵树第个节点的最佳拟合值为第1棵树第个叶⼦节点⾥所有样本残差之和的平均值。对于其他第棵树也同理。4. 在上⾯求得的最佳拟合值的基础上,就可以⽤下⾯的公式求出初始分类器经过第1棵树提升后的新学习器的表达式:
类推到第个学习器:
5. ⽤上⾯的⽅法经过次提升后,得到最终强学习器的表达式如下:
其中表⽰对所有棵提升树求累加,表⽰对每棵提升树的所有叶⼦节点的最佳拟合值求累加。意思就是说,以初始
回归器为起点,不断将所有棵树的所有叶⼦节点的最佳拟合值加起来,最终就得到了强回归器。为了控制每⼀棵提升树的对回归器的提升程度,这⾥同样可以引⼊学习率来控制每⼀棵树对回归器的提升程度:
M m (m =1,2,...,M )x i i r =1,i −∣∣=∂F (x )0i ∂L (y ,F (x ))
i 0i −=∂F (x )0i ∂(y −F (x ))21
i 02
i y −i F (x )
0i i x i x i F (x )0i x i j c =1,j arg min L (y ,F (x )+k )=k j x ∈R i 1,j ∑
J 1i 0i j arg min [y −k j x ∈R i 1,j ∑J 1
21
i (F (x )+0i k )]j 2
R 1,j j J 1k j c 1,j =∂k j
∂[y −(F (x )+k )]∑x ∈R i 1,j J 1
21
i
0i j 20
⇓k =
j J 1
r ∑x ∈R i 1,j J 1
1,isouthafrica
j c 1,j j m F (x )0F (x )1F (x )=1F (x )+
0c I (x ∈j =1∑
dow
J 1
1,j R )
1,j m F (x )=m F (x )+
m −1c I (x ∈j =1∑
J m
m ,j R )
m ,j M F (x )=M F (x )+0c I (x ∈m =1∑M
j =1∑
J m
m ,j R )
m ,j ∑m =1M
M c ∑j =1J m m ,j F (x )0M F (x )M η
6. 最后再将的输出结果转换为逻辑回归预测值的形式:
经过上⾯六个步骤,就完成了GBDT回归算法的流程。
6.3 sklearn 中的GradientBoosting 分类算法
sklearn中的GradientBoostingRegressor 类对GradientBoosting分类算法进⾏了实现。
6.3.1 原型introduce mylf
ble.GradientBoostingRegressor(*, loss='ls', learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='friedman_m',min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrea=0.0, min_impurity_split=None,init=None, random_state=None, max_features=None, alpha=0.9, verbo=0, max_leaf_nodes=None, warm_start=Fal, presort='deprecated',validation_fraction=0.1, n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0)
由于GBDT分类算法和GBDT回归算法的流程很相似,最⼤的差别在与损失函数的选择上,所以GradientBoostingRegressor类的原型与GradientBoostingClassifier⾮常类似,两者的参数、属性和⽅法也⼏乎完全⼀致,因此为了节省篇幅,下⾯只列举出GradientBoostingRegressor类与
GradientBoostingClassifier类不同的地⽅。
6.3.2 常⽤参数
GradientBoostingRegressor类中的常⽤参数与GradientBoostingClassifier类最⼤的不同在于loss 和alpha :
loss : 默认为’ls’
表⽰回归损失函数的类型,可⽤选项为{ ‘ls’, ‘lad’, ‘huber’, ‘quantile’ }。下⾯将⼀⼀说明各个选项所代表的损失函数,以及使⽤这些损失函数时回归模型的优化⽬标(下⾯公式⽤表⽰优化⽬标,⽤表⽰模型对第个样本
的拟合值):
‘ls’ (least squares):表⽰最⼩⼆乘回归损失。它将样本的标签与拟合值之差的平⽅(即均⽅误差MSE)作为回归拟合效果的评价标准。此时模型的优化⽬标为:
采⽤该损失函数时的拟合效果如下:
F (x )=M F (x )+0ηc I (x ∈m =1∑M
j =1∑
J m
2020年7月英语六级真题
m ,j R )
m ,j F (x )M P (Y =1∣x )=1+e −F (x )
M 1
target f (x )i i x i target =arg min (y −f (x )i i =1∑
N
i f (x ))i 2
图1.6.1: loss='ls'时GBDT回归模型对数据的⼤致拟合曲线
cv是什么意思
使⽤该损失函数时,噪声点所造成的损失容易被放⼤,使得模型容易对噪声进⾏拟合,增⼤过拟合的风险。
‘lad’ (least absolute deviations):表⽰最⼩⼀乘回归损失。它将样本的标签与拟合值之差的绝对值(即平均绝对误差MAE)作为回归拟合效果的评价标准。此时模型的优化⽬标为:
采⽤该损失函数时的拟合效果如下:
图1.6.2: loss='lad'时GBDT回归模型对数据的⼤致拟合曲线
使⽤该损失函数时模型对噪声的敏感度较⼩,可以在⼀定程度上缓解最⼩⼆乘回归损失函数所带来的过拟合问题。‘huber’ (Huber Loss):表⽰Huber损失。此时模型的优化⽬标为:
这个函数看起来很复杂,但实际上意思就是:当预测偏差⼩于等于时,它等价于最⼩⼆乘回归;当预测偏差⼤于时,它等价于最⼩⼀乘回归,所以综合了两种回归⽅法的优点,对噪声的鲁棒性更强。这个 可以由⽤户指定。当指定loss='huber'时,可以通过调整参数alpha 来调整
的值,从⽽实现不同的拟合效果。直观图如下:
target =arg min ∣y −f (x )i i =1∑
N
i f (x )∣
i target =
⎪⎪⎪⎪⎪⎨
⎪⎪⎪⎪⎧arg min (y −f (x )),if ∣y −f (x )∣⩽δ
f (x )i i =1∑21i i 2i i ar
g min (∣y −f (x )∣−δ),
otherwi
f (x )i i =1∑
N
i i 21δδδδ
图1.6.3: loss='huber'并且alpha取不同值时GBDT回归模型对数据的⼤致拟合曲线
‘quantile’ (quantile regression loss):表⽰分位数回归损失。在有些时候,我们对样本做回归预测不仅仅是为了得到⼀个单⼀的回归预测值,⽽是更希望能探索出的完整分布状况,或者说某些情况下我们更希望了解的某个分位数,这时我们就需要⽤到分位数回归。通过指定loss='quntile',并调整参数alpha 对分位值进⾏赋值,就可以对回归预测值给予不同的惩罚,获取不同的分位数回归。
6.3.3 常⽤属性
同样和GradientBoostingClassifier类的⼏乎完全⼀样。
6.3.4 常⽤⽅法
GradientBoostingRegressor类的⽅法⽐GradientBoostingClassifier的少了如下⼏个:
staged_predict(X)staged_predict_probe(X)predict_proba(X)predict_log_proba(X)decision_function(X)staged_decision_function(X)
其他⽅法的名称和⽤法与GradientBoostingClassifier类⼀样,这⾥不再赘述。
6.4 实例5:探索不同回归损失函数对GBDT 回归模型拟合效果的影响
在本实例中我们会对GBDT回归模型分别⽤到这4种回归⽅法进⾏⽐较,加深读者对它们对GBDT回归模型拟合效果所造成的影响的认识。在开始之前,需要先定义随机数种⼦,确保每次运⾏⽣成的数据集均相同,这样才能⽐较采⽤不同回归损失函数时拟合效果的差异。
6.4.1 创建数据集
代码如下:x i f (x )i f (x )i f (x )i γnp .random .ed (1)
1
# 定义回归预测的⽬标函数def  xsin (x ):      return  x * np .sin (x )
# 定义0到10的1000个随机数作为训练数据集
X = np .atleast_2d (np .random .uniform (0, 10, size =100)).T .astype (np .float32)# 求出训练数据集
中各个点的回归⽬标值y = xsin (X ).ravel ()
# 为训练数据集的回归⽬标值添加随机噪声扰动,更便于⽐较不同回归⽅法的拟合效果disturb_y = 1.5 + 2 * np .random .random (y .shape )
# 将上⾯得到的噪声扰动转化为⾼斯分布值,拉⼤不同噪声点之间的距离,优化回归拟合的可视化效果y += np .random .normal (0, disturb_y ).astype (np .float32)
# 创建1000个0到10之间的随机数,把它们送给拟合好的模型进⾏预测与可视化,就可以可视化整个模型的拟合效果xx = np .atleast_2d (np .linspace (0, 10, 1000)).T .astype (np .float32)
1234567891011121314

本文发布于:2023-05-20 10:17:23,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/706191.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:回归   拟合   模型   函数   损失   效果   样本
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图