Gradient Descent or Newton-method
[0]. https://blog.csdn.net/On_theway10/article/details/103003077
[1]. https://zhuanlan.zhihu.com/p/37524275
[2]. https://www.zhihu.com/question/19723347
Gradient Boosting
XGboost
xgboost的全称是eXtreme Gradient Boosting,它是一种基于Tree Boosting方法的可扩展系统。与GBDT相仿,xgboost的基决策器(CART)也是串行的;不同的是,前者只是对损失函数Taylor展开到1阶,后者则Taylor展开到2阶。第t步需要优化的目标函数如下:
, (1)
其中,表示损失函数的形式,表示表示前t-1棵树对样本的预测结果,表示第t棵树(注意,这里只CART),表示对第t棵树所采用的正则项。将(1)Taylor展开到二阶后形式如下:
(2)
其中,,。整理得:
(3)
(3)是关于叶子节点预测值的二次函数,因此(3)的最小值将在对称轴处取得,即:
(4)
此时,第t棵树的预测损失为:
(5)
对于第t棵树的某个节点,它分裂后损失函数的减小量为:
(6)
一般而言,当且仅当分裂后的损失函数的减小量小于某个阈值时才对该节点进行分裂。
Split Finding
论文给出了两个版本的算法框架来回答上述子标题中的问题,一个是Exact Greedy Algorithm,另一个是Approximate Algorithm。
Exact版本的分裂算法A1属于暴力搜索版本,可以得到相对比较精确的结果,但是往往也需要耗费大量的计算量,因此它一般应用于样本量小的场景;Approximate版本的分裂算法A2属于简化搜索版本,它事先根据排序后的样本所占总样本数的百分比来产生分裂的备选分裂点,然后通过遍历所有特征的备选分裂点来选择最优的分裂特征和对应的最优分裂点。
Left or Right, it's a question
为了回答这一问,论文提出了一种所谓的Sparsity-aware split finding算法,算法流程如下:
insight:遍历所有特征,将当前节点中的所有样本按照遍历到的某个特征划分为两个部分和(其中表示在上不存在缺失的中的样本的集合),然后将分别划分到左子节点和右子节点,分别计算对应的损失函数的减小值,选择全局最大的score,这样我们即可得到最佳的划分特征、划分点以及在划分特征上存在缺失的样本默认划分节点。
Overfitting
- column-sampling(借鉴RF)
- loss-function中加入正则项 :
, 其中,
- 设定Tree的maxdepth
Faster
未完待续……
Reference
[1]. https://blog.csdn.net/yinyu19950811/article/details/81079192