XGBoost: A Scalable Tree Boosting System

阿里云双11来了!从本博客参与阿里云,服务器最低只要86元/年!

1. XGBOOST 回顾

这是一篇2015年陈天奇发表的文章,主要是大名鼎鼎的XGBOOST算法的介绍。XGBOOST广泛用于各种比赛和实际应用中,是非常实用的算法。XGBOOST是ensemble decision tree算法系列中的一个改进算法,与常规决策树(复习一下:最大化信息增益(ID3),信息增益率(C4.5)或GINI值(CART))中损失函数为不同,XGBOOST的损失函数不是计算ensemble中的每棵树的真实值与预测值的残差之和,而是在一棵树的残差之下进行继续的decision tree的计算。
首先回顾一下tree ensemble 模型。
假设数据集包含n个样本,每个样本有m个特征。一个包含了K个树的tree ensemble模型可以表示为:

\hat{y}_{i}=\phi\left(\mathbf{x}_{i}\right)=\sum_{k=1}^{K} f_{k}\left(\mathbf{x}_{i}\right), \quad f_{k} \in \mathcal{F} \hspace{1in}(1)

其中\mathcal{F}=\left\{f(\mathrm{x})=w_{q(\mathrm{x})}\right\}\left(q: \mathbb{R}^{m} \rightarrow T, w \in \mathbb{R}^{T}\right)
是回归树(CART)。这里q表示每个树的对应的叶子index,T是每个树的叶子数量。每个f_{k}对应于一个独立的树结构q和叶子权重w。
Tree ensemble的损失函数为:

\begin{aligned} \mathcal{L}(\phi) &=\sum_{i} l\left(\hat{y}_{i}, y_{i}\right)+\sum_{k} \Omega\left(f_{k}\right) \\ \text { where } \Omega(f) &=\gamma T+\frac{1}{2} \lambda\|w\|^{2} \hspace{2in}(2)\end{aligned}

其中l是可微凸函数,测量的是每个树的预测值与真实值的差别。\gamma是正则项。

对于XGBOOST来说,损失函数为:
\mathcal{L}^{(t)}=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(t-1)}+f_{t}\left(\mathbf{x}_{i}\right)\right)+\Omega\left(f_{t}\right)
其中\hat{y}_{i}^{(t)}是第i个instance在第t次迭代的预测值,而xgboost会继续添加f_{t}函数来最小化loss function。从损失函数的角度来看,因为里面的参数包含函数,这不是一个传统方法可以优化的损失函数,因此Gradient Tree Boosting用的是一步步相加的办法。

https://www.jianshu.com/p/ad7a451913fb

Python量化投资网携手4326手游为资深游戏玩家推荐:《奥特曼传奇英雄下载

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论