GBDT算法梳理

梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT),是多棵树的输出预测值的累加,GBDT的树都是回归树。

GBDT的思想可以用一个通俗的例子解释,假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。

 

1 前向分布算法

前向分布算法求解这一问题的优化方法是:每次只学习一个基函数及系数,逐步逼近最优解。

具体的前向分布算法为:

 

其中fm(xi)=fm-1(xi)+Bb(xi;r)  fm-1(xi)是已知的,所以每次优化Bb(xi;r)

 

参考:https://blog.csdn.net/kateswall/article/details/70765767

2.负梯度拟合

我们希望找到一个 f(x) 使得 L(y, f(x)) 最小,那么 f(x) 就得沿着使损失函数L减小的方向变化,即:

f(x_{1}) = f(x) - \frac{\partial L(y, f(x))}{\partial f(x)}

同时,最新的学习器是由当前学习器 f(x) 与本次要产生的回归树 T_{1}相加得到的:

f(x_{1}) = f(x) + T_{1}

因此,为了让损失函数减小,需要令:

- \frac{\partial L(y, f(x))}{\partial f(x)} = T_{1}

即用损失函数对f(x)的负梯度来拟合回归树。

参考 http://www.cnblogs.com/duan-decode/p/9889955.html

3.损失函数

 

4.回归

5 二分类

 

5.多元分类

   

6.正则化

 

 参考https://www.cnblogs.com/pinard/p/6140514.html

7.优缺点

  GBDT主要的优点有:

    1) 可以灵活处理各种类型的数据,包括连续值和离散值。

    2) 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。

    3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

  GBDT的主要缺点有:

    1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。

8sklearn参数

sklearn.ensemble.GradientBoostingRegressor(
loss='ls',      ##默认ls损失函数'ls'是指最小二乘回归lad'(最小绝对偏差)'huber'是两者的组合
n_estimators=100, ##默认100 回归树个数 弱学习器个数
learning_rate=0.1,  ##默认0.1学习速率/步长0.0-1.0的超参数  每个树学习前一个树的残差的步长
max_depth=3,   ## 默认值为3每个回归树的深度  控制树的大小 也可用叶节点的数量max leaf nodes控制
    subsample=1,  ##用于拟合个别基础学习器的样本分数 选择子样本<1.0导致方差的减少和偏差的增加
min_samples_split=2, ##生成子节点所需的最小样本数 如果是浮点数代表是百分比
min_samples_leaf=1, ##叶节点所需的最小样本数  如果是浮点数代表是百分比
max_features=None, ##在寻找最佳分割点要考虑的特征数量auto全选/sqrt开方/log2对数/None全选/int自定义几个/float百分比
max_leaf_nodes=None, ##叶节点的数量 None不限数量
min_impurity_split=1e-7, ##停止分裂叶子节点的阈值
verbose=0,  ##打印输出 大于1打印每棵树的进度和性能
warm_start=False, ##True在前面基础上增量训练 False默认擦除重新训练 增加树
random_state=0  ##随机种子-方便重现
)

9 应用场景

 GBDT几乎可用于所有回归问题(线性/非线性),相对logistic regression仅能用于线性回归,GBDT的适用面非常广。亦可用于二分类问题(设定阈值,大于阈值为正例,反之为负例)。

参考https://www.cnblogs.com/Sugar-Chl/p/10158672.html

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GBDT算法(Gradient Boosting Decision Tree)是一种基于决策的集成学习算法,是由多棵决策组成的强学习模型。该算法是通过迭代的方式,不断优化损失函数来生成决策。该算法的结构比较简单,但是能够有效地处理特征稀疏、高维度数据,具有较高的精度和鲁棒性。 MATLAB作为一种强大的数学软件,提供了很多机器学习算法的实现。在MATLAB中使用GBDT算法,可以利用MATLAB的机器学习工具箱中提供的函数进行实现,也可以使用第三方工具箱进行实现。使用MATLAB实现GBDT算法能够简化算法实现的流程,提高开发效率;同时,MATLAB也提供了各种可视化工具,方便对算法结果进行分析和可视化。 当使用MATLAB实现GBDT算法时,需要注意以下几点: 1. 数据预处理。GBDT算法对数据的预处理要求较高,需要对数据进行归一化、异常值处理等,以达到更好的训练效果。 2. 调整模型参数。GBDT算法中有很多超参数,如的深度、节点分裂的最小样本数等,需要通过实验调整,以得到最优的模型。 3. 训练过程的可视化。使用MATLAB可以方便地将模型训练过程可视化,以便对模型的训练效果进行实时监控和分析。 4. 结果分析和可视化。GBDT算法生成的模型是一组决策,可以通过可视化的方式将不同决策的划分边界可视化,以便更好地理解模型的逻辑。 总之,使用MATLAB实现GBDT算法可以快速构建出精度高、鲁棒性好的强学习模型,成为数据分析和机器学习领域的重要工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值