XGboost学习总结
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学习总结的更多相关文章
- 【新人赛】阿里云恶意程序检测 -- 实践记录11.10 - XGBoost学习 / 代码阅读、调参经验总结
XGBoost学习: 集成学习将多个弱学习器结合起来,优势互补,可以达到强学习器的效果.要想得到最好的集成效果,这些弱学习器应当"好而不同". 根据个体学习器的生成方法,集成学习方 ...
- xgboost学习与总结
最近在研究xgboost,把一些xgboost的知识总结一下.这里只是把相关资源作总结,原创的东西不多. 原理 xgboost的原理首先看xgboost的作者陈天奇的ppt 英文不太好的同学可以看看这 ...
- xgboost学习
1.原理 https://www.cnblogs.com/zhouxiaohui888/p/6008368.html 2.实战 xgboost中比较重要的参数介绍: (1)学习率:learning r ...
- 数据竞赛利器 —— xgboost 学习清单
1. 入门大全 xgboost 作者给出的一份完备的使用 xgboost 进行数据分析的完整示例代码:A walk through python example for UCI Mushroom da ...
- XGBoost学习笔记2
XGBoost API 参数 分类问题 使用逻辑回归 # Import xgboost import xgboost as xgb # Create arrays for the features a ...
- XGBoost学习笔记1
XGBoost XGBoost这个网红大杀器,似乎很好用,完事儿还是自己推导一遍吧,datacamp上面有辅助的课程,但是不太涉及原理 它究竟有多好用呢?我还没用过,先搞清楚原理,hahaha~ 参考 ...
- 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参
上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...
- xgboost原理及应用
1.背景 关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT 地址和xgboost导读和实战 地址,希望对xgboost原理进行深入理解. 2.xgboo ...
- xgboost原理及应用--转
1.背景 关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT地址和xgboost导读和实战 地址,希望对xgboost原理进行深入理解. 2.xgboos ...
随机推荐
- 160. Intersection of Two Linked Lists(剑指Offer-两个链表的第一个公共结点)
题目: Write a program to find the node at which the intersection of two singly linked lists begins. Fo ...
- shiro身份验证
身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...
- python-django缓存
三 Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的 ...
- Java虚拟机JVM简单理解
Java虚拟机JVM的作用: Java源文件(.java)通过编译器编译成.class文件,.class文件通过JVM中的解释器解释成特定机器上的机器代码,从而实现Java语言的跨平台. JVM的体系 ...
- oracle数据库中字符乱码
1.1 88.152 os已安装中文包,以下确认os层面中文是否可以显示 1.2 88.153 os没有安装中文包,以下确认os层面中文无法显示 1.3 ...
- centos命令行系列之centos6防火墙的关闭以及开启
输入:cat /etc/issue 查看版本 (一)通过service命令 注:service命令开启以及关闭防火墙为即时生效,下次重启机器的时候会自动复原 查看防火墙状态:service ipt ...
- [codechef July Challenge 2017] Calculator
CALC: 计算器题目描述大厨有一个计算器,计算器上有两个屏幕和两个按钮.初始时每个屏幕上显示的都是 0.每按一次第一个按钮,就会让第一个屏幕上显示的数字加 1,同时消耗 1 单位的能量.每按一次第二 ...
- web服务器-----Tomcat 7.0安装
下载地址:http://tomcat.apache.org/ 1.下载 2.解压缩---c盘 3.运行bin\startup.bat 启动Tomcat服务器 运行bin\shutdown.bat关闭T ...
- iOS性能优化总结
iOS性能优化总结.关于 iOS 性能优化梳理: 基本工具.业务优化.内存优化.卡顿优化.布局优化.电量优化. 安装包瘦身.启动优化.网络优化等. 关于iOS 性能优化梳理: 基本工具.业务优化.内存 ...
- Oracle X$Tables
前言 最早从Yong Huang那里看到关于比较详细的X$表的介绍,后来陆续从其他Oracle专家那里得到了不少信息.在Steve Adams 的书中对X$表多有提及,而且他的站点也是个资源比较丰富的 ...