这四种都是非常流行的集成学习(Ensemble Learning)方式,在本文简单总结一下它们的原理和使用方法.

Random Forest(随机森林):

  • 随机森林属于Bagging,也就是有放回抽样,多数表决或简单平均.Bagging之间的基学习器是并列生成的.RF就是以决策树为基学习器的Bagging,进一步在决策树的训练过程中引入了随机特征选择,这会使单棵树的偏差增加,但总体而言有利于集成.RF的每个基学习器只使用了训练集中约63.2%的样本,剩下的样本可以用作袋外估计.
  • 一般使用的是sklearn.ensemble中的RandomForestClassifierRandomForestRegressor.
  • 框架参数(相比GBDT较少,因为基学习器之间没有依赖关系):
  1. n_estimators=100:最大的基学习器的个数
  2. oob_score=False:是否采用袋外样本
  3. bootstrap=True:是否有放回采样
  4. n_jobs=1:并行job个数
  • 决策树参数:
  1. max_features=None:划分时考虑的最大特征数,可选log2,sqrt,auto或浮点数按比例选择,也可以选整数按个数选择.
  2. max_depth:最大深度
  3. min_samples_split:内部节点划分所需最小样本数,如果样本小于这个值就不会再继续划分.
  4. min_saples_laef:叶子节点最少的样本数,小于这个值就会被剪枝.
  5. min_weight_fraction_leaf:叶子节点所有样本权重和的最小值
  6. max_leaf_nodes=None:最大叶子节点数,可以防止过拟合
  7. min_impurity_split:节点增长的最小不纯度
  8. criterion:CART树划分时对特征的评价标准,分类树默认gini,可选entropy,回归树默认mse,可选mae.

GBDT(梯度提升树)

  • GBDT属于Boosting.它和Bagging都使用同样类型的分类器,区别是不同分类器通过串行训练获得,通过关注被已有分类器错分的数据来获得新的分类器.Boosting分类器的权重并不相等,每个权重对应分类器在上一轮迭代中的成功度.GBDT的关键是利用损失函数的负梯度方向作为残差的近似值,进而拟合出新的CART回归树.
  • 一般使用的是sklearn.ensemble中的GradientBoostingClassifierGradientBoostingRegressor.
  • 框架参数:
  1. n_estimators=100:最大基学习器个数
  2. learning_rate=1:每个基学习器的权重缩减系数(步长)
  3. subsample=1.0:子采样,是不放回抽样,推荐值0.5~0.8
  4. loss:损失函数,分类模型默认deviance,可选exponential.回归模型默认ls,可选lad,huber和quantile.
  • 决策树参数(与RF基本相同):
  1. max_features=None:划分时考虑的最大特征数,可选log2,sqrt,auto或浮点数按比例选择,也可以选整数按个数选择.
  2. max_depth:最大深度
  3. min_samples_split:内部节点划分所需最小样本数,如果样本小于这个值就不会再继续划分.
  4. min_saples_laef:叶子节点最少的样本数,小于这个值就会被剪枝.
  5. min_weight_fraction_leaf:叶子节点所有样本权重和的最小值
  6. max_leaf_nodes=None:最大叶子节点数,可以防止过拟合
  7. min_impurity_split:节点增长的最小不纯度

XGBoost

  • 相比传统GBDT,XGBoost能自动利用CPU的多线程,支持线性分类器,使用二阶导数进行优化,在代价函数中加入了正则项,可以自动处理缺失值,支持并行(在特征粒度上的).
  • 参考XGBoost python APIxgboost调参经验.
  • 在训练过程一般用xgboost.train(),参数有:
  1. params:一个字典,训练参数的列表,形式是 {‘booster’:’gbtree’,’eta’:0.1}
  2. dtrain:训练数据
  3. num_boost_round:提升迭代的次数
  4. evals:用于对训练过程中进行评估列表中的元素
  5. obj:自定义目的函数
  6. feval:自定义评估函数
  7. maxmize:是否对评估函数最大化
  8. early_stopping_rounds:早停次数
  9. learning_rates:每一次提升的学习率的列表
  • params参数:
  1. booster=gbtree:使用哪种基学习器,可选gbtree,gblinear或dart
  2. objective:目标函数,回归一般是reglinear,reg:logistic,count:poisson,分类一般是binary:logistic,rank:pairwise
  3. eta:更新中减少的步长
  4. max_depth:最大深度
  5. subsample:随即采样的比例
  6. min_child_weight:最小叶子节点样本权重和
  7. colsample_bytree:随即采样的列数的占比
  8. gamma:分裂最小loss,只有损失函数下降超过这个值节点才会分裂
  9. lambda:L2正则化的权重

LightGBM

  • LightGBM是基于决策树的分布式梯度提升框架.它与XGBoost的区别是:
  1. 切分算法,XGBoost使用pre_sorted,LightGBM采用histogram.
  2. 决策树生长策略:XGBoost使用带深度限制的level-wise,一次分裂同一层的叶子.LightGBM采用leaf-wise,每次从当前所有叶子找到一个分裂增益最大的叶子.
  3. 此外还有objective,metric等参数.

