社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【机器学习基础】GBDT--梯度提升树实例分析完全解读

杉杉不要bug • 5 年前 • 412 次点击  
阅读 25

【机器学习基础】GBDT--梯度提升树实例分析完全解读

GBDT是集成学习中的一员,想要理解梯度提升,必须先理解什么是提升树,想理解提升树要了解什么是提升方法。

提升方法本身是采用了加法模型(基函数的线性组合)和前向分步算法,从弱学习算法出发,反复学习,得到一系列弱学习器,然后通过组合弱学习器得到强学习器。当每个弱学习器是CART树的时候,就是提升树。对于回归问题一般采用平方误差作为损失函数,分类问题采用指数损失函数,一般问题用一般的损失函数。

一、提升树

每一步生成一棵树,不断优化当前的学习器,用优化后的学习器学习到的值,和原始标签数据计算残差,继续将残差作为下一棵树的初始数据进行拟合,每一棵树都是CART回归树,因为每次迭代拟合的目标是残差,是连续值。

回归问题中提升树的生成方法:

二、梯度提升

那么为什么要用负梯度呢?对于损失函数是平方误差的回归问题,我们可以简单优化,但是对于一般的损失函数用损失函数的负梯度来拟合本轮损失的近似值,利用最速下降法的近似方法来起到和回归问题中的残差近似的效果。

三、梯度提升实例

四、梯度提升实例

用一个稍微复杂一点点的例子来说明一下,上个例子中只有一个特征,不易理解。要求最大深度为3,树5棵。

调用sklearn跑出来的5棵树如下图,

初始值,f0(x)=1.475

第一棵树:

第二棵树:
第三棵树:
第四棵树:
第五棵树:

详细解答过程:(感谢大神) mp.weixin.qq.com/s/ljC2dYfUz…

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/32686
 
412 次点击