XGBoost

1.1 xgboost库

    使用import xgboost as xgb导入XGB相关的类,并使用xgboost库建立自己的建模流程。

    最核心的是DMatrix和train,DMatrix是读取数据的类,train是用于训练的类。与sklearn把所有的参数都写在类中的方式不同,xgboost库中必须先使用字典设定参数集param,再使用train来将参数导入,然后在进行训练。会这样设计是因为xgb涉及到的参数太多,全部写在xgb.train()中太长容易出错。下面是params可能的取值以及xgboost.train的列表

params {eta, gamma, max_depth, min_child_weight, max_delta_step, subsample, colsample_bytree,colsample_bylevel, colsample_bynode, lambda, alpha, tree_method string, sketch_eps, scale_pos_weight, updater,refresh_leaf, process_type, grow_policy, max_leaves, max_bin, predictor, num_parallel_tree}

xgboost.train (params, dtrain, num_boost_round=10, evals=(), obj=None, feval=None, maximize=False, early_stopping_rounds= None, evals_result=None, verbose_eval=True, xgb_model=None, callbacks=None,learning_rates=None)

1.2 XGB的sklearn API

    我们可以调用如下的类,并用我们sklearn当中惯例的实例化,fit和predict的流程来运行XGB,并且也可以调用属性比如coef_等等。当然,这是我们回归的类,我们也有用于分类,用于排序的类。他们与回归的类非常相似,因此了解一个类即可。

class xgboost.XGBRegressor (max_depth=3, learning_rate=0.1, n_estimators=100,silent= True,objective='reg:linear', booster='gbtree', n_jobs=1, nthread=None, gamma=0, min_child_weight=1, max_delta_step=0,subsample=1, colsample_bytree=1,colsample_bylevel =1, reg_alpha=0, reg_lambda=1, scale_pos_weight=1,base_score=0.5, random_state=0, seed=None, missing=None, importance_type='gain', **kwargs)

    xgboost.train和sklearnAPI中的XGBRegressor需要输入的参数名是不同的,但是功能是相同的,比如说,我们的params字典中的第一个参数eta,其实就是我们XGBRegressor里面的参数learning_rate,他们的含义和实现的功能是一模一样的。

    使用xgboost中设定建模流程来建模,和使用sklearnAPI的类来建模,模型效果是比较相似的,但是xgboost库本身的运算速度(尤其是交叉验证)以及调参手段比sklearn要简单。

1.3 XGBoost的三大板块

    XGBoost本身的核心是基于梯度提升数实现的集成算法,整体来说可以有三个核心的部分:集成算法本身,用于集成的弱评估器,以及应用中的其他过程。

    1.4 梯度提升树

        XGBoost的基础是梯度提升算法,梯度提升(Gradient boosting)是构建预测模型的最强大技术之一,它是集成算法boosting的代表算法,提升法是逐一构建弱评估器,经过多次迭代积累多个弱评估器,然后汇总所有弱评估器的建模结果,以获取比单个模型更好的回归或分类表现。弱评估器被定义为表现至少比随机猜测更好的模型,即预测的准确率不低于50%的任意模型。梯度提升树中可以有回归树也可以有分类树,两者都以CART树算法作为主流,XGBoost背后也是CART树,这意味着XGBoost中所有的树都是二叉的。接下来,我们就以梯度提升回归树为例子,来了解一下Boosting算法是怎样工作的。

        梯度提升回归树是专注于回归的树模型的提升集成模型,其建模过程大致如下:最开始先建立一棵树,然后逐渐迭代,每次迭代过程中都增加一棵树,逐渐形成众多树模型集成的评估器。

        对于决策树而言,每个被放到模型的任意样本i最终都会落到一个叶子节点上,而对于回归树,每个叶子节点上的值是这个叶子节点上所有样本的均值。

      对于梯度提升回归树来说,每个样本的预测结果表示为所有树上的结果的加权求和:

K是树的总数量, k代表第k棵树,r_{k} 是这棵树的权重,h_{k} 表示这棵树上的预测结果

        值得注意的是,XGB作为GBDT的改进,在\hat{y} 上却是不同,对XGB来说,每个叶子节点上会有一个预测分数,也成为叶子权重,这个叶子权重就是所有在这个叶子节点上的样本在这个一棵树上的回归取值,用f_{k} (x_{i} )或是w来表示,其中f_{k} 表示第k棵决策树,x_{i} 表示样本 i 对应的特征向量。当只有一棵树的时候,f_{1} (x_{i} )就是提示集成算法返回的结果,但是这个结果往往很差。当有多棵树的时候,集成模型的回归结果就是对所有的树的预测分数之和,假设这个集成模型有K棵决策树,则整个模型再这个样本 i 上给出的预测结果为

            XGB vs GBDT 核心区别1:求解预测值\hat{y} 的方式不同: GBDT中预测值是所有弱分类器上的预测结果的加权求和,其中每个样本上预测结果就是样本所在的椰子节点上的均值。而XGB中的预测值是所有弱分类器上的叶子节点权重直接求和得到,计算叶子权重是一个复杂的过程。

        从上面的式子看,超参数K,究竟要建多少棵树?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 在了解xgboost之前我们先了解一下梯度提升树(gbt) 梯度提升树 梯度提升是构建预测模型的最强大技术之一,它...
    echolvan阅读 2,550评论 0 0
  • 一、前言:kaggle神器XGBoost 相信入了机器学习这扇门的小伙伴们一定听过XGBoost这个名字,这个看起...
    猴小白阅读 2,168评论 0 5
  • xgboost: 速度快效果好的boosting模型 Python R 本文作者:何通,SupStat Inc(总...
    hzyido阅读 2,242评论 0 14
  • 1.引子 XGBoost在机器学习领域可谓风光无限,作为从学术界来的模范生,帮助工业界解决了许多实际问题,真可...
    散落一地的蓝阅读 3,510评论 1 28
  • hello,2026年的潇儿,三十岁的潇儿! 还记得2016年写下这篇文章,刚刚二十岁的你吗?二十岁的第一天,心中...
    MagicBeauty阅读 267评论 0 0