6. 集成学习(Ensemble Learning)算法比较
1. 集成学习(Ensemble Learning)原理
2. 集成学习(Ensemble Learning)Bagging
3. 集成学习(Ensemble Learning)随机森林(Random Forest)
4. 集成学习(Ensemble Learning)Adaboost
5. 集成学习(Ensemble Learning)GBDT
6. 集成学习(Ensemble Learning)算法比较
7. 集成学习(Ensemble Learning)Stacking
1. AdaBoost Vs GBDT
- 相同
- AdaBoost和GBDT都是重复选择一个表现一般的模型并且每次基于先前模型的表现进行调整。
- 不同
- AdaBoost是通过提升错分数据点的权重来定位模型的不足。
- BDT是通过拟合梯度的残差来迭代的。
- GBDT是一个通用算法,可以使用更多种类的目标函数。
- Adaboost一般用于分类,GBDT一般用于回归
2. GBDT Vs XGBOOST
- 基分类器的选择:传统GBDT以CART作为基分类器,XGBoost还支持线性分类器,这个时候XGBoost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。
- 二阶泰勒展开:传统GBDT在优化时只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下,XGBoost工具支持自定义损失函数,只要函数可一阶和二阶求导。
- XGBoost在目标函数里加入了正则项,用于控制模型的复杂度。
- 列抽样(column subsampling):XGBoost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是XGBoost异于传统GBDT的一个特性。
- 缺失值处理:XGBoost考虑了训练数据为稀疏值的情况,可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率,paper提到50倍。即对于特征的值有缺失的样本,XGBoost可以自动学习出它的分裂方向。
- XGBoost工具支持并行:Boosting不是一种串行的结构吗?怎么并行的?注意XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能进行下一次迭代的(第次迭代的损失函数里包含了前面次迭代的预测值)。XGBoost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进行了排序,然后保存为block(块)结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
3. GBDT和lightGBM
- xgboost采用的是level-wise的分裂策略,而lightGBM采用了leaf-wise的策略,区别是xgboost对每一层所有节点做无差别分裂,可能有些节点的增益非常小,对结果影响不大,但是xgboost也进行了分裂,带来了务必要的开销。 leaf-wise的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,很明显leaf-wise这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合。
- lightgbm使用了基于histogram的决策树算法,这一点不同与xgboost中的 exact 算法,histogram算法在内存和计算代价上都有不小优势。直方图算法介绍https://blog.csdn.net/jasonwang_/article/details/80833001
- 直方图做差加速:一个子节点的直方图可以通过父节点的直方图减去兄弟节点的直方图得到,从而加速计算。
转载于:https://www.cnblogs.com/huangyc/p/9973253.html
6. 集成学习(Ensemble Learning)算法比较相关推荐
- EL:集成学习(Ensemble Learning)的概念讲解、问题应用、算法分类、关键步骤、代码实现等相关配图详细攻略
EL:集成学习(Ensemble Learning)的概念讲解.算法分类.问题应用.关键步骤.代码实现等相关配图详细攻略 目录 集成学习Ensemble Learning 1.集成学习中弱分类器选择 ...
- 集成学习(Ensemble Learning)
在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好).集成学习就是组 ...
- RDKit |基于集成学习(Ensemble learning)预测溶解度
Ensemble learning 集成学习 集成学习(Ensemble learning)是这样一个过程,按照某种算法生成多个模型,如分类器或者称为专家,再将这些模型按照某种方法组合在一起来解决某个 ...
- 集成学习(ensemble learning)(四)
文章目录 一.GBDT概述 二.GDBT原理 1.负梯度拟合 2.GBDT回归算法 3.GBDT分类算法 (1)二元GBDT分类算法 (2)多元GBDT分类算法 4.GBDT常用损失函数 (1)分类任 ...
- 集成学习(ensemble learning)(三)
集成学习系列第三篇(Boosting相关方法),传送前两篇: 集成学习(ensemble learning)(一) 集成学习(ensemble learning)(二) 文章目录 一.Boosting ...
- 集成学习(ensemble learning)(二)
文章目录 一.Bagging原理 1.随机采样(BootStrap) 2.弱分类器和结合决策 二.Bagging算法流程 三.随机森林(Random Forest,RF) 1.特点 2.两个" ...
- 集成学习(ensemble learning)(一)
文章目录 一.集成学习概述 二.个体学习器 三.Boosting 四.Bagging 五.结合策略 1.平均法 2.投票法 3.学习法 (1)核心图解 a.构建新的训练集 b.构建新的测试集 c.最终 ...
- 机器学习-集成学习(ensemble learning)
集成学习ensemble learning:本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务. 可以用两句话形容: 1."三个臭皮匠顶个诸葛亮":一堆 ...
- 集成学习+ensemble learning
集成学习+ensemble learning Blending is a word introduced by the Netflix winners. It is very close to sta ...
- 集成学习(ensemble learning)干货系列(3)——Boosting方法详解
集成学习(ensemble learning)干货系列(1)--集成学习概述 集成学习(ensemble learning)干货系列(2)--随机森林(Bagging) Boosting基本原理 提升 ...
最新文章
- Nature:AI 引导人类直觉,帮助发现数学定理
- 理解 Linux 的硬链接与软链接
- hadoop api 复制文件_Hadoop发布新组件:分布式对象存储系统Ozone
- scipy模块计算导数方法(central_diff_weights)
- BUUCTF(PWN)suctf_2018_stack
- IOS给任意UIView截屏
- java反射使用及性能比较
- codevs 2185 最长公共上升子序列--nm的一维求法
- MySQL关键字EXPLAIN的用法及其案例
- 关于Objective-C 对象release操作的一个小问题探讨
- Qt的QDataStream
- 打印机更换感光鼓单元k_打印机换硒鼓步骤:老司机手把手教你
- 1985-2020年全国各省一二三产业就业人数/各省分产业就业人数数据(无缺失)
- SAEJ1757-1-2015(一)
- LINUX udhcpc命令
- java中player类用法_[Java教程]同步辅助类CountDownLatch用法
- 【FTP】apache FTP Server使用过程中遇到的问题
- 计算机基础及ms office应用,计算机基础及MS Office应用知识
- 如何将AVIF格式转换为PNG格式
- BLAM源码解析(一)—— 模块初始化
热门文章
- java解压zip文件程序_java 解压zip文件
- pku 1459 最大流 SAP
- springboot事务管理
- SecureCRT 64位 破解版v8.1.4
- Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件:
- [bzoj1969] [Ahoi2005]LANE 航线规划
- 移动开发不能不知道的事-meta
- Microsoft.AlphaImageLoader滤镜解说
- Hibernate【2】——封装工具、HibernateUtil类以及DAO层的BaseDAO类
- ylbtech-Unitity-CS:AnonymousDelegates