XGboost,全称Extrem Gradient boost,极度梯度提升,是陈天奇大牛在GBDT等传统Boosting算法的基础上重新优化形成的,是Kaggle竞赛的必杀神器。

XGboost属于集成学习的模型,在集成学习中主要有三个算法,Bagging,Boosting和Stacking,Bagging算法的优秀代表是RF(随机森林),Boosting算法的优秀代表有

Adaboosing,GBDT和XGboost,Stacking算法貌似没有什么优秀的代表,算是一种集成的思想,在Kaggle竞赛中用的比较多。

先来说一说XGboost的优点,用过的人就知道,它哪里都是优点。

1.损失函数

机器学习中常用的损失函数主要有:指数损失,合页损失,零一损失,交叉熵损失,平方损失等等,XGboost这方面有几个好处,首先XGboost可以自定义损失函数,你可以选择以上常用的损失函数,也可以根据实际问题的具体情况自定义损失函数,提供了极大的灵活性,对于解决实际问题非常有帮助;其次,在优化损失函数时,XGboost用泰勒公式对目标损失函数进行展开,二阶求导,一方面更加准确,另一方面将损失函数本身和优化方法分离开,可以在事先不指定具体的损失函数的情况下进行目标函数的优化,具有极大的灵活性。

2.正则化

XGboost在目标损失函数后面加了一个自定义的正则化项,这个正则化项是自定义的树的复杂度,正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和,这样做有效的控制了模型的复杂度。

3.Shrinkage(缩减)

Shrinkage(缩减)相当于学习速率(xgboost中的eta)。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。实际应用中,一般把eta设置得小一点,然后迭代次数设置得大一点。

4.列采样

xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性

5.支持并行计算

XGboost在训练每一棵树的时候,是迭代式训练,是线性的,这是无法做到并行计算的,但是训练一棵树最费时间的是进行节点分裂时计算每个属性的增益,以及每一个属性的最佳切割点,XGboost在计算最佳分裂属性和最佳切割点时可以调用CPU进行多线程的并行计算,极大的节约了时间,加速了训练过程。

6.支持确实值的处理

对缺失值的处理,对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向

7.非贪心算法

XGboost在确定最佳切割点时,并没有采用传统的贪心算法遍历每一个可能的分割点,而是先筛选出一个候选集和,然后在候选集合中确定最佳切割点。

。。。。。,当然还有别的,这里就不一一列举了。

在使用工具方面,XGboost可以和sklearn结合使用,xgboost可以接收普通的numpy数组形式的特征矩阵,也可以接收libsvm形式的稀疏距阵的压缩格式,当特征距阵比较稀疏时,后者更加节约内存空间。

对于libsvm格式的文件,sklearn工具调用如下:

from sklearn.datasets import load_svmlight_file

load_svmlight_file(my_workpath + 'agaricus.txt.train')

xgboost调用如下:xgb.Dmatrix(路劲)

模型可视化工具:xgb.to_graphviz(model,num_trees)(前提是系统安装了graphviz软件)

参数选择和调优:k折交叉验证和网格索搜:GridSearchCV

防止过拟合:earlystop,集成学习,正则化,交叉验证,增强数据

bst.fit(X_train_part, y_train_part, early_stopping_rounds=100, eval_metric="error",
eval_set=eval_set, verbose=True),可以看到,随着在训练集上迭代次数的增多,所得模型在测试集 上的性能的变化,是否发生过拟合的情况。

data.isnull().sum():统计所有特征关键字非空的的数目

data['class'].unique():某一列特征有多少种取值

以下:根据特征重要性画图

from xgboost import plot_importance
plot_importance(model_XGB)
pyplot.show()

