知识复习:随机森林
随机森林是在决策树(回归树)的基础上放入许多棵树,并行的,独立的构造出每一棵树,构成一个森林,这些树之间本身没有关系,通过最后将森林中所有的结果选举出最佳的结果达到优化提升的目的。
定义:
XGBOOST算法也是有多颗树,只不过这里有一点区别,与随机森林中的对比起来说的化,可以把随机森立中的树理解成为并行的,但是XGBOOST中虽然有多棵树,但是它每一次放入第k棵树都是去判断第k-1颗树,并且放入树之后的效果要好才行,不让就不允许放入,,这就相当于串行的概念,XGBOOST算法的目标就是在每放入一棵树的时候如何去选择这颗树应不应该放入的过程,通俗的来说就是XGBOOST算法就是为了决策在放入树的时候该不该放入的问题。
XGBOOST模型构造
在处理有监督学习相关的问题的时候一般分为两步走,第一步构建模型(在线性回归中使用线性模型),根据目标函数求出参数(比如求出线性回归的参数),在XGBOOST中由于在放入第k颗树的时候都要考虑第k-1颗树,并且放入该树之后,想过还要有所提升才准许放入,这就相当于监督问题,这个时候就可以按照监督学习的步骤去处理,模型表示如下,k表示树的个数,f表示构建的每个树的结构,xi表示第i个样本,xi在每个树上的得分值的和就是xi的预测值。
求目标函数一般都是求出损失函数,在吴恩达机器学习中求回归的问题一般都转化为求损失函数来描述真个公式的好坏,损失函数就是真实值减去预测值再加上一个惩罚系数(惩罚系数一般都是为了解决模型泛化能力特别差的问题,加入惩罚系数就是为了提升模型的泛化能力,比如在L1和L2正则化中通过加入各个元素的绝对值之和||w||1或者绝对值的平方开根号得到||w||2)所得到的一个函数,这个函数就是我们的目标函数,所触及模型就转化为求目标函数的问题(损失函数),其中t表示第t轮集成。
为了让预测值接近于真是值并且要让模型相对于来说比较简单,这里使目标函数(损失函数)尽量小就保证越接近真是值了,因为损失函数描述的是真实值和预测值之间的误差,这个误差越小说明越接近真实值。
XGBOOST的集成过程
XGBOOST是串行集成的,这是与随机森林的不同之处,详细看下这个过程,期初只有一棵树,后来yi2时,加入进来f2,依次递推,第 t轮的预测模型,等于保留前面 t-1 轮的模型预测,和新来的 ft,前面说过f可以看做一颗树的构造。
将上面的公式带入目标函数中去:
目标函数中的第二项是惩罚函数,,它的存在是为了限制树的叶子节点的个数,为了防止树变得庞大导致模型过拟合。它等于:
上式怎么用呢?举个例子,如下图,一共3个叶子节点,则 T = 3,小男孩这个叶子节点的权重为 2,所以平方为4,因此惩罚项等于如下:
这个时候将等号右边的第一项误差函数项,通过采用平方误差项展开,也就是将上式中的损失loss函数l展开为平方误差的形式。这个时候目标函数就变成了如下了:
注意:先推倒到这里,后续再推倒