入门XGBoost

欢迎访问我的技术博客:SnailDove ,本文内容有大量公式,csdn对数学公式支持不好,请访问本文原链接:一起入门xgboost

前言

在深度学习火起来之前,集成学习 (ensemble learning 包括 boosting: GBDT, XGBoost)是 kaggle 等比赛中的利器,所以集成学习是机器学习必备的知识点,如果提升树或者GBDT不熟悉,最好先看一下我的另一文: 《统计学习方法》第8章 提升方法之AdaBoost\BoostingTree\GBDT陈天奇XGBoost (eXtreme Gradient Boosting) 和 微软的 lightGBM 是 GBDT 算法模型的实现,非常巧妙,是比赛的屠龙之器,算法不仅仅是数学,还涉及系统设计和工程优化。以下引用陈天奇 XGBoost论文 的一段话:

Among the 29 challenge winning solutions 3 published at Kaggle’s blog during 2015, 17 solutions used XGBoost. Among these solutions, eight solely used XGBoost to train the model, while most others combined XGBoost with neural nets in ensembles. For comparison, the second most popular method, deep neural nets, was used in 11 solutions. The success of the system was also witnessed in KDDCup 2015, where XGBoost was used by every winning team in the top-10. Moreover, the winning teams reported that ensemble methods outperform a well-configured XGBoost by only a small amount [1].

文章目录

正文

XGBoost

快速了解

这部分内容基本上是对陈天奇幻灯片:官网幻灯片

1541689140248

outlook 幻灯片大纲

• 监督学习的主要概念的回顾
• 回归树和集成模型 (What are we Learning)
• 梯度提升 (How do we Learn)
• 总结

Review of key concepts of supervised learning 监督学习的关键概念的回顾

概念

