本文通过学习陈天奇博士的slides和一些官方文档梳理了xgboost原理和推导过程,仅仅是初步梳理,还有很多问题需要进一步研究,整体感觉Xgboost很强大,集合了CART、boosting、bagging的优点,包括树的剪枝、行采样、列采用、正则化项等
二.Xgboost基本原理
英文:http://xgboost.readthedocs.io/en/latest
中文:http://xgboost.apachecn.org/cn/latest
2.1目标函数构成
目标函数一般由两部分组成:训练损失和正则化项
1.training loss:度量模型对训练数据集的拟合程度,常见有平方误差和逻辑损失
2.正则化项:度量模型的复杂程度,常见有L2和L1范式,
2.2 常见算法结构
岭回归:线性回归、平方误差、L2范式
Lasso回归:线性回归、平方误差、L1范式
逻辑回归:线性模型、逻辑损失、L2范式
2.3 回归树
2.3.1 单棵回归树
结构如下,每个节点均有一个预测值
2.3.2 集成回归树
每个节点预测值是多棵树和,常见的有Adaboost、GBDT等
2.3.3 集成回归树模型
集成回归树是多棵树的线性加权和:模型的损失为所有节点的预测误差,模型的复杂度有树的个数决定
2.3.4 模型采用加法训练
通过上面的目标函数,模型从常数开始,每次添加一个函数
2.3.5 确认目标函数任务
在t时刻的预测=t-1时刻的预测+t时刻的函数,因此可以确定目标函数如下图,我们的任务是找到ft去最小化目标函数
2.4 利用泰勒定理求损失函数的近似值
通过泰勒定理求目标函数的近似值,如下图所示
新目标函数变成如下函数:参与计算的有一阶导数和二阶导数(GBDT仅用一阶导数)
2.5 重新定义树
用叶子得分定义树,每个样本都落在一个叶子节点上,q(x)表示样本x在某个叶子节点上,wq(x)是该节点的得分
2.6 定义树的复杂度
定义树的复杂度如下:T树的深度,wj2为叶子节点得分