0. 提升树
首先要明确一点,xgboost 是基于提升树的。
什么是提升树,简单说,就是一个模型表现不好,我继续按照原来模型表现不好的那部分训练第二个模型,依次类推。
来几个形象的比喻就是:
做题的时候,第一个人做一遍得到一个分数,第二个人去做第一个人做错的题目,第三个人去做第二个人做错的题目,以此类推,不停的去拟合从而可以使整张试卷分数可以得到100分(极端情况)。
把这个比喻替换到模型来说,就是真实值为100,第一个模型预测为90,差10分,第二个模型以10为目标值去训练并预测,预测值为7,差三分,第三个模型以3为目标值去训练并预测,以此类推。
1. xgboost原理解读
1.0 学习路径
我们xgboost的学习路径可以按照下面四个步骤来:
(1)构造原始目标函数问题:
xgboost目标函数包含损失函数和基于树的复杂度的正则项;
(2)泰勒展开问题:
原始目标函数直接优化比较难,如何使用泰勒二阶展开进行近似;
(3)树参数化问题:
假设弱学习器为树模型,如何将树参数化,并入到目标函数中;这一步的核心就是要明白我们模型优化的核心就是优化参数,没有参数怎么训练样本,怎么对新样本进行预测呢?
(4)如何优化化简之后的目标函数问题:
优化泰勒展开并模型参数化之后的的目标函数,主要包含两个部分:
- 如何求得叶子节点权重
- 如何进行树模型特征分割
1.1 目标函数
1.1.0 原始目标函数
目标函数,可以分为两个部分,一部分是损失函数,一部分是正则(用于控制模型的复杂度)。
xgboost属于一种前向迭代的模型,会训练多棵树。
对于第t颗树,第i个样本的,模型的预测值是这样的:
网友评论