xgboost原理

这篇文章主要参考了陈天奇的14年的slice[1],算是一个中文翻译+自我理解的笔记吧。

1.第一部分:

有监督学习包括三部分:模型、参数和优化目标。此部分略过不提。

2.第二部分:boosted tree

1. 回归树(base learner)

base learner是回归树,其决策规则与决策树(decision tree)类似,但是用来预测实数值,即每一个叶结点是一个实数,而不是如决策树那样的类标签。即使xgboost用于分类问题,其base learner依然是回归树,因为核心是树的结果的累加,分类标签显然是不可能累加的。(分到同一个叶子结点的训练样本的预测值不唯一的时候,以所有样本预测值的均值作为叶子结点输出的最终预测值)

rt.png

2. Tree Ensemble

base learner往往比较简单,预测能力有限,要用更强的模型-Tree Ensemble Method.通过base learner的共同决策来学习。这种思想应用广泛,gbrt,rf啊都用到了tree ensemble的方法。这种方法使得对特征不敏感,无需对特征进行归一化。
比如上边的例子,我们用两棵树来学习。

tree_ensemble.png
那么Tree Ensemble 严格的
[模型]:

tree ensemble model.png
可以把每一个回归树当成一个从特征空间到预测值的映射函数
[参数]:每个回归树的结构,以及叶结点上的值。此时,一般的参数是在实数,现在是functions(trees)

tree_ensemble_para.png
[优化目标]:如何学习参数,通过设计优化目标,并且去优化它而得到。

tree_ensemble_obj.png
不同的优化目标对应着不同的模型。
如果是平方损失,那就是普通的梯度渐进回归模型
square_loss.png

如果是Logistic损失,就是LogitBoost

logistic loss.png

3. Gradient Boosting(模型学习)

1.优化目标

我们不能采用如SGD这样的方式学习参数,因为参数不是数值型的向量,而是trees。我们采用additive training(boosting)的方式进行学习。每一次学习的时候保持原有模型不变,加入新的这一轮的 f(t)

boosting_1.png
如何得到每一轮加入的 f(t) ,方法是:选取一个 f(t) 来使得我们的目标函数尽量最大程度地降低

boosting_2.png
以平方损失为例,(第一步是讲抽象的损失函数替换成平方损失函数,
第二步,将 f(t) 当成变量, yi

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值