梯度提升树 GradientBoosting
参考:https://blog.csdn.net/qq_16000815/article/details/81063320
scikit-learn基于梯度提升树算法提供了两个模型:
- GradientBoostingClassifier即GBDT(Gradient Boosting Decision Tree)梯度提升决策树,用于分类问题
- 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)
搜寻最佳划分的时候考虑的特征数量。
- 如果为整数,每次分裂只考虑max_features个特征。
- 如果为浮点数(0到1之间),每次切分只考虑int(max_features * n_features)个特征。
- 如果为'auto'或者'sqrt',则每次切分只考虑sqrt(n_features)个特征
- 如果为'log2',则每次切分只考虑log2(n_features)个特征。
- 如果为None,则每次切分考虑n_features个特征。
- 如果已经考虑了max_features个特征,但还是没有找到一个有效的切分,那么还会继续寻找下一个特征,直到找到一个有效的切分为止。
- 如果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'),在训练过程中,是否预排序数据加速寻找最佳划分。
属性:
- feature_importances_:数组,给出每个特征的重要性。
- oob_improvement_:array, shape = [n_estimators],数组,给出了每增加一颗基本决策树,在包外估计(即测试集上)的损失函数的改善情况(相对于上一轮迭代),即损失函数的减少值。
- train_score_:数组,给出每增加一颗基本决策树,在训练集上的损失函数的值。
- init:初始预测使用的分类器。
- estimators_:数组,给出每棵基础决策树。
方法:
- fit():训练模型
- predict():模型预测
- predict_log_proba():数组,预测各个类别的概率对数值。
- 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相关推荐
- LESSON 12.1-12.6 梯度提升树的基本思想梯度提升树的参数
目录 一 梯度提升树的基本思想 1 梯度提升树 pk AdaBoost 2 GradientBoosting回归与分类的实现 二 梯度提升树的参数 1 迭代过程 1.1 初始预测结果
- NLP之NBGBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva)、梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测)
NLP之NB&GBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva).梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测) ...
- R语言使用caret包构建gbdt模型(随机梯度提升树、Stochastic Gradient Boosting )构建回归模型、通过method参数指定算法名称
R语言使用caret包构建gbdt模型(随机梯度提升树.Stochastic Gradient Boosting )构建回归模型.通过method参数指定算法名称 目录
- 随机森林(Random Forest)和梯度提升树(GBDT)有什么区别?
随机森林(Random Forest)和梯度提升树(GBDT)有什么区别? 随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法. 随机森林是由很多 ...
- Boosting、Adaboost、AdaBoost模型的优缺点、提升树、梯度提升树GBDT
Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT 目录 Boosting.Adaboost.AdaBoost模型的优缺点.提升树.梯度提升树GBDT Boo ...
- 深度学习核心技术精讲100篇(二十)-如何通过树模型实现梯度提升树(GBDT)+LR,随机森林(RandomForest) +LR
前言 在讲如何通过树模型做特征工程之前,首先让我们回顾一下一个机器学习(除去深度学习项目部分)项目的大致流程: 从业务场景中抽象出问题--分类问题,回归问题,还是聚类问题等, 接下来是数据获取,数据清 ...
- 机器学习Sklearn实战——梯度提升树二分类原理
一.算法使用 (一)创建 (二)参数调整 cross_val_score:求单一参数最合适的值(KNN) GridSearchCV网格搜索:多参数组合最优的值 标准:准确率,精确率,召回率,F1 (三 ...
- 【机器学习】梯度提升树(GBDT)的原理小结
在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting De ...
- Gradient Tree Boosting:梯度提升树详解
理论 数学推导请参考<统计机器学习>-李航,或者参考sklearn的官方文档,下面是我的部分笔记,也可以作为参考 优缺点 GBRT是对任意的可微损失函数的提升算法的泛化,即可回归亦可分(s ...
最新文章
- debian 10 静态ip配置
- linux c时间戳转换,Android C/C++代码中将时间戳转换为标准时间
- 万亿大模型究竟怎么用?达摩院浙大上海人工智能实验室联手推出洛犀平台:大小模型端云协同进化...
- jdk7 for Mac
- cacti linux 模板,Cacti模板
- mysql安装8.013_Mysql 8.0.13 安装
- apache flume_Flume:使用Apache Flume收集客户产品搜索点击数据
- android安卓系统2.3 使用说明书,Android2.3操作界面
- 一图胜千言,8 张图理解 Java
- java switch case怎么判断范围_java小白从入门到精通(基础二)
- PDA连接远程SQL 2005数据库
- Windows10更新提示语言不同不能保留程序和设置
- (日常搬砖)voc(xml)格式的标注转换为coco(json)格式
- 推荐免费下载380套大型商业源码
- 鼠标测试软件m,罗技M525鼠标使用测试_罗技 M525鼠标_键鼠评测-中关村在线
- matlab中样条插值,样条插值的MATLAB实现
- mysql execute 方法_MyEclipse------execute()使用方法
- Android马甲包
- 电商类-仿美团页面demo
- 【stm32f0】stm32 总中断的打开与关闭
热门文章
- 拼多多自动确认收货后还能退吗?退货申请期限是多久?
- VB6.0连接 SQLSERVER2008数据库
- dell服务器连硬盘柜,加载 'dell MD3200 磁盘存储柜' 到服务器
- behance上流行的抽象炫酷资源,国外高级抽象炫酷素材合集分享
- java微服务打包命令
- 芯片热!价格战!争落地!2018年人工智能发展回忆录
- ajax beforesend 不执行,ajaxSetup(beforeSend不工作
- excel 画散点图 怎么设置图片的分辨率_Excel处理临床数据:图表篇
- IOS – OpenGL ES 图像哈哈镜效果 GPUImageStretchDistortionFilter
- 拯救阿拉德大陆 (容斥原理)