GDBT

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xianqianshi3004/article/details/86694068

CART

决策树有两种类型:分类树和回归树,其中分类树输出是样本的类别,回归树输出的是连续的实数。CART(Classification And Regression Tree)既可以做分类也可以做回归。

CART是在给定输入随机变量X的条件下输出随机变量Y的条件概率分布学习方法。CART书假设决策树是二叉树,内部节点的取值为‘是’和‘否’,这样的决策树等价于递归的二分每一个特征,将输出空间即特征空间分为有限个单元,并在这些单元确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。

CART 树与ID3 决策树和 C4.5 决策树的重要区别:

  • CART 树是二叉树,而后两者是N 叉树
    由于是二叉树,因此 CART 树的拆分不依赖于特征的取值数量。因此CART 树也就不像ID3 那样倾向于取值数量较多的特征。

  • CART 树的特征可以是离散的,也可以是连续的
    而后两者的特征是离散的。如果是连续的特征,则需要执行分桶来进行离散化

CART算法分两步:

  • 决策树生成:用训练数据生成尽可能大的决策树。
  • 决策树剪枝:用验证数据基于损失函数最小化的标准对生成的决策树剪枝。

CART 回归树(主要参考《统计学习方法》)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
遍历所有输入变量,找到最优的切分变量j,构成一个对(j,s),依次讲输入空间划分为两个区域,接着,对每一个区域重复上述划分过程,直到满足停止条件为止,这样就生成一棵树。

CART 分类树(主要参考《统计学习方法》)

在这里插入图片描述
在这里插入图片描述
分类过程和ID3和C4.5相似。

提升树

提升树是以分类树或者回归树为基本的提升方法。
提升方法实际上采用加法模型与前向分步算法,以决策树为基函数的提升方法称为提升树,对于分类问题决策树是二叉树的分类树是二叉分类树,提升树模型的加法模型是:
在这里插入图片描述

提升树算法

提升树算法采用前向分步算法。首先确定初始提升树F0(x)=0,第m步的模型是
Fm(x)=Fm-1(x)+T(x;Θm)其中,Fm-1(x)为当前模型,通过经验极小化确定下一棵决策树的参数Θm,
在这里插入图片描述
由于输的树的线性组合可以很好的拟合训练数据,即使数据中的输入和输出之间的关系很复杂也是如此,所以提升树是一个高功能的学习算法。
在这里插入图片描述
是当前模型拟合数据的残差,所以对回归问题的提升树来说,只需简单的简单地拟合当前模型的残差。

损失函数

提升树利用加法模型和前向分部算法实现学习的优化过程,当损失函数是平方损失和指数损失的时,每一步优化有很简单,但对于一般的损失函数而言,往往每一步优化并不那么容易,针对不同的损失函数采用更一般的方法策略,这时候就提出了梯度提升。

梯度提升树

这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度是当前模型的值

在这里插入图片描述
作为回归问题的提升树算法中的残差的近似值,拟合一个回归树。
在这里插入图片描述
在这里插入图片描述

分类算法

参考链接
  这里我们再看看GBDT分类算法,GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。
为了解决这个问题,主要有两个方法,一个是用指数损失函数,此时GBDT退化为Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法。也就是说,我们用的是类别的预测概率值和真实概率值的差来拟合损失。本文仅讨论用对数似然损失函数的GBDT分类。而对于对数似然损失函数,我们又有二元分类和多元分类的区别
在这里插入图片描述
在这里插入图片描述

正则化

在这里插入图片描述

Sklearn基本参数

loss='deviance', ##损失函数默认deviance deviance具有概率输出的分类的偏差
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 ##随机种子-方便重现

猜你喜欢

转载自blog.csdn.net/xianqianshi3004/article/details/86694068