仔细把陈天奇大神的论文又读了一遍,对xgBoost的原理又有了一些深入的了解吧。
XGBoost模型本身是Boosting方法,所以它的整体过程和传统的Boosting还是比较接近的,即串行化的建树过程。个人认为,XGBoost比较新奇点在于,在建树的过程中,结点分裂的时候使用的标准并不是传统的基于信息增益啊、信息增益比这类东西,而是根据损失函数自己定义了一个指标,并且在损失函数中也加入了正则项,防止了过拟合。另外的贡献就是模型加速,并行化这一方面,提出了近似算法,可以大规模的进行并行计算,极大的提高了效率。当然还有一些其他细节,接下来一一说来
自带正则项的损失函数
我们知道Boosting模型可以看作是一个加性模型,给定一个实例 xi x i ,它的对应的输出 yi y i 就可以写作: y^i=∑Kk=1fk(xi) y ^ i = ∑ k = 1 K f k ( x i ) ,k代表第k个树, f(x)=ωq(x) f ( x ) = ω q ( x ) ,可以认为是给定一个实例,在当前的树模型下它被映射到 q(xi) q ( x i ) 这个结点(q可以认为是树结构),这个结点的权重作为返回值。最终我们优化的目标就是
L(ϕ)(t)