Driven to discover
  • 目录
  • 简介
  • 数学基础
    • 数学基础
      • 线性代数
      • 概率统计
        • 概率基础
        • 连续概率
        • 概率分布
        • 大数与中心极限
      • 时间序列
      • 信息理论
      • 参数估计
      • 优化降梯
        • 极大、极小和鞍点
        • 泰勒及Jacobian、Hessian
        • 连续可微
          • 无约束优化
          • 有约束优化
        • 非连续可微
      • 备查附录
  • 数据挖掘
    • 数据挖掘
      • 数据预分析
      • 数据预处理
        • 数据采样
        • 数据降维
        • 特征选择
      • 模式挖掘
        • 频繁项集
        • 多样项集
        • 基于约束的频繁项集
        • 高维及庞大项集
        • 序列模式
        • 图模式
      • 聚类分析
        • 划分聚类
        • 层次聚类
        • 密度/网格聚类
      • 文本挖掘
        • 短语挖掘与主题模型
        • 实体识别与类型标记
  • 机器学习
    • 机器学习
      • 模型评估与选择
      • 线性模型
      • 决策树模型
      • 支持向量机
      • 贝叶斯分类器
      • 集成学习
        • Bagging
        • Boosting
          • AdaBoost
          • GBDT
          • XGBoost
          • LightGBM
        • 结合策略
      • 概率图模型
        • 贝叶斯网络
        • 隐马尔可夫
        • 条件随机场
  • 网络图模型
    • 网络图模型
      • 大规模图处理
        • 社区检测与搜索
        • 中心度分析
        • 网络形成模型
        • 异构信息网络
      • 网络映射
        • 结构维持的网络映射
        • 性质维持的网络映射
        • 动态网络映射
      • Graph Neural Network
  • 深度学习
    • 深度学习
      • 深度前馈网络
        • 非线性的学习
        • 基于梯度的学习
        • 激活函数
        • 架构设计
        • 前向传播
        • 反向传播
      • 深度学习正则化
        • 参数范数惩罚
        • 作为约束的范数惩罚
        • 正则化和欠约束问题
        • 数据集增强
        • 噪声鲁棒性
        • 半监督学习
        • 多任务学习
        • 提前终止
        • 参数绑定和共享
        • 稀疏表示
        • Bagging和其他集成方法
        • Dropout
        • 对抗训练
        • 切面距离、正切传播和流形正切分类器
      • 深度学习优化
        • 学习和纯优化异同
        • 神经网络优化中的挑战
        • 优化算法
        • 参数初始化策略
        • 优化策略和元算法
      • 卷积网络
        • 卷积运算
        • 卷积动机
        • 池化
      • 循环和递归网络
        • 展开计算图
        • 循环神经网络
        • 长短期记忆
        • 注意力机制
      • 生成对抗网络
      • 多任务学习
      • 技术分析
        • Attention
        • Normalization
  • 增强学习
    • 增强学习
      • 增强学习的数学表达形式
      • 求解增强学习问题
        • 已知环境模型的问题
        • 未知环境模型的问题
  • 计算机视觉
    • 计算机视觉
      • 图像分类
        • LeNet-5
        • AlexNet
        • VGGNet
        • GoogLeNet
        • ResNet
        • DenseNet
      • 目标检测
        • 相关研究
          • 选择性搜索
          • OverFeat
        • 基于区域提名的方法
          • R-CNN
          • SPP-net
          • Fast R-CNN
          • Faster R-CNN
          • R-FCN
        • 端到端的方法
          • YOLO
          • SSD
      • 语义分割
        • 全卷积网络
          • FCN
          • DeconvNet
          • SegNet
          • DilatedConvNet
        • CRF/MRF的使用
          • DeepLab
          • CRFasRNN
          • DPN
        • 实例分割
          • Mask R-CNN
      • 图像检索的深度哈希编码
        • 传统哈希编码方法
        • CNNH
        • DSH
      • 光学字符识别
        • CTC解码
          • 前向后向
          • 目标函数
          • 基本原理
      • 人脸识别
      • 三维重建
  • 自然语言处理
    • 自然语言处理
      • 中文分词技术
      • 词性标注
        • 传统词性标注模型
        • 基于神经网络的词性标注模型
        • 基于Bi-LSTM的词性标注模型
      • 命名实体识别
      • 关键词提取
        • 词频与排序
        • 主题模型
      • 句法分析
        • 基于PCFG的句法分析
        • 基于最大间隔马尔可夫网络的句法分析
        • 基于条件随机场的句法分析
        • 基于移进-归约的句法分析
      • 文本向量化
        • Continuous Bag-of-Word
        • Skip-Gram
        • word2vec(Hierarchical Softmax与Negative Sampling)
        • GloVe
        • fastText
        • Bert
      • 情感分析
        • 文档维度情感分析
        • 句子维度情感分析
        • 方面维度情感分析
        • 其他情感分析任务
      • 机器翻译
        • 神经网络机器翻译基本模型
        • 基于Attention的神经网络机器翻译
        • 基于卷积的机器翻译
  • 搜索推荐广告
    • 搜索推荐广告
      • 搜索
        • 召回
        • 排序
          • 传统匹配模型
          • 深度学习匹配模型
            • Representation Learning
              • DNN-based
              • CNN-based
              • RNN-based
            • Matching Function Learning
              • Matching with word-level learning methods
              • Matching with attention model
            • Matching function learning&Representation learning
            • Query-Doc Relevance matching
              • Based on global distribution of matching strengths
              • Based on local context of matched terms
        • 重排
      • 推荐
        • 召回
        • 排序
          • 传统匹配模型
            • 协同过滤
            • 基于特征
          • 深度学习匹配模型
            • Representation learning
              • 协同过滤
              • 基于特征
            • Matching function learning
              • 协同过滤
              • 基于特征
        • 重排
      • 广告
        • 行业知识
        • 核心技术
          • 发展趋势
          • CTR/CVR
            • 浅层模型
            • 深度模型
          • 智能定向
          • 技术难点
        • 相关技术
  • 计算机基础
    • 计算机基础
      • 数据结构
        • 排序算法
      • 操作系统
      • 计算机网络
      • 计算机组成原理
      • python
        • pandas
      • Bash
      • Spark
      • SQL
      • Excel
  • 经验总结
    • 经验总结
      • 广告应用
        • 人群定向
        • 召回通路
      • 时序预测
        • 统计时序
        • 机器学习
        • 深度学习
      • 图谱探索
        • 标签传播
        • 图谱&网络
      • 策略评估
        • 激励策略
        • 均衡策略
