XGBoost
XGBoost,eXtreme Gradient Boosting,全名叫极端梯度提升,应用机器学习领域一个强有力的工具,其基本思想为:一棵树一棵树逐渐地往模型里面加,每加一棵CRAT决策树时,要使得整体的效果(目标函数有所下降)有所提升。使用多棵决策树(多个单一的弱分类器)构成组合分类器,并且给每个叶子节点赋与一定的权值。
CART 回归树
CART算法是由Breiman等人首先提出,它包括分类树和回归树两种;两者的不同之处是,分类树的样本输出(即响应值)是类的形式;而回归树的样本输出是数值的形式,这时没法用信息增益、信息增益率、基尼系数来判定树的节点分裂了,我们会采用新的方式:预测误差,常用的有均方误差、对数误差等。节点的确定有时用节点内样本均值,有时是最优化算出来的,比如Xgboost。
Boosting 集成学习
目前集成学习方法大致可分为两大类:
- 个体学习器之间存在强依赖关系、必须串行生成的序列化方法,这种方法的代表是Boosting,由多个相关联的树联合决策;(相关联的意思是:下一棵决策树输入样本会与前面决策树的训练和预测相关)
- 个体学习器间不存在强依赖关系、可同时生成的并行化方法,它的代表是Bagging和RandomForest
简单原理介绍
模型
模型由k棵CART树组成,表示为
这里的K就是树的棵数,F表示所有可能的CART树,f表示一棵具体的CART树
目标函数
等式右边第一部分是损失函数,第二部分是正则项,这里的正则化项由K棵树的正则化项相加而来
训练xgboost
训练目的:最小化目标函数
如果K棵树的结构都已经确定,那么整个模型剩下的就是所有K棵树的叶子节点的值,模型的正则化项也可以设为各个叶子节点的值的平方和。此时,整个目标函数其实就是一个K棵树的所有叶子节点的值的函数,我们就可以使用梯度下降或者随机梯度下降来优化目标函数。
加法训练
分步骤优化目标函数,首先优化第一棵树,完了之后再优化第二棵树,直至优化完K棵树。
假设在第t步时,我们添加了一棵最优的CART树f_t
此时目标函数表示为
其中constant为前t-1棵树的复杂度。
如果我们选择的损失函数为MSE,则
这个式子含有 f t ( x i ) f_t(x_i) ft(xi)的一次和二次项,对最优结果的求解很方便,对一般的损失函数,我们只需将其作泰勒二阶展开
其中
g i g_i gi和 h i h_i hi可分别理解为前t-1棵树组成的模型对第i个训练样本预测的损失函数的一阶导和二阶导。
同时, g i g_i