1、算法简介
Xgboost 的全称是eXtreme Gradient Boosting,它是Gradient Boosting Machine的一个c++实现,作者为正在华盛顿大学研究机器学习的大牛陈天奇 。xgboost最大的特点在于,它能够自动利用CPU的多线程进行并行,同时在算法上加以改进提高了精度。首先回顾一下上一篇中的提升树模型目标函数:
Obj(Θ)=∑i=1nL(yi,y^i)+∑k=1KΩ(fk)
其中 n 为样本个数,
(1)第一部分是训练误差,也就是大家相对比较熟悉的如平方误差,而第二部分是每棵树的复杂度的和。因为现在我们的参数可以认为是在一个函数空间里面,我们不能采用传统的如SGD之类的算法来学习我们的模型,因此我们会采用一种叫做Boosting的 方式,每一次保留原来的模型不变,加入一个新的函数
y^(0)i=0y^(1)i=f1(xi)=y^(0)i+f1(xi)y^(2)i=f1(xi)+f2(xi)=y^(1)i+f2(xi)......y^(t)i=∑k=1tfk(xi)=y^(t−1)i+ft(xi)
其中 xi 表示第 i 个样本点,
Obj(t)=∑i=1nL(