Powered by GitBook
On this page
  • 分类问题
  • 二分类
  • 多分类
  • 回归问题
  • 梯度提升
  • Source
  1. 机器学习
  2. 机器学习
  3. 集成学习
  4. Boosting

GBDT

提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法。以决策树为基函数的提升方法称为提升树。提升树模型可以表示为决策树的加法模型:

fm(x)=∑m=1MT(x;Θm)f_m(x)=\sum\limits_{m=1}^MT(x;\Theta_m)fm​(x)=m=1∑M​T(x;Θm​)

其中, T(x;Θm)T(x;\Theta_m)T(x;Θm​) 表示决策树; Θm\Theta_mΘm​ 为决策树的参数; MMM 为树的个数。

提升树算法采用前向分步算法。首先确定初始提升树 f0(x)=0f_0(x)=0f0​(x)=0 ,第 mmm 步的模型是

fm(x)=fm−1(x)+T(x;Θm)f_m(x)=f_{m-1}(x)+T(x;\Theta_m)fm​(x)=fm−1​(x)+T(x;Θm​)

其中, fm−1(x)f_{m-1}(x)fm−1​(x) 为当前模型,通过经验风险极小化确定下一棵决策树的参数 Θm\Theta_mΘm​ ,

Θ^m=arg⁡min⁡Θm∑i=1NL(yi,fm−1(xi)+T(xi;Θm))\hat{\Theta}_m=\arg\min\limits_{\Theta_m}\sum\limits_{i=1}^NL(y_i,f_{m-1}(x_i)+T(x_i;\Theta_m))Θ^m​=argΘm​min​i=1∑N​L(yi​,fm−1​(xi​)+T(xi​;Θm​))

下面讨论针对不同问题的提升树学习算法,其主要区别在于使用的损失函数不同。包括平方误差损失函数的回归问题,用指数函数的分类问题,以及用一般损失函数的一般决策问题。