RF/GBDT/XGBoost/LightGBM简单总结(完结)的更多相关文章

  1. RF,GBDT,XGBoost,lightGBM的对比

    转载地址:https://blog.csdn.net/u014248127/article/details/79015803 RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensem ...

  2. 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别

    目录 1.基本知识点介绍 2.各个算法原理 2.1 随机森林 -- RandomForest 2.2 XGBoost算法 2.3 GBDT算法(Gradient Boosting Decision T ...

  3. R︱Yandex的梯度提升CatBoost 算法(官方述:超越XGBoost/lightGBM/h2o)

    俄罗斯搜索巨头 Yandex 昨日宣布开源 CatBoost ,这是一种支持类别特征,基于梯度提升决策树的机器学习方法. CatBoost 是由 Yandex 的研究人员和工程师开发的,是 Matri ...

  4. GBDT && XGBOOST

                                  GBDT && XGBOOST Outline Introduction GBDT Model XGBOOST Model ...

  5. 从信用卡欺诈模型看不平衡数据分类(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,IF为主

    总结:不平衡数据的分类,(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制.过采样后模型选择RF.xgboost.神经网络能够取得非常不错的效果.(2)模型层面:使用模型 ...

  6. 机器学习 GBDT+xgboost 决策树提升

    目录 xgboost CART(Classify and Regression Tree) GBDT(Gradient Boosting Desicion Tree) GB思想(Gradient Bo ...

  7. RF, GBDT, XGB区别

    GBDT与XGB区别 1. 传统GBDT以CART作为基分类器,xgboost还支持线性分类器(gblinear),这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回 ...

  8. xgboost&lightgbm调参指南

    本文重点阐述了xgboost和lightgbm的主要参数和调参技巧,其理论部分可见集成学习,以下内容主要来自xgboost和LightGBM的官方文档. xgboost Xgboost参数主要分为三大 ...

  9. 机器学习之——集成算法,随机森林,Bootsing,Adaboost,Staking,GBDT,XGboost

    集成学习 集成算法 随机森林(前身是bagging或者随机抽样)(并行算法) 提升算法(Boosting算法) GBDT(迭代决策树) (串行算法) Adaboost (串行算法) Stacking ...

随机推荐

  1. MySQL多个相同结构的表查询并把结果合并放在一起的语句(union all)

    union all select *,'1' as category from table1001 where price > 10 union all select *,'2' as cate ...

  2. POJ1845:Sumdiv(求因子和+逆元+质因子分解)好题

    题目链接:http://poj.org/problem?id=1845 定义: 满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元. 为什么要有乘法逆元呢? 当我们要求(a/b) mod p的 ...

  3. Office 2003 2007 2010 配置进度 正在配置 解决方案 (转载)

    在安装过Office2003.2007 或者2010之后,如果没有选择全部的组件,或者是因为安装到非系统盘,有时候打开 Office 文档的时候就会出现正在配置Office,或者Office配置进度的 ...

  4. Django小项目简单BBS论坛

    开发一个简单的BBS论坛 项目需求: 1 整体参考"抽屉新热榜" + "虎嗅网" 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用 ...

  5. uva 10254

    如果我们设f[i]为4个柱子时把i个东东从一个柱子移到另一个柱子所用的最少步骤,设g[i]为3个柱子时对应的值,我们可以得到f[n]=min{2*f[k]+g[n-k]},其中g[i]是已知的为2^i ...

  6. 这才是官方的tapable中文文档

    起因 搜索引擎搜索tapable中文文档,你会看见各种翻译,点进去一看,确实是官方的文档翻译过来的,但是webpack的文档确实还有很多需要改进的地方,既然是开源的为什么不去github上的tapab ...

  7. Dekker算法在多核处理器下的失效

    Dekker algorithm是一种著名的并发编程的算法,Dekker算法的核心部分是一组对称的代码来访问一组共享变量,使得两个线程不可能同时进入临界区(只要cpu内存模型是遵循顺序一致性的),从而 ...

  8. LightOJ 1071 Baker Vai(拆点+最大费用流)题解

    题意:给一个n*m的方格,每个格子上都有一个数字表示价值,小A在左上角,他从左上角走到右下角只能向右或向下走,然后再从右下角走上左上角,这次只能向上或向左走,这两条路绝对没有重复,问你怎样走有最大价值 ...

  9. nginx限制蜘蛛的频繁抓取

    蜘蛛抓取量骤增,导致服务器负载很高.最终用nginx的ngx_http_limit_req_module模块限制了百度蜘蛛的抓取频率.每分钟允许百度蜘蛛抓取200次,多余的抓取请求返回503. ngi ...

  10. (转载)YOLO配置文件理解

    YOLO配置文件理解 转载自 [net] batch=64 每batch个样本更新一次参数. subdivisions=8 如果内存不够大,将batch分割为subdivisions个子batch,每 ...