*本文旨在普及机器学习的使用,对于文章涉及到的模型策略不具有实盘参考意义,感兴趣朋友可以前往BigQuant人工智能量化投资平台进一步学习。
Boosted Trees 介绍
XGBoost 是 “Extreme Gradient Boosting”的简称,其中“Gradient Boosting”来源于附录1.Friedman的这篇论文。本文基于 gradient boosted tree ,中文可以叫梯度提升决策树,下面简称GBDT,同时也有简称GBRT,GBM。针对gradient boosted tree的细节也可以参考附录2.这篇网页。
监督学习
XGBoost 主要是用来解决有监督学习问题,此类问题利用包含多个特征的训练数据 x i x_i xi,来预测目标变量 y i y_i yi。在我们深入探讨GBDT前,我们先来简单回顾一下监督学习的一些基本概念。
模型与参数
在监督学习中模型(model)表示一种数学函数,通过给定 x i x_i xi 来对 y i y_i yi 进行预测。以最常见的线性模型(linear model)举例来说,模型可以表述为 y i ^ = ∑ j θ j x i j \hat{y_i}=\sum_j\theta_j x_{ij} yi^=∑jθjxij,这是一个输入特性进行线性加权的函数。那么针对预测值的不同,可以分为回归或者分类两种。
在监督学习中参数(parameters)是待定的部分,我们需要从数据中进行学习得到。在线性回归问题中,参数用 θ \theta θ来表示。
目标函数:训练误差 + 正则化
根据对 y i y_i yi的不同理解,我们可以把问题分为,回归、分类、排序等。我们需要针对训练数据,尝试找到最好的参数。为此,我们需要定义所谓的目标函数,此函数用来度量参数的效果。
这里需要强调的是,目标函数必须包含两个部分:训练误差和正则化。
O b j ( Θ ) = L ( θ ) + Ω ( Θ ) Obj(\Theta)=L(\theta)+\Omega(\Theta) Obj(Θ)=L(θ)+Ω(Θ)
其中, L L L表示训练误差函数, Ω \Omega Ω表示正则项。训练误差用来衡量模型在训练数据上的预测能力。比较典型的有用均方差来衡量。
L ( θ ) = ∑ i ( y i − y i ^ ) 2 L(\theta)=\sum_i(y_i-\hat{y_i})^2 L(θ)=i∑(yi−yi^)2
另外针对逻辑回归,比较常见的损失函数为Logistic函数:
L ( θ ) = ∑ i [ y i ln ( 1 + e − y i ^ ) + ( 1 − y i ) ln ( 1 + e y i ^ ) ] L(\theta)=\sum_i[y_i \ln(1+e^{-\hat{y_i}}) + (1-y_i) \ln(1+e^{\hat{y_i}})] L(θ)=i∑[yiln(1+e−yi^)+(1−yi)ln(1+eyi^)]
另外一个比较重要的部分就是正则项,这也是很多人容易忘记的部分。正则项是用来控制模型的复杂度,以防止过拟合(overfitting)。这听起来有点抽象,那么我们用下面的例子来说明。针对下面左上角的这幅图,我们需要找到一个阶梯函数来拟合图中的数据点集合。那么问题来了,下面剩下的三幅图中,哪一个你认为是最好的呢?
答案是用红色标注出来的这幅图。为什么呢?因为我们对于好的模型的判断依据是 简单(simple)并且 准确(predictive)。但这两者又是相互矛盾的,在机器学习中我们也把这两者也用 bias-variance 来表述。
复合树模型(Tree Ensemble)
在前面我们已经介绍了监督学习,现在让我们开始了解树模型。首先先来了解一下xgboost所对应的模型:复合树模型。复合树模型是一组分类和回归树(classification and regression trees - CART)。这里我们举CART中的一个例子,一类分类器用来辨别某人是否喜欢计算机游戏。
我们把家庭中的成员分到了不同的叶子节点,同时每个叶子节点上都有一个分数。CART与决策树相比,细微差别在于CART的叶子节点仅包含判断分数。在CART中,相比较于分类结果,每个叶子节点的分数给我们以更多的解释。这让CART统一优化节点更为容易,这在后面会有具体介绍。
通常情况下,在实践中往往一棵树是不够用的。这个时候往往需要把多棵树的预测结果综合起来,这就是所谓的复合树模型。
上面就是由两棵树组成的复合树的例子。每棵树上的分数简单相加就得到了最终的分数。用数学式子可以表达如下:
y i ^ = ∑ k = 1 K f k ( x i ) , f k ∈ F \hat{y_i}=\sum_{k=1}^{K}f_k(x_i),f_k \in \mathcal{F} yi