xgboost初识

2017-11-27  本文已影响178人  听城

XGBoost使用

原始数据

数据介绍

鸢尾花数据集是由杰出的统计学家R.A.Fisher在20世纪30年代中期创建的,它被公认为用于数据挖掘的最著名的数据集。它包含3种植物种类(Iris setosa、Irisversicolor和Iris virginica),每种各有50个样本。

数据下载地址

链接:https://pan.baidu.com/s/1hrG8Yn6 密码:pzgn

XGBoost的特性及使用

XGBoost特性

  1. 正则化
    • 标准GBM的实现没有像XGBoost这样的正则化步骤。正则化对减少过拟合也是有帮助的。
    • 实际上,XGBoost以“正则化提升(regularized boosting)”技术而闻名。
  2. 并行处理
    • XGBoost可以实现并行处理,相比GBM有了速度的飞跃。
    • 不过,众所周知,Boosting算法是顺序处理的,它怎么可能并行呢?每一课树的构造都依赖于前一棵树,那具体是什么让我们能用多核处理器去构造一个树呢?我希望你理解了这句话的意思。如果你希望了解更多,点击这个链接。
    • XGBoost 也支持Hadoop实现。
  3. 高度的灵活性
    • XGBoost 允许用户定义自定义优化目标和评价标准
    • 它对模型增加了一个全新的维度,所以我们的处理不会受到任何限制。
  4. 缺失值处理
    • XGBoost内置处理缺失值的规则。
    • 用户需要提供一个和其它样本不同的值,然后把它作为一个参数传进去,以此来作为缺失值的取值。XGBoost在不同节点遇到缺失值时采用不同的处理方法,并且会学习未来遇到缺失值时的处理方法。
  5. 剪枝
    • 当分裂时遇到一个负损失时,GBM会停止分裂。因此GBM实际上是一个贪心算法
    • XGBoost会一直分裂到指定的最大深度(max_depth),然后回过头来剪枝。如果某个节点之后不再有正值,它会去除这个分裂。
    • 这种做法的优点,当一个负损失(如-2)后面有个正损失(如+10)的时候,就显现出来了。GBM会在-2处停下来,因为它遇到了一个负值。但是XGBoost会继续分裂,然后发现这两个分裂综合起来会得到+8,因此会保留这两个分裂。
  6. 内置交叉验证
    • XGBoost允许在每一轮boosting迭代中使用交叉验证。因此,可以方便地获得最优boosting迭代次数。
    • 而GBM使用网格搜索,只能检测有限个值。
  7. 在已有的模型基础上继续
    • XGBoost可以在上一轮的结果上继续训练。这个特性在某些特定的应用上是一个巨大的优势。
    • sklearn中的GBM的实现也有这个功能,两种算法在这一点上是一致的。

XGBoost参数

XGBoost的作者把所有的参数分成了三类:

通用参数
booster参数

尽管有两种booster可供选择,我这里只介绍tree booster,因为它的表现远远胜过linear booster,所以linear booster很少用到。

学习目标参数

这个参数用来控制理想的优化目标和每一步结果的度量方法。

如果你之前用的是Scikit-learn,你可能不太熟悉这些参数。但是有个好消息,python的XGBoost模块有一个sklearn包,XGBClassifier。这个包中的参数是按sklearn风格命名的。会改变的函数名是:

  1. eta ->learning_rate
  2. lambda->reg_lambda
  3. alpha->reg_alpha

实验过程

环境配置
  1. 前往https://www.lfd.uci.edu/~gohlke/pythonlibs/#pip,下载xgboost的whl文件。cp35代表适用与python3.5的环境。
  1. 将下载的whl文件通过pip命令安装
xg.png
实验过程
上一篇 下一篇

猜你喜欢

热点阅读