符号 含义
R d R^d Rd 特征维度为d的数据集
x i ∈ R d x_i∈R^d xiRd 第i个样本
w j w_j wj 第j个特征的权重
y ^ i \hat{y}_i y^i x i x_i xi 的预测值
y i y_i yi 第i个训练集的对应的标签
Θ \Theta Θ 特征权重的集合,$\Theta={w_j

模型

基本上相关的所有模型都是在下面这个线性式子上发展起来的
y ^ i = ∑ j = 0 d w j x i j \hat y_i = \sum_{j = 0}^{d} w_j x_{ij} y^i=j=0dwjxij
上式中 x 0 = 1 x_0=1 x0=1,就是引入了一个偏差量,或者说加入了一个常数项。由该式子可以得到一些模型:

  • 线性模型,最后的得分就是 y ^ i \hat{y}_i y^i

  • logistic模型,最后的得分是sigmoid函数 1 1 + e − y ^ i \frac{1}{1+e^{−\hat{y}_i}} 1+ey^i1 。然后设置阀值,转为正负实例。

  • 其余的大部分也是基于 y ^ i \hat{y}_i y^i 做了一些运算得到最后的分数

参数

参数就是 Θ \Theta Θ ,这也正是我们所需要通过训练得出的。

训练时的目标函数

训练时通用的目标函数如下:
O b j ( Θ ) = L ( Θ ) + Ω ( Θ ) Obj(\Theta)=L(\Theta)+Ω(\Theta) Obj(Θ)=L(Θ)+Ω(Θ)
在上式中 L ( Θ ) L(\Theta) L(Θ) 代表的是训练误差,表示该模型对于训练集的匹配程度。 Ω ( Θ ) Ω(\Theta) Ω(Θ) 代表的是正则项,表明的是模型的复杂度。

训练误差可以用 L = ∑ i = 1 n l ( y i , y ^ i ) L = \sum_{i = 1}^n l(y_i, \hat y_i) L=i=1nl(yi,y^i) 来表示,一般有方差和logistic误差。

  • 方差: l ( y i , y ^ i ) = ( y i − y ^ i ) 2 l(y_i,\hat y_i) = (y_i - \hat y_i)^2 l(yi,y^i)=(yiy^i)2
  • logstic误差: l ( y i , y ^ i ) = y i l n ( 1 + e − y ^ i ) + ( 1 − y i ) l n ( 1 + e y ^ i ) l(y_i, \hat y_i) = y_i ln(1 + e^{- \hat y_i}) + (1 - y_i)ln(1 + e^{\hat y_i}) l(yi,y^i)=yiln(1+ey^i)+(1yi)ln(1+ey^i)

正则项按照Andrew NG的话来说,就是避免过拟合的。为什么能起到这个作用呢?正是因为它反应的是模型复杂度。模型复杂度,也就是我们的假设的复杂度,按照奥卡姆剃刀的原则,假设越简单越好。所以我们需要这一项来控制。

  • L2 范数: Ω ( w ) = λ ∣ ∣ w ∣ ∣ 2 Ω(w)=λ||w||_2 Ω(w)=λw2
  • L1 范数(lasso): Ω ( w ) = λ ∣ ∣ w ∣ ∣ 1 Ω(w)=λ||w||_1 Ω(w)=λw1

常见的优化函数有有岭回归,logstic回归和Lasso,具体的式子如下​

  • 岭回归,这是最常见的一种,由线性模型,方差和L2范数构成。具体式子为 ∑ i = 1 n ( y i − w T x i ) 2 + λ ∣ ∣ w ∣ ∣ 2 \sum\limits^n_{i=1}(y_i−w^Tx_i)2+λ||w||_2 i=1n(yiwTxi)2+λw2

  • logstic回归,这也是常见的一种,主要是用于二分类问题,比如爱还是不爱之类的。由线性模型,logistic 误差和L2范数构成。具体式子为 ∑ i = 1 n [ y i l n ( 1 + e − w T x i ) + ( 1 − y i ) l n ( 1 + e w T x i ) ] + λ ∣ ∣ w ∣ ∣ 2 \sum\limits^n_{i=1} [y_iln(1+e^{−w^Tx_i})+(1−y_i)ln(1+e^{w^Tx_i})]+λ||w||_2 i=1n[yiln(1+ewTxi)+(1yi)ln(1+ewTxi)]+λw2

  • lasso比较少见,它是由线性模型,方差和L1范数构成的。具体式子为 ∑ i = 1 n ( y i − w T x i ) 2 + λ ∣ ∣ w ∣ ∣ 1 \sum\limits_{i = 1}^n (y_i - w^T x_i)^2 + \lambda \vert \vert w \vert \vert _1 i=1n(yiwTxi)2+λw1

我们的目标的就是让 O b j ( Θ ) Obj(\Theta) Obj(Θ) 最小。那么由上述分析可见,这时必须让 L ( Θ L(\Theta L(Θ ) 和 Ω ( Θ ) Ω(\Theta) Ω(Θ) 都比较小。而我们训练模型的时候,要在 bias 和 variance 中间找平衡点。bias 由 L ( Θ ) L(\Theta) L(Θ) 控制,variance 由 Ω ( Θ ) Ω(\Theta) Ω(Θ) 控制。欠拟合,那么 L ( Θ ) L(\Theta) L(Θ) Ω ( Θ ) Ω(\Theta) Ω(Θ) 都会比较大,过拟合的话 Ω ( Θ ) Ω(\Theta) Ω(Θ) 会比较大,因为模型的扩展性不强,或者说稳定性不好。

回归树和集成模型 (What are we Learning)

Regression Tree (CART)

回归树,也叫做分类与回归树,我认为就是一个叶子节点具有权重的二叉决策树。它具有以下两点特征

  • 决策规则与决策树的一样。

  • 每个叶子节点上都包含了一个权重,也有人叫做分数。

    下图就是一个回归树的示例:

1541668145422

回归树的集成模型

1541668716212回归

小男孩落在第一棵树的最左叶子和第二棵树的最左叶子,所以它的得分就是这两片叶子的权重之和,其余也同理。

树有以下四个优点:

  1. 使用范围广,像GBM,随机森林等。(PS:据陈天奇大神的统计,至少有超过半数的竞赛优胜者的解决方案都是用回归树的变种)
  2. 对于输入范围不敏感。所以并不需要对输入归一化
  3. 能学习特征之间更高级别的相互关系
  4. 很容易对其扩展
模型和参数

假设我们有 K K K 棵树,那么
KaTeX parse error: Expected 'EOF', got '\cal' at position 49: …i),\ \ f_k \in \̲c̲a̲l̲ ̲F
上式中 KaTeX parse error: Expected 'EOF', got '\cal' at position 1: \̲c̲a̲l̲ ̲F 表示的是回归森林中的所有函数空间。 f k ( x i ) f_k(x_i) fk(xi) 表示的就是第 i i i 个样本在第 k k k 棵树中落在的叶子的权重。那么现在我们需要求的参数就是每棵树的结构和每片叶子的权重&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值