分类问题

将GBDT应用于回归问题,相对来说比较容易理解。因为回归问题的损失函数一般为平方差损失函数,这时的残差,恰好等于预测值与实际值之间的差值。每次拿一棵决策树去拟合这个差值,使得残差越来越小,这个过程还是比较intuitive的。而将GBDT用于分类问题,则显得不那么显而易见。

在说明分类之前,我们先介绍一种损失函数。与常见的直接求预测与真实值的偏差不同,这种损失函数的目的是最大化预测值为真实值的概率。这种损失函数叫做对数损失函数(Log-Likehood Loss),定义如下

L(Y,P(Y∣X))=−log⁡P(Y∣X)L(Y,P(Y|X))=-\log P(Y|X)L(Y,P(Y∣X))=−logP(Y∣X)

对于二项分布, y∗∈{0,1}y^*\in\{0,1\}y∗∈{0,1} ,我们定义预测概率为 p(x)=P(y∗=1)p(x)=P(y^*=1)p(x)=P(y∗=1) ,即二项分布的概率,可得

L(y∗,p(x))={−log⁡(p(x)),  if y∗=1−log⁡(1−p(x)),  if y∗=0L(y^*,p(x))=\begin{cases} -\log(p(x)),\ \ \text{if}\ y^*=1\\ -\log(1-p(x)),\ \ \text{if}\ y^*=0 \end{cases}L(y∗,p(x))={−log(p(x)),  if y∗=1−log(1−p(x)),  if y∗=0​

即,可以合并写成

L(y∗,p(x))=−yilog⁡(p(x))−(1−yi)log⁡(1−p(x))L(y^*,p(x))=-y_i\log(p(x))-(1-y_i)\log(1-p(x))L(y∗,p(x))=−yi​log(p(x))−(1−yi​)log(1−p(x))

即

L(y∗,p(x))=−yilog⁡yi^−(1−yi)log⁡(1−yi^)L(y^*,p(x))=-y_i\log\hat{y_i}-(1-y_i)\log(1-\hat{y_i})L(y∗,p(x))=−yi​logyi​^​−(1−yi​)log(1−yi​^​)

对于 p(x)p(x)p(x) 与 F(x)F(x)F(x) 的关系,我们定义为

p(x)=eF(x)eF(x)+e−F(x)p(x)=\frac{e^{F(x)}}{e^{F(x)}+e^{-F(x)}}p(x)=eF(x)+e−F(x)eF(x)​

二分类

类似于逻辑回归、FM模型用于分类问题,其实是在用一个线性模型或者包含交叉项的非线性模型,去拟合所谓的对数几率 ln⁡p1−p\ln \frac{p}{1-p}ln1−pp​ 。而GBDT也是一样,只是用一系列的梯度提升树去拟合这个对数几率,实际上最终得到的是一系列CART回归树。其分类模型可以表达为:

P(y=1∣x)=11+e−∑m=0Mhm(x)P(y=1|x)=\frac{1}{1+e^{-\sum^M_{m=0}h_m(x)}}P(y=1∣x)=1+e−∑m=0M​hm​(x)1​

其中, hm(x)h_m(x)hm​(x) 就是学习到的决策树。

清楚了这一点之后,我们便可以参考逻辑回归,单样本 (xi,yi)(x_i,y_i)(xi​,yi​) 的损失函数可以表达为交叉熵:

loss(xi,yi)=−yilog⁡yi^−(1−yi)log⁡(1−yi^)loss(x_i,y_i)=-y_i\log\hat{y_i}-(1-y_i)\log(1-\hat{y_i})loss(xi​,yi​)=−yi​logyi​^​−(1−yi​)log(1−yi​^​)

假设第 kkk 步迭代之后当前学习器为 F(x)=∑m=0khm(x)F(x)=\sum\limits_{m=0}^kh_m(x)F(x)=m=0∑k​hm​(x) ,将 yi^\hat{y_i}yi​^​ 的表达式带入之后, 损失函数写为:

loss(xi,yi∣F(x))=yilog⁡(1+e−F(xi))+(1−yi)[F(xi)+log⁡(1+e−F(xi))]loss(x_i,y_i|F(x))=y_i\log(1+e^{-F(x_i)})+(1-y_i)[F(x_i)+\log(1+e^{-F(x_i)})]loss(xi​,yi​∣F(x))=yi​log(1+e−F(xi​))+(1−yi​)[F(xi​)+log(1+e−F(xi​))]

可以求得损失函数相对于当前学习器的负梯度为:

−∂loss∂F(x)∣xi,yi=yi−11+e−F(xi)=yi−yi^-\frac{\partial loss}{\partial F(x)}|_{x_i,y_i}=y_i-\frac{1}{1+e^{-F(x_i)}}=y_i-\hat{y_i}−∂F(x)∂loss​∣xi​,yi​​=yi​−1+e−F(xi​)1​=yi​−yi​^​

可以看到,同回归问题很类似,下一棵决策树的训练样本为: {xi,yi−yi^}i=1n\{x_i,y_i-\hat{y_i}\}_{i=1}^n{xi​,yi​−yi​^​}i=1n​ ,其所需要拟合的残差为真实标签与预测概率之差。于是便有下面GBDT应用于二分类的算法:

  • For m=1,2…,M\text{For}\ m=1,2\dots,MFor m=1,2…,M :

    • 计算 gi=yi^−yig_i=\hat{y_i}-y_igi​=yi​^​−yi​ ,并使用训练集 {(xi,−gi)}i=1n\{(x_i,-g_i)\}^n_{i=1}{(xi​,−gi​)}i=1n​ 训练一棵回归树 tm(x)t_m(x)tm​(x),其中 yi^=11+e−Fm−1(x)\hat{y_i}=\frac{1}{1+e^{-F_{m-1}(x)}}yi​^​=1+e−Fm−1​(x)1​

    • 通过最小化损失函数找树的最优权重: ρm=arg⁡min⁡p∑iloss(xi,yi∣Fm−1(x)+ρtm(x))\rho_m=\mathop{\arg\min}\limits_p\sum\limits_iloss(x_i,y_i|F_{m-1}(x)+\rho t_m(x))ρm​=pargmin​i∑​loss(xi​,yi​∣Fm−1​(x)+ρtm​(x))

    • 考虑shrinkage,可得这一轮迭代之后的学习器 Fm(x)=Fm−1(x)+αρmtm(x)F_m(x)=F_{m-1}(x)+\alpha\rho_m t_m(x)Fm​(x)=Fm−1​(x)+αρm​tm​(x) , α\alphaα 为学习率

  • 得到最终学习器: Fm(x)F_m(x)Fm​(x)

多分类

模仿上面两类分类的损失函数,我们能够将 KKK 类分类的损失函数定义为

−∑k=1Kyklog⁡pk(x)-\sum\limits_{k=1}^Ky_k\log p_k(x)−k=1∑K​yk​logpk​(x)

其中, pk(x)=P(yk=1∣xk)p_k(x)=P(y_k=1|x_k)pk​(x)=P(yk​=1∣xk​) ,且将 pk(x)p_k(x)pk​(x) 与 Fk(x)F_k(x)Fk​(x) 关系定义为

Fk(x)=log⁡pk(x)−1K∑l=1Klog⁡pl(x)F_k(x)=\log p_k(x)-\frac{1}{K}\sum\limits_{l=1}^K\log p_l(x)Fk​(x)=logpk​(x)−K1​l=1∑K​logpl​(x)

或者,换一种表达方式

pk(x)=eFk(x)∑i=1KeFi(x)p_k(x)=\frac{e^{F_k(x)}}{\sum_{i=1}^Ke^{F_i(x)}}pk​(x)=∑i=1K​eFi​(x)eFk​(x)​

即,对于多分类问题,则需要考虑以下softmax模型:

P(y=1∣x)=eF1(x)∑i=1keFi(x)P(y=1|x)=\frac{e^{F_1(x)}}{\sum_{i=1}^ke^{F_i(x)}}P(y=1∣x)=∑i=1k​eFi​(x)eF1​(x)​ P(y=2∣x)=eF1(x)∑i=2keFi(x)P(y=2|x)=\frac{e^{F_1(x)}}{\sum_{i=2}^ke^{F_i(x)}}P(y=2∣x)=∑i=2k​eFi​(x)eF1​(x)​ ... ...

其中 F1…FkF_1\dots F_kF1​…Fk​ 是 kkk 个不同的tree ensemble。每一轮的训练实际上是训练了 kkk 棵树去拟合softmax的每一个分支模型的负梯度。可见,这k棵树同样是拟合了样本的真实标签与预测概率之差,与二分类的过程非常类似。

回归问题

已知一个训练数据集 T={(x1,y1),(x2,y2),…,(xN,yN)}, xi∈X⊆RnT = \{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\},\ x_i\in \mathcal{X}\subseteq R^nT={(x1​,y1​),(x2​,y2​),…,(xN​,yN​)}, xi​∈X⊆Rn , X\mathcal{X}X 为输入空间, yi∈Y⊆Ry_i\in\mathcal{Y}\subseteq Ryi​∈Y⊆R , Y\mathcal{Y}Y 为输出空间。如果将输入空间 X\mathcal{X}X 划分为 JJJ 个互不相交的区域 R1,R2,…,RJR_1,R_2,\dots,R_JR1​,R2​,…,RJ​ ,并且在每个区域上确定输出的常量 cjc_jcj​ ,那么树可表示为

T(x;Θ)=∑j=1JcjI(x∈Rj)T(x;\Theta)=\sum\limits_{j=1}^Jc_jI(x\in R_j)T(x;Θ)=j=1∑J​cj​I(x∈Rj​)

其中,参数 Θ={(R1,c1),(R2,c2),…,(RJ,cJ)}\Theta=\{(R_1,c_1),(R_2,c_2),\dots,(R_J,c_J)\}Θ={(R1​,c1​),(R2​,c2​),…,(RJ​,cJ​)} 表示树的区域划分和各区域上的常数。 JJJ 是回归树的复杂度即叶结点个数。

回归问题提升树使用以下前向分布算法:

  • f0(x)=0f_0(x)=0f0​(x)=0

  • fm(x)=fm−1(x)+T(x;Θm),  m=1,2,…,Mf_m(x)=f_{m-1}(x)+T(x;\Theta_m),\ \ m=1,2,\dots,Mfm​(x)=fm−1​(x)+T(x;Θm​),  m=1,2,…,M

  • fM(x)=∑m=1MT(x;Θm)f_M(x)=\sum\limits_{m=1}^MT(x;\Theta_m)fM​(x)=m=1∑M​T(x;Θm​)

在前向分步算法的第 mmm 步,给定当前模型 fm−1(x)f_{m-1}(x)fm−1​(x) ,需求解

Θ^m=arg⁡min⁡Θm∑i=1NL(yi,fm−1(xi)+T(xi;Θm))\hat{\Theta}_m=\arg\min\limits_{\Theta_m}\sum\limits_{i=1}^NL(y_i,f_{m-1}(x_i)+T(x_i;\Theta_m))Θ^m​=argΘm​min​i=1∑N​L(yi​,fm−1​(xi​)+T(xi​;Θm​))

得到 Θ^m\hat{\Theta}_mΘ^m​ ,即第 mmm 颗树的参数。当采用平方误差损失函数时,

L(y,f(x))=(y−f(x))2L(y,f(x))=(y-f(x))^2L(y,f(x))=(y−f(x))2

其损失变为

L(y,fm−1(x)+T(x;Θm))=[y−fm−1(x)−T(x;Θm)]2=[r−T(x;Θm)]L(y,f_{m-1}(x)+T(x;\Theta_m))=[y-f_{m-1}(x)-T(x;\Theta_m)]^2=[r-T(x;\Theta_m)]L(y,fm−1​(x)+T(x;Θm​))=[y−fm−1​(x)−T(x;Θm​)]2=[r−T(x;Θm​)]

这里, r=y−fm−1(x) r=y-f_{m-1}(x)r=y−fm−1​(x) 即当前模型拟合数据的残差。所以,对回归问题的提升树算法来说,只需简单地拟合当前模型的残差。

回归问题的提升树算法

输入:训练数据集 T={(x1,y1),(x2,y2),…,(xN,yN)},xi∈X⊆Rn,yi∈Y⊆RT = \{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\},x_i\in\mathcal{X}\subseteq R^n,y_i\in\mathcal{Y}\subseteq RT={(x1​,y1​),(x2​,y2​),…,(xN​,yN​)},xi​∈X⊆Rn,yi​∈Y⊆R

输出:提升树 fM(x)f_M(x)fM​(x)

(1)初始化 f0(x)=0f_0(x)=0f0​(x)=0

(2)对 m=1,2,…,Mm = 1,2,\dots,Mm=1,2,…,M

  • (a)按 rmi=yi−fm−1(xi) r_{mi}=y_i-f_{m-1}(x_i)rmi​=yi​−fm−1​(xi​)计算残差

  • (b)拟合残差 rmir_{mi}rmi​ 学习一个回归树,得到 T(x;Θm)T(x;\Theta_m)T(x;Θm​)

  • (c)更新 fm(x)=fm−1(x)+T(x;Θm)f_m(x)=f_{m-1}(x)+T(x;\Theta_m)fm​(x)=fm−1​(x)+T(x;Θm​)

(3)得到回归提升树: fM(x)=∑m=1MT(x;Θm)f_M(x)=\sum\limits_{m=1}^MT(x;\Theta_m)fM​(x)=m=1∑M​T(x;Θm​)

举例如下

1

2

3

4

5

6

7

8

9

10

5.56

5.70

5.91

6.40

6.80

7.05

8.90

8.70

9.00

9.05

对于 m=1m = 1m=1 :

求 f1(x)f_1(x)f1​(x) 即回归树 T1(x)T_1(x)T1​(x) ,首先通过以下优化问题:

min⁡s[min⁡c1∑xi∈R1(yi−c1)2+min⁡c2∑xi∈R2(yi−c2)2]\min\limits_s[\min\limits_{c_1}\sum\limits_{x_i\in R_1}(y_i-c_1)^2+\min\limits_{c_2}\sum\limits_{x_i\in R_2}(y_i-c_2)^2]smin​[c1​min​xi​∈R1​∑​(yi​−c1​)2+c2​min​xi​∈R2​∑​(yi​−c2​)2]

求解训练数据的切分点 sss :

R1={x∣x≤s}R_1=\{x|x\leq s\}R1​={x∣x≤s} R2={x∣x>s}R_2=\{x|x> s\}R2​={x∣x>s}

容易求得在 R1,R2R_1,R_2R1​,R2​ 内部使平方损失误差达到最小值的 c1,c2c_1,c_2c1​,c2​ 为

c1=1N1∑xi∈R1yic_1=\frac{1}{N_1}\sum\limits_{x_i\in R_1}y_ic1​=N1​1​xi​∈R1​∑​yi​ c2=1N2∑xi∈R2yic_2 = \frac{1}{N_2}\sum\limits_{x_i\in R_2}y_ic2​=N2​1​xi​∈R2​∑​yi​

这里 N1,N2N_1,N_2N1​,N2​ 是 R1,R2R_1,R_2R1​,R2​ 的样本点数

求训练数据的切分点。根据所给数据,考虑如下切分点:1.5, 2.5, 3.5, 4.5, 6.5, 7.5, 8.5, 9.5

对各切分点,求出相应的 R1,R2,c1,c2R_1,R_2,c_1,c_2R1​,R2​,c1​,c2​ 及 m(s)=min⁡c1∑xi∈R1(yi−c1)2+min⁡c2∑xi∈R2(yi−c2)2m(s)=\min\limits_{c_1}\sum\limits_{x_i\in R_1}(y_i-c_1)^2+\min\limits_{c_2}\sum\limits_{x_i\in R_2}(y_i-c_2)^2m(s)=c1​min​xi​∈R1​∑​(yi​−c1​)2+c2​min​xi​∈R2​∑​(yi​−c2​)2

例如,当 s=1.5s= 1.5s=1.5 时, R1={1}R_1=\{1\}R1​={1} , R2={2,3,…,10}R_2=\{2,3,\dots,10\}R2​={2,3,…,10} , c1=5.56c_1=5.56c1​=5.56 , c2=7.50c_2=7.50c2​=7.50 ,

m(s)=min⁡c1∑xi∈R1(yi−c1)2+min⁡c2∑xi∈R2(yi−c2)2=0+15.72=15.72m(s)=\min\limits_{c_1}\sum\limits_{x_i\in R_1}(y_i-c_1)^2+\min\limits_{c_2}\sum\limits_{x_i\in R_2}(y_i-c_2)^2=0+15.72=15.72m(s)=c1​min​xi​∈R1​∑​(yi​−c1​)2+c2​min​xi​∈R2​∑​(yi​−c2​)2=0+15.72=15.72

现将 sss 及 m(s)m(s)m(s) 的计算结果列表如下

1.5

2.5

3.5

4.5

5.5

6.5

7.5

8.5

9.5

15.72

12.07

8.36

5.78

3.91

1.93

8.01

11.73

15.74

由上表可知,当 s=6.5s = 6.5s=6.5 时 m(s)m(s)m(s) 达到最小值,此时 R1={1,2,…,6}R_1=\{1,2,\dots,6\}R1​={1,2,…,6} , R2={7,8,9,10}R_2=\{7,8,9,10\}R2​={7,8,9,10} , c1=6.24c_1 = 6.24c1​=6.24 , c2=8.91c_2 = 8.91c2​=8.91 ,所以回归树 T1(x)T_1(x)T1​(x) 为

T1(x)={6.24,  x<6.58.91,  x≥6.5T_1(x)=\begin{cases}6.24,\ \ x<6.5\\ 8.91,\ \ x\geq6.5\end{cases}T1​(x)={6.24,  x<6.58.91,  x≥6.5​

f1(x)=T1(x)f_1(x) = T_1(x)f1​(x)=T1​(x)

用 f1(x)f_1(x)f1​(x) 拟合训练数据的残差 r2i=yi−f1(x),  i=1,2,…,10r_{2i}=y_i-f_1(x),\ \ i=1,2,\dots,10r2i​=yi​−f1​(x),  i=1,2,…,10

1

2

3

4

5

6

7

8

9

10

-0.68

-0.54

-0.33

0.16

0.56

0.81

-0.01

-0.21

0.09

0.14

用 f1(x)f_1(x)f1​(x) 拟合训练数据的平均损失误差: L(y,f1(x))=∑i=110(yi−f1(xi))2=1.93L(y,f_1(x))=\sum\limits_{i=1}^{10}(y_i-f_1(x_i))^2=1.93L(y,f1​(x))=i=1∑10​(yi​−f1​(xi​))2=1.93

对于 m=2m = 2m=2 :

求 T2(x)T_2(x)T2​(x) ,方法与求 T1(x)T_1(x)T1​(x) 一样,只是拟合的数据为上一步的残差。可以得到

T1(x)={−0.52,  x<3.50.22,     x≥3.5T_1(x)=\begin{cases}-0.52,\ \ x<3.5\\ 0.22,\ \ \ \ \ x\geq3.5\end{cases}T1​(x)={−0.52,  x<3.50.22,     x≥3.5​

f2(x)=f1(x)+T2(x)={−0.52+6.24=5.72,  x<3.56.24+0.22=6.46,     3.5≤x<6.58.91+0.22=9.13,      x≥6.5f_2(x) = f_1(x)+T_2(x)=\begin{cases}-0.52+6.24=5.72,\ \ x<3.5\\ 6.24+0.22=6.46,\ \ \ \ \ 3.5\leq x<6.5\\ 8.91+0.22=9.13,\ \ \ \ \ \ x\geq6.5\end{cases}f2​(x)=f1​(x)+T2​(x)=⎩⎨⎧​−0.52+6.24=5.72,  x<3.56.24+0.22=6.46,     3.5≤x<6.58.91+0.22=9.13,      x≥6.5​

用 f2(x)f_2(x)f2​(x) 拟合训练数据的平方损失误差是: L(y,f2(x))=∑i=110(yi−f2(xi))2=0.79L(y,f_2(x))=\sum\limits_{i=1}^{10}(y_i-f_2(x_i))^2=0.79L(y,f2​(x))=i=1∑10​(yi​−f2​(xi​))2=0.79

对于 m=3,4,…,Mm = 3,4,\dots,M m=3,4,…,M:

继续按上述方法计算,直至求得拟合训练数据的平方误差到可接受范围。

梯度提升

−[∂L(y,f(xi))∂f(xi)]f(x)=fm−1(x)-[\frac{\partial L(y,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}−[∂f(xi​)∂L(y,f(xi​))​]f(x)=fm−1​(x)​

作为回归问题提升树算法中的残差的近似值,拟合一个回归树。

梯度提升算法

输入:训练数据集 T={(x1,y1),(x2,y2),…,(xN,yN)},xi∈X⊆Rn,yi∈Y⊆RT = \{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\},x_i\in \mathcal{X}\subseteq R^n,y_i\in \mathcal{Y}\subseteq RT={(x1​,y1​),(x2​,y2​),…,(xN​,yN​)},xi​∈X⊆Rn,yi​∈Y⊆R

损失函数 L(y,f(x))L(y,f(x))L(y,f(x))

输出:回归树 f^(x)\hat{f}(x)f^​(x)

(1)初始化: f0(x)=arg⁡min⁡c∑i=1NL(yi,c)f_0(x)=\arg\min\limits_c\sum\limits_{i=1}^NL(y_i,c)f0​(x)=argcmin​i=1∑N​L(yi​,c)

(2)对 m=1,2,…,Mm = 1,2,\dots,Mm=1,2,…,M

  • (a)对 i=1,2,…,Ni=1,2,\dots,Ni=1,2,…,N ,计算

  • rmi=−[∂L(yi,f(xi))∂f(xi)]f(x)=fm−1(x)r_{mi} = -[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1(x)}}rmi​=−[∂f(xi​)∂L(yi​,f(xi​))​]f(x)=fm−1(x)​​

  • (b)对 rmir_{mi}rmi​ 拟合一个回归树,得到第 mmm 棵树的叶结点区域 Rmj,j=1,2,…,JR_{mj},j=1,2,\dots,JRmj​,j=1,2,…,J

  • (c)对 j=1,2,…,Jj = 1,2,\dots,Jj=1,2,…,J ,计算

  • cmj=arg⁡min⁡c∑xi∈RmiL(yi,fm−1(xi)+c)c_{mj}=\arg\min\limits_c\sum\limits_{x_i\in R_{mi}}L(y_i,f_{m-1}(x_i)+c)cmj​=argcmin​xi​∈Rmi​∑​L(yi​,fm−1​(xi​)+c)

  • (d)更新 fm(x)=fm−1(x)+∑j=1JcmiI(x∈Rmi)f_m(x)=f_{m-1}(x)+\sum\limits_{j=1}^Jc_{mi}I(x\in R_{mi})fm​(x)=fm−1​(x)+j=1∑J​cmi​I(x∈Rmi​)

(3)得到回归树: f^(x)=fM(x)=∑m=1M∑j=1JcmiI(x∈Rmi)\hat{f}(x)=f_M(x)=\sum\limits_{m=1}^M\sum\limits_{j=1}^Jc_{mi}I(x\in R_{mi})f^​(x)=fM​(x)=m=1∑M​j=1∑J​cmi​I(x∈Rmi​)

算法第(1)步初始化,估计使损失函数极小化的常数值,它是只有一个根节点的数。

第(2a)步计算损失函数的负梯度在当前模型的值,将它作为残差的估计。对于平方损失函数,它就是通常所说的残差;对于一般损失函数,它就是残差的近似值。

第(2b)步估计回归树叶结点区域,以拟合残差的近似值。

第(2c)步利用线性搜索估计叶结点区域的值,是损失函数极小化。

第(2d)步更新回归树

第(3)步得到输出的最终模型。

Source

PreviousAdaBoostNextXGBoost

Last updated 6 years ago

F0(x)=h0(x)=log⁡p11−p1F_0(x)=h_0(x)=\log\frac{p_1}{1-p_1}F0​(x)=h0​(x)=log1−p1​p1​​ ,其中 是训练样本中y=1的比例,利用先验信息来初始化学习器

提升树利用加法模型与前向分步算法实现学习的优化过程。当损失函数是平方损失和指数损失函数时,每一步优化是很简单的。但对一般损失函数而言,往往每一步优化并不那么容易。针对这一问题,梯度提升算法利用最速下降法的近似方法,其核心是利用损失函数的在当前模型的值

xix_ixi​
yiy_iyi​
sss
m(s)m(s)m(s)
xix_ixi​
r2ir_{2i}r2i​
负梯度
GBDT算法用于分类问题知乎专栏
当我们在谈论GBDT:Gradient Boosting 用于分类与回归知乎专栏
Logo
Logo
p_1