提升树,bagging与随机森林

提升树是一种以分类树或者回归树为基本分类器的提升方法。

对于分类树只需将adaboost算法中的基函数设置为二分类二叉树即可。

而回归树则是根据残差来训练下一个分类器的回归二叉树。下面主要介绍一下回归提升树的算法。

回归提升树

回忆一下,回归树就是将输入空间分割成个不相关的区域,即回归树为

下面我们用前向分步算法推导下回归提升树,有:

$ f(0) = 0 $

$ fm(x) = f{m-1}(x) + T(x,\theta_m) $

令损失函数为二次损失,则:

其中为残差,拟合当前模型的残差。

回归提升树即用残差来拟合后续的分类器。

输入

训练数据

过程

  • $ f(0) = 0 $
    • $ \gamma{mi} = y_i - f{m-1}(x_i) $
    • 利用残差拟合回归树
    • 更新
  • 得到提升树

输出

提升树

梯度提升算法

上面的平方损失函数,利用上面的残差公式$ \gamma{mi} = y_i - f{m-1}(xi) $可以很方便的进行优化,如果对于更一般的损失函数而言,上面的残差公式$ \gamma{mi} = yi - f{m-1}(x_i) $就不适合了,因此这里引入梯度提升来计算残差

针对梯度提升,上面的算法有两个地方需要修改

一个是初始化:

一个是残差的计算,利用梯度提升公式计算:

bagging算法

上面的提升树算法我们利用了所有的训练数据,串行的的得到分类器,这种方法效率比较低下,无法并行操作,因此发明了bagging算法,可以并行的进行集成学习。

所谓的bagging算法,就是在训练数据中采样出m个训练样本的采样集,针对每个采样集训练一个基学习器,然后将这些基学习器组合生成最终的学习器。

对于分类任务,可以用简单投票的方式确定结果,对于回归任务,可以用平均值的方式得到最终的结果。

同时每次未被采样的数据还可以作为cross-validation的验证集。

bagging算法简单,并且可以并行,速度很快。由于采样集的样本不一致,因此天然的能够抗过拟合。但是对样本的数目要求一般比较高。

随机森林

树多的地方就是森林,因此随机森林就是以决策树作为基学习器的学习算法。

RF(Random Forest)是在以决策树为基学习器构建bagging的基础上,在决策树的训练过程中引入了随机属性的选择。

RF算法对决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后在子集中选择一个最优属性用于划分输入空间(一般大家都选择)。

由于RF算法既随机选择了训练样本集,又随机选择了属性集,因此RF算法中的基学习器的多样性不仅来自于样本的扰动,还来自于属性的扰动,因此有很强的泛化能力。

显示 Gitment 评论