XGboost学习总结的更多相关文章

  1. 【新人赛】阿里云恶意程序检测 -- 实践记录11.10 - XGBoost学习 / 代码阅读、调参经验总结

    XGBoost学习: 集成学习将多个弱学习器结合起来,优势互补,可以达到强学习器的效果.要想得到最好的集成效果,这些弱学习器应当"好而不同". 根据个体学习器的生成方法,集成学习方 ...

  2. xgboost学习与总结

    最近在研究xgboost,把一些xgboost的知识总结一下.这里只是把相关资源作总结,原创的东西不多. 原理 xgboost的原理首先看xgboost的作者陈天奇的ppt 英文不太好的同学可以看看这 ...

  3. xgboost学习

    1.原理 https://www.cnblogs.com/zhouxiaohui888/p/6008368.html 2.实战 xgboost中比较重要的参数介绍: (1)学习率:learning r ...

  4. 数据竞赛利器 —— xgboost 学习清单

    1. 入门大全 xgboost 作者给出的一份完备的使用 xgboost 进行数据分析的完整示例代码:A walk through python example for UCI Mushroom da ...

  5. XGBoost学习笔记2

    XGBoost API 参数 分类问题 使用逻辑回归 # Import xgboost import xgboost as xgb # Create arrays for the features a ...

  6. XGBoost学习笔记1

    XGBoost XGBoost这个网红大杀器,似乎很好用,完事儿还是自己推导一遍吧,datacamp上面有辅助的课程,但是不太涉及原理 它究竟有多好用呢?我还没用过,先搞清楚原理,hahaha~ 参考 ...

  7. 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参

    上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...

  8. xgboost原理及应用

    1.背景 关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT 地址和xgboost导读和实战 地址,希望对xgboost原理进行深入理解. 2.xgboo ...

  9. xgboost原理及应用--转

    1.背景 关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT地址和xgboost导读和实战 地址,希望对xgboost原理进行深入理解. 2.xgboos ...

随机推荐

  1. redis之数据类型以及使用

    1 redis数据类型 1. string类型: 字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,也就是byte类型 最大容量是512M.2. hash类型: ...

  2. DP 要求将承载量花光的01背包问题

    前言:很久没有发博客了,以后会捡起来,之后很长一段时间内我都会把精力放在攻克DP问题上,所以会经常上传一些DP学习笔记,把一些比较好的,没见过类型的DP问题都会传上来,希望能够变强吧. 因为今天很清醒 ...

  3. 『计算机视觉』Mask-RCNN_推断网络其一:总览

    在我们学习的这个项目中,模型主要分为两种状态,即进行推断用的inference模式和进行训练用的training模式.所谓推断模式就是已经训练好的的模型,我们传入一张图片,网络将其分析结果计算出来的模 ...

  4. 『TensorFlow』SSD源码学习_其四:数据介绍及TFR文件生成

    Fork版本项目地址:SSD 一.数据格式介绍 数据文件夹命名为VOC2012,内部有5个子文件夹,如下, 我们的检测任务中使用JPEGImages文件夹和Annotations文件夹. JPEGIm ...

  5. python 解析与生成xml

    xml.etree.ElementTree模块为xml文件的提取和建立提供了简单有效的API.下文中使用ET来代表xml.etree.ElementTree模块. XML是一种内在的分层的数据形式,展 ...

  6. MSSQL2012中SQL调优(SQL TUNING)时CBO支持和常用的hints

    虽然当前各关系库CBO都已经非常先进和智能,但因为关系库理论和实现上的限制,CBO在特殊场景下也会给出次优甚至存在严重性能问题的执行计划,而这些场景中,有一部分只能或适合通过关系库提供的hints来进 ...

  7. Python3+selenium+BaiduAI识别并下载花瓣网高颜值妹子图片

    一.说明 1.1 背景说明 上周在“Python3使用百度人脸识别接口识别高颜值妹子图片”中自己说到在成功判断颜值后,下截图片并不是什么难点. 直观感觉上确实如此,你判断的这个url适不适合下载,适合 ...

  8. burpsuite只拦截特定网站数据包教程

    一.背景说明 在配置burpsuite代理截包时经常会遇到这样的情况: 浏览器经常自己发一些包(收集用户信息),干挠渗透测试人员对目标网站的检测: 如果是代理手机,那就是很多APP都时不时发一些包,干 ...

  9. yii2入门安装 Windows7+wamp+yii2

    1.首先先具备环境,下载最新wamp(yii2需要php5.40以上版本的http://www.digpage.com/install.html) wamp下载http://pan.baidu.com ...

  10. nyoj 0325 zb的生日(dp)

    nyoj 0325 zb的生日 zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集 ...