ML之GB:GB算法相关论文、相关思路、关键步骤、代码实现、配图集合、案例应用之详细攻略

目录

GB算法相关文献、论文

GB算法关键步骤

GB算法代码实现

GB案例应用

1、GB用于回归

2、GB用于分类


GB算法相关文献、论文

后期更新……

GB算法关键步骤

后期更新……

1、算法流程

GB算法代码实现

1、Scikit-learn中的 GBM

sklearn.ensemble.GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100, subsample=1.0, criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_split=1e-07, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort='auto')
参数 说明
loss 待优化的目标函数,‘deviance’表示采用logistic损失,输出概率值;‘exponential’ 表示采用指数损失。缺省‘deviance’
learning_rate 学习率或收缩因子。学习率和迭代次数/弱分类器数目n_estimators相关。 缺省:0.1
n_estimators 当数/弱分类器数目. 缺省:100
subsample 学习单个弱学习器的样本比例。缺省为:1.0

(1)、由于弱学习器为CART,所以很多参数与树模型的参数相同。
(2)、其中(loss='deviance', learning_rate=0.1, n_estimators=100, subsample=1.0, 这些参数主要关于弱学习器组合。

GB案例应用

1、GB用于回归

sklearn.ensemble.GradientBoostingRegressor 类的构造函数
函数API官方解释:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor

(1)、重点参数解释

Loss:字符串,可选(缺省值为“ls”)。梯度提升法用决策树来逼近整体损失函数的梯度。最常使用的整体损失项就是误差平方的和(sum squared error),这个就是通常的最小二乘回归方法的惩罚项。最小误差平方和(Least sum squared error)是一个很方便的选项,因为误差平方(squared error)在数学上处理比较简洁。但是对应实际的问题,其他的损失函数可能更合适。例如,笔者在研究自动交易问题时,注意到误差平方惩罚项会导致算法回避重大的损失,但是会接受较小的损失,但是较小的损失累积起来也是相当可观的。采用误差绝对值的和(Sum of absolute value of error)可以取得更好的性能,对自动交易问题更匹配。最小平均绝对值(Least mean absolute value)通常对异常点不敏感。梯度提升法是少数几个可以自由选择惩罚函数的算法。
可以取的字符串值如下。
● ls :最小均方误差(Least mean squared error)。
● lad :最小平均绝对误差(Least mean absolute value of error)。
● huber :胡贝尔误差是两种误差的混合:当误差数值较小时,取误差的平方,当
误差数值较大时,取误差的绝对值。
● quantile :分位数回归。预测分位数(由 alpha 参数指定)。
● Learning_rate。
        浮点数,可选(缺省值为0.1)。
         正如前面提到的,梯度提升法基于梯度下降法。Learning_rate 指明沿梯度方向的步长。如果步长太大,会看到误差迅速下降,然后迅速上升(是集成方法中决策树数目的函数)。如果步长太小,则误差下降得十分缓慢,需要训练更多的决策树。Learning_rate 的最佳值是依赖于问题的,也依赖于所选择的决策树的深度。缺省值0.1 是相对比较大的值,但是是一个很好的起点。首先选用这个值,观察是否导致了不稳定或者过拟合,然后再按需调整。

N_estimators:整型,可选(缺省值为100)。此参数指定集成方法中的决策树数目。如第6 章所述,也可以把它看作朝向梯度下降的方向,达到误差最小值所需的步数。也可以看作是增量式逼近所用的步数(即训练模型的数目)。因为每一个后续的逼近(每一个后续的决策树)都与learning rate( 学习速度)相乘,学习速度越大,朝向误差最小值取得同样的进步所需的决策树就越少。然而(正如在学习速度小节所讨论的那样),学习速度太高会导致过拟合。对于一个新问题,往往需要尝试几
次才能习得参数的最佳取值范围。缺省值100 可以作为一个很好的起点(特别是与学习速度的缺省值一起联合使用时)。

Subsample:浮点型,可选(缺省值为1.0)。如果与随机森林相似,用数据的抽样对决策树进行训练,则梯度提升法变成了随机梯度提升法。Friedman(算法发明人)建议subsample 取0.5。这是一个很好的起点。

Max_depth:整型,可选(缺省值为3)。就像随机森林,max_depth 是集成方法中单个决策树的深度,随机森林需要决策树达到一定深度才能产生高精确度的模型,然而梯度提升通过持续关注残差,使用深度为1 的决策树(叫作树桩stumps)就可以获得高精确度。梯度提升法对决策树深度的需求是由属性之间相关程度决定的。如果属性之间相互独立,则深度为1的决策树可以获得与深度为2 的决策树相同的性能。通常,可先将决策树的深度设为1,然后调整好其他参数。再将决策树的深度调整为2,看看是否会带来性能上的提升。笔者还从来没遇到过需要决策树深度为10 的问题。

Max_features:整型、浮点型、字符串,或者None, 可选(缺省值为None)。当查找最佳分割点时,需要考虑的属性的数目是由max_features 值和问题数据中属性的总数共同决定的。定义属性的总数为nFeatures,那么:如果 max_features 是整数,则在每次分割时考虑 max_features 个属性。如果 max_features 是浮点数,则 max_features 是需要考虑的属性占全体属性的百分比:int(max_features*nFeatures)。
          可能的字符串值包括:
auto max_features=nFeatures
sqrt max_features=sqrt(nFeatures)
log2 max_features=log2(nFeatures)
         如果 max_features 是 None,那么 max_features 等于 nFeatures。
         在梯度提升法Python 实现中,max_features 起的作用与随机森林中的作用相同。它决定了在决策树的每个节点进行分割时需要考虑多少个属性。这使梯度提升法的Python 实现具有一个独特的能力:它可以用随机森林作为基学习器来代替原来需要考虑全部属性空间的决策树。

Warm_start:布尔型,可选(缺省值为False)。如果warm_start 设为True,fit() 函数将从上次训练停止的地方开始。

(2)、重点属性解释

Feature_importances:一个数组,其长度等于数据集中属性的数目。数组中的值是正的浮点数,表明了相应属性对预测结果的重要性。数值越大,表明此属性越重要。
Train_score:一个数组,其长度等于集成方法中决策树的数目。此数组存放在训练阶段对决策树依次训练时的误差。

(3)、重点方法解释

Fit(XTrain, yTrain, monitor=None):XTrain 和yTrain 的形式与随机森林中的一样。XTrain 是一个(nInstances*nAttributes)numpy 数组,这里nInstances 是训练数据集的行数,nAttributes 是属性的数目。yTrain 是
一个存放训练数据集目标的(nInstances *1)numpy 数组。对象monitor 是回调函数,用来提早停止训练。

Predict(X):Predict(x) 由一组属性X 产生预测,X 的列数(属性数)与训练数据集属性数一致,X 可以有任意行的数据。

Staged_predict(x):此函数的行为与predict() 函数的行为类似,除了它是可迭代的,根据梯度提升法生成一系列模型,然后根据模型产生一系列的预测值。每次调用都会利用梯度提升法在已产生的一系列模型中增加一个决策树,然后产生一个预测值。

2、GB用于分类

函数API官方解释:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier

(1)、重点参数解释

loss:deviance 对于分类问题,deviance 是缺省的,也是唯一的选项。

(2)、重点方法解释

fit(X,y , monitor=None):对于分类问题,其不同点只在于标签y 的不同。对应分类问题,标签是0 到类别总数减1 的一个整数。对于二分类问题,标签值为0或者1。对于多类别分类问题,如果共有nClass 个不同的类别,则标签取值为0 ~ nClass-1。
decision_function(X):梯度提升分类器实际上是回归决策树的集合,会产生与所属类别的概率相关的实数估计值。这些估计值还需要经过反logistic 函数将其转换为概率。转换前的实数估计值可通过此函数获得,对这些估计值的使用就像ROC 曲线计算中使用概率那样简单。
predict(X):此函数预测所属类别。
predict_proba(X):此函数预测所属类别的概率。它对于每个类别有一列概率值。对于二分类问题有两列。
      对于多类别分类问题,共有nClass 列。上述函数的阶段性(staged)版本是可迭代的,产生与决策树数目相同的结果(也与
训练过程中执行的步数一致)。

ML之GB:GB算法相关论文、相关思路、关键步骤、代码实现、配图集合、案例应用之详细攻略相关推荐

  1. CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介、过程思路、关键步骤配图、案例应用之详细攻略

    CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介.过程思路.关键步骤配图.案例应用之详细攻略 目录 图像风格迁移算法简介 图像风格迁移算法过程思路 1.VGG对比NS 图像风 ...

  2. ML之FE:数据处理—特征工程之稀疏特征的简介、如何处理、案例应用之详细攻略

    ML之FE:数据处理-特征工程之稀疏特征的简介.如何处理.案例应用之详细攻略 目录 稀疏特征的简介 稀疏特征的如何处理 稀疏特征的案例应用 稀疏特征的简介 信号稀疏表示是过去近20年来信号处理界一个非 ...

  3. ML之DR之SVD:SVD算法相关论文、算法过程、代码实现、案例应用之详细攻略

    ML之DR之SVD:SVD算法相关论文.算法过程.代码实现.案例应用之详细攻略 目录 SVD算法相关论文 SVD算法过程 1.公式的推导 2.SVD算法两步过程 SVD代码实现 SVD的案例应用 1. ...

  4. ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略

    ML之XGBoost:XGBoost算法模型(相关配图)的简介.关键思路.代码实现(目标函数/评价函数).安装.使用方法.案例应用之详细攻略 目录 XGBoost算法模型(相关配图)的简介 1.XGB ...

  5. DL之LSTM:LSTM算法论文简介(原理、关键步骤、RNN/LSTM/GRU比较、单层和多层的LSTM)、案例应用之详细攻略

    DL之LSTM:LSTM算法论文简介(原理.关键步骤.RNN/LSTM/GRU比较.单层和多层的LSTM).案例应用之详细攻略 目录 LSTM算法简介 1.LSTM算法论文 1.1.LSTM算法相关论 ...

  6. Competition——互联网比赛(编程相关):国内外各种互联网比赛举办时间、条件、细节等详细攻略

    Competition--互联网比赛(编程相关):国内外各种互联网比赛举办时间.条件.细节等详细攻略 目录 国内 1.中国研究生电子设计竞赛 2.全国研究生移动终端应用设计创新大赛 3.全国大学生英语 ...

  7. ML之DT(树模型):DT(树模型算法)算法的简介、代码定义、案例应用之详细攻略

    ML之DT(树模型):DT(树模型算法)算法的简介.代码定义.案例应用之详细攻略 目录 树模型 1.A brief history of forests 2.树模型的复杂度 3.树模型的目标函数

  8. DL之CNN:计算机视觉之卷积神经网络算法的简介(经典架构/论文)、CNN优化技术、调参学习实践、CNN经典结构及其演化、案例应用之详细攻略

    DL之CNN:计算机视觉之卷积神经网络算法的简介(经典架构/论文).CNN优化技术.调参学习实践.CNN经典结构.案例应用之详细攻略 目录 卷积神经网络算法的简介 0.Biologically Ins ...

  9. ML:机器学习算法中—因子模型(多变量)、时序模型/时间序列模型(主要以单变量)算法对比的简介、带有时序性的因子模型概述、案例应用之详细攻略

    ML:机器学习算法中-因子模型(多变量).时序模型/时间序列模型(主要以单变量)算法对比的简介.带有时序性的因子模型概述.案例应用之详细攻略 目录 因子模型和时序模型/时间序列模型算法的简介 1.因子 ...

最新文章

  1. 某些插件 的一点小特性
  2. 示波器地线应用注意问题
  3. 用c#开发微信(2)扫描二维码,用户授权后获取用户基本信息 (源码下载)
  4. WINXP 提升速度
  5. (三)git常用命令及方法大全
  6. 让代码更简洁 和@Autowired说分手, 迎接 @RequiredArgsConstructor注解
  7. 不同数据库的自增代码
  8. oracle exp(dmp)命令带过滤条件?
  9. 安卓系统的文件管理神器Solid Explorer(v2.2)
  10. 死锁问题------------------------INSERT ... ON DUPLICATE KEY UPDATE*(转)
  11. EXT2/EXT3文件系统
  12. ps高低频磨皮详细教学
  13. java ldc指令_6.Java JVM_4.JVM字节码之整型入栈指令(iconst、bipush、sipush、ldc)
  14. Aliyun ECS 配置
  15. Oracle 考试题 答案
  16. 【数学问题2】向量微分
  17. 《机电传动控制》——直流电机调速仿真作业
  18. 服装行业如何用手持PDA盘点?
  19. 【百问网7天物联网智能家居】训练营学习笔记(七)
  20. 栈帧push的汇编解释

热门文章

  1. 用html修改游戏聊天字体,前端使用自定义字体方案
  2. php中border属性,css中display属性和border属性常遇问题讲解
  3. Latex学习(脚注)
  4. 企业存储管理的另一种可能 群晖如何成为NAS代名词?
  5. Python09 字典
  6. CSS Dock Menu:JS+CSS 仿苹果MAC机桌面导航菜单
  7. python 操作redis之——HyperLogLog (八)
  8. 在华为写了 13 年代码,都是宝贵的经验
  9. 2019年我建议你做好三件事情
  10. 聊聊 Spring Cloud Config