首页 > 编程语言 >常用的boosting算法

常用的boosting算法

时间:2023-06-01 16:13:05浏览次数:34  
标签:Boosting 常用 clf Xgboost boosting 算法 ada 模型

boosting算法有许多种具体算法,包括但不限于ada boosting \ GBDT \ XGBoost 。

ada boosting

原始数据集 》 某种算法拟合,会 产生错误 》 根据上个模型预测结果,更新样本点权重(预测错误的结果权重增大) 》 再次使用模型进行预测 》重复上述过程,继续重点训练错误的预测样本点。

ada boosting需指定Base Estimator

from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
​
ada_clf = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2), n_estimators=500)
ada_clf.fit(X_train, y_train)
​
ada_clf.score(X_test, y_test)

 

Gradient Boosting

Gradient Boosting 又称为 GBDT (gradient boosting decision tree )

Gradient Boosting是基于决策树的,不用指定Base Estimator

from sklearn.ensemble import GradientBoostingClassifier
​
gb_clf = GradientBoostingClassifier(max_depth=2, n_estimators=30)
gb_clf.fit(X_train, y_train)
gb_clf.score(X_test, y_test)

 

Xgboost

Xgboost是在GBDT的基础上进行改进,使之更强大,适用于更大范围。用来确定特征的重要程度。

Xgboost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。

 

Xgboost一般和sklearn一起使用,但是由于sklearn中没有集成Xgboost,所以才需要单独下载安装。

Xgboost是以“正则化提升(regularized boosting)” 技术而闻名。Xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数,每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是Xgboost优于传统GBDT的一个特征。

 

Xgboost工具支持并行。众所周知,Boosting算法是顺序处理的,也是说Boosting不是一种串行的结构吗?怎么并行的?注意Xgboost的并行不是tree粒度的并行。Xgboost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含)。Xgboost的并行式在特征粒度上的,也就是说每一颗树的构造都依赖于前一颗树。

决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),Xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分类时,需要计算每个特征的增益,大大减少计算量。这个block结构也使得并行成为了可能,在进行节点的分裂的时候,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。

Gradient Boosting是基于决策树的,不用指定Base Estimator

标签:Boosting,常用,clf,Xgboost,boosting,算法,ada,模型
From: https://www.cnblogs.com/pass-ion/p/17449326.html

相关文章

  • 常用的表格检测识别方法——表格结构识别方法 (下)
    常用的表格检测识别方法——表格结构识别方法(下)3.2表格结构识别方法 表格结构识别是表格区域检测之后的任务,其目标是识别出表格的布局结构、层次结构等,将表格视觉信息转换成可重建表格的结构描述信息。这些表格结构描述信息包括:单元格的具体位置、单元格之间的关系、单元格的行......
  • 常用的js判断简写技巧
    空值合并运算符(??)是一个逻辑运算符,当左侧的操作数为null或者undefined时,返回其右侧操作数,否则返回左侧操作数。function(obj){varb=obj??{}}//等价于=>>function(obj){varb;if(obj===null||obj===undefined){b={}}else......
  • spark Bisecting k-means(二分K均值算法)
    Bisectingk-means(二分K均值算法)    二分k均值(bisectingk-means)是一种层次聚类方法,算法的主要思想是:首先将所有点作为一个簇,然后将该簇一分为二。之后选择能最大程度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇。以此进行下去,直到簇的数目等于用户给定的数目K为止。......
  • 搜索算法
    搜索算法搜索寻路可视化传送门1传送门2网页嵌入如下(拖动星星以改变起点)##DijkstraBFS启发式搜索A*......
  • spark 常用参数和默认配置
    常用的Spark任务参数及其作用:spark.driver.memory:设置driver进程使用的内存大小,默认为1g。spark.executor.memory:设置每个executor进程使用的内存大小,默认为1g。spark.executor.cores:设置每个executor进程使用的CPU核数,默认为1。spark.default.parallelism:设置RDD的默......
  • 堆栈算法模板
     动态维护中位数一般都是用双堆解决–同理:动态维护第K大数295.数据流的中位数难度困难800收藏分享切换为英文接收动态反馈中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如 arr=[2,3,4] 的中位数是 3 。例如 arr=......
  • 双指针算法模板和一些题目
    什么是同向双指针?什么是相向双指针?双指针的鼻祖题——两数之和TwoSum链表上的快慢指针算法快速排序&归并排序 同向双指针•相向双指针•几乎所有TwoSum变种•Partition•QuickSelect•分成两个部分•分成三个部分•一些你没听过的(但是面试会考的)......
  • JVM-常用工具(jps、jstat、jinfo、jmap、jhat、jstack、jconsole、jvisualvm)使用
    场景记录JVM中常用工具。jps:虚拟机进程状态工具jps(JVMProcessStatusTool):虚拟机进程状态工具,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(MainClass,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID。命令格式:jps[options][hostid]示例:jps-l ......
  • jQuery 是javascript的一个库(常用插件、处理器)
    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validationjQuery就是javascript的一个库,把我们常用的一些功能进行了封装,方便我们来调用,提高我们的开发效率。极大地简化了JavaScript编程。Javascipt跟jQuery的区别:Javascript是一门编程语言,我们用......
  • Go排序算法小总结
    Go-排序算法参考整理:1.0十大经典排序算法|菜鸟教程(runoob.com)shell排序-Mohuishou(lailin.xyz)排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部......