参考:https://blog.csdn.net/qq_16000815/article/details/81063320

scikit-learn基于梯度提升树算法提供了两个模型:

  1. GradientBoostingClassifier即GBDT(Gradient Boosting Decision Tree)梯度提升决策树,用于分类问题
  2. GradientBoostingRegressor即GBRT(Gradient Boost Regression Tree)渐进梯度回归树,用于回归问题

梯度提升决策树

from sklearn.ensemble import GradientBoostingClassifierGradientBoostingClassifier(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.,max_depth=3, min_impurity_decrease=0.,min_impurity_split=None, init=None,random_state=None, max_features=None, verbose=0,max_leaf_nodes=None, warm_start=False,presort='auto')

参数含义:

1、loss:损失函数

  • loss='deviance',默认值,此时的损失函数与逻辑回归的损失函数相同,为对数损失:L(Y,P(Y|X))=-logP(Y|X)。
  • loss='exponential',损失函数为指数损失函数。

2、learning_rate:float, optional (default=0.1)。学习率,在learning_rate和n_estimators之间需要权衡。通常学习率越小,需要的基本分类器就越多,因此在learning_rate和n_estimators之间要有所折中。

3、n_estimators:int (default=100),指定基本决策树的数量。梯度提升对过拟合有很好的鲁棒性,因此该值越大,性能越好。

4、subsample:float, optional (default=1.0)

  • 用于拟合个体基本学习器的样本数量。如果小于1.0,模型将会变成随机梯度提升决策树。
  • 如果subsample<1.0,此时会减少方差,提高偏差

5、criterion:string, optional (default="friedman_mse"),评估节点分裂的质量指标。

6、min_samplses_split:int, float, optional (default=2),表示分裂一个内部节点需要的最少样本数。

  • 如果为整数,则min_samples_split就是最少样本数。
  • 如果为浮点数(0到1之间),则每次分裂最少样本数为ceil(min_samples_split * n_samples)

7、min_samples_leaf:int, float, optional (default=1),叶子节点最少样本数

  • 如果为整数,则min_samples_split就是最少样本数。
  • 如果为浮点数(0到1之间),则每个叶子节点最少样本数为ceil(min_samples_leaf * n_samples)

8、min_weight_fraction_leaf:float, optional (default=0.),指定叶子节点中样本的最小权重。

9、max_depth:integer, optional (default=3),指定每个基本决策树的最大深度。最大深度限制了决策树中的节点数量。调整这个参数可以获得更好的性能。

10、min_impurity_decrease:float, optional (default=0.)

如果节点的分裂导致不纯度的减少(分裂后样本比分裂前更加纯净)大于或等于min_impurity_decrease,则分裂该节点。
 个人理解这个参数应该是针对分类问题时才有意义。这里的不纯度应该是指基尼指数。
 回归生成树采用的是平方误差最小化策略。分类生成树采用的是基尼指数最小化策略。

11、min_impurity_split:树生长过程中停止的阈值。如果当前节点的不纯度高于阈值,节点将分裂,否则它是叶子节点。这个参数已经被弃用。用min_impurity_decrease代替了min_impurity_split。

12、init:BaseEstimator, None, optional (default=None),一个基本分类器对象或者None,该分类器对象用于执行初始的预测。如果为None,则使用loss.init_estimator

13、random_state:int, RandomState instance or None, optional (default=None)

  • 如果为整数,则它指定了随机数生成器的种子。
  • 如果为RandomState实例,则指定了随机数生成器。
  • 如果为None,则使用默认的随机数生成器。

14、max_features:int, float, string or None, optional (default=None)
 搜寻最佳划分的时候考虑的特征数量。

  1. 如果为整数,每次分裂只考虑max_features个特征。
  2. 如果为浮点数(0到1之间),每次切分只考虑int(max_features * n_features)个特征。
  3. 如果为'auto'或者'sqrt',则每次切分只考虑sqrt(n_features)个特征
  4. 如果为'log2',则每次切分只考虑log2(n_features)个特征。
  5. 如果为None,则每次切分考虑n_features个特征。
  6. 如果已经考虑了max_features个特征,但还是没有找到一个有效的切分,那么还会继续寻找下一个特征,直到找到一个有效的切分为止。
  7. 如果max_features < n_features,则会减少方差,增加偏差。

15、verbose:int, default: 0,如果为0则不输出日志信息,如果为1则每隔一段时间打印一次日志信息。

16、max_leaf_nodes:int or None, optional (default=None),指定每颗决策树的叶子节点的最大数量。

  • 如果为None,则叶子节点数量不限。
  • 如果不为None,则max_depth被忽略。

17、warm_start:bool, default: False,当为True时,则继续使用上一次训练的结果,增加更多的estimators来集成。

18、presort:bool or 'auto', optional (default='auto'),在训练过程中,是否预排序数据加速寻找最佳划分。

属性:

  1. feature_importances_:数组,给出每个特征的重要性。
  2. oob_improvement_:array, shape = [n_estimators],数组,给出了每增加一颗基本决策树,在包外估计(即测试集上)的损失函数的改善情况(相对于上一轮迭代),即损失函数的减少值。
  3. train_score_:数组,给出每增加一颗基本决策树,在训练集上的损失函数的值。
  4. init:初始预测使用的分类器。
  5. estimators_:数组,给出每棵基础决策树。

方法:

  1. fit():训练模型
  2. predict():模型预测
  3. predict_log_proba():数组,预测各个类别的概率对数值。
  4. predict_proba():数组,预测各个类别的概率值。

渐进梯度回归树

from sklearn.ensemble import GradientBoostingRegressor
GradientBoostingRegressor(loss='ls', 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.,max_depth=3, min_impurity_decrease=0.,min_impurity_split=None, init=None, random_state=None,max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None,warm_start=False, presort='auto')

参数含义:

1、loss:{'ls', 'lad', 'huber', 'quantile'}, optional (default='ls'),指定优化的损失函数。

  • loss='ls':损失函数是平方损失函数
  • loss='lad':损失函数为绝对值损失函数
  • loss='huber':损失函数是上边两种损失函数的结合。

梯度提升树 GradientBoosting相关推荐

  1. LESSON 12.1-12.6 梯度提升树的基本思想梯度提升树的参数

    目录 一 梯度提升树的基本思想  1 梯度提升树 pk AdaBoost  2 GradientBoosting回归与分类的实现 二 梯度提升树的参数  1 迭代过程    1.1 初始预测结果

  2. NLP之NBGBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva)、梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测)

    NLP之NB&GBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva).梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测) ...

  3. R语言使用caret包构建gbdt模型(随机梯度提升树、Stochastic Gradient Boosting )构建回归模型、通过method参数指定算法名称

    R语言使用caret包构建gbdt模型(随机梯度提升树.Stochastic Gradient Boosting )构建回归模型.通过method参数指定算法名称 目录

  4. 随机森林(Random Forest)和梯度提升树(GBDT)有什么区别?

    随机森林(Random Forest)和梯度提升树(GBDT)有什么区别? 随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法. 随机森林是由很多 ...

  5. Boosting、Adaboost、AdaBoost模型的优缺点、提升树、梯度提升树GBDT

    Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT 目录 Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT Boo ...

  6. 深度学习核心技术精讲100篇(二十)-如何通过树模型实现梯度提升树(GBDT)+LR,随机森林(RandomForest) +LR

    前言 在讲如何通过树模型做特征工程之前,首先让我们回顾一下一个机器学习(除去深度学习项目部分)项目的大致流程: 从业务场景中抽象出问题--分类问题,回归问题,还是聚类问题等, 接下来是数据获取,数据清 ...

  7. 机器学习Sklearn实战——梯度提升树二分类原理

    一.算法使用 (一)创建 (二)参数调整 cross_val_score:求单一参数最合适的值(KNN) GridSearchCV网格搜索:多参数组合最优的值 标准:准确率,精确率,召回率,F1 (三 ...

  8. 【机器学习】梯度提升树(GBDT)的原理小结

    在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting De ...

  9. Gradient Tree Boosting:梯度提升树详解

    理论 数学推导请参考<统计机器学习>-李航,或者参考sklearn的官方文档,下面是我的部分笔记,也可以作为参考 优缺点 GBRT是对任意的可微损失函数的提升算法的泛化,即可回归亦可分(s ...

最新文章

  1. debian 10 静态ip配置
  2. linux c时间戳转换,Android C/C++代码中将时间戳转换为标准时间
  3. 万亿大模型究竟怎么用?达摩院浙大上海人工智能实验室联手推出洛犀平台:大小模型端云协同进化...
  4. jdk7 for Mac
  5. cacti linux 模板,Cacti模板
  6. mysql安装8.013_Mysql 8.0.13 安装
  7. apache flume_Flume:使用Apache Flume收集客户产品搜索点击数据
  8. android安卓系统2.3 使用说明书,Android2.3操作界面
  9. 一图胜千言,8 张图理解 Java
  10. java switch case怎么判断范围_java小白从入门到精通(基础二)
  11. PDA连接远程SQL 2005数据库
  12. Windows10更新提示语言不同不能保留程序和设置
  13. (日常搬砖)voc(xml)格式的标注转换为coco(json)格式
  14. 推荐免费下载380套大型商业源码
  15. 鼠标测试软件m,罗技M525鼠标使用测试_罗技 M525鼠标_键鼠评测-中关村在线
  16. matlab中样条插值,样条插值的MATLAB实现
  17. mysql execute 方法_MyEclipse------execute()使用方法
  18. Android马甲包
  19. 电商类-仿美团页面demo
  20. 【stm32f0】stm32 总中断的打开与关闭

热门文章

  1. 拼多多自动确认收货后还能退吗?退货申请期限是多久?
  2. VB6.0连接 SQLSERVER2008数据库
  3. dell服务器连硬盘柜,加载 'dell MD3200 磁盘存储柜' 到服务器
  4. behance上流行的抽象炫酷资源,国外高级抽象炫酷素材合集分享
  5. java微服务打包命令
  6. 芯片热!价格战!争落地!2018年人工智能发展回忆录
  7. ajax beforesend 不执行,ajaxSetup(beforeSend不工作
  8. excel 画散点图 怎么设置图片的分辨率_Excel处理临床数据:图表篇
  9. IOS – OpenGL ES 图像哈哈镜效果 GPUImageStretchDistortionFilter
  10. 拯救阿拉德大陆 (容斥原理)