本次介绍两篇文章,分别是:
Alternating Decision Forests by Samuel Schulter, Paul Wohlhart, Christian Leistner, Amir Saffari, Peter M.Roth, Horst Bischof,文章发表于CVPR2013,以及
ALternating Regression Forests for Object Detection and Pose Estimation by Samuel Schulter, Christian Leistner, Paul Wohlhart, Peter M. Roth, Horst Bischof,发表于ICCV2013.
两篇论文都是更改了随机森林的训练方法,从通常决策树或者随机森林的深度优先训练变为广度优先训练,每训练一层(树的深度),就根据类似于gradient boosting的方式按梯度的大小来更新样本的权重,然后送入下一层训练,从而做到用一个全局最优化的目标函数来进行训练。标题里的Alternating指的是交替更新(1)样本权重(2)更新的样本权重用于训练节点分裂函数。
随机森林是这样一种映射,对于样本 {xi,yi}Ni=1 ,其包含T棵决策树,构成 Tt(x):X→RK ,其中 xi∈X=RM,yi∈Y=RK ,对于分类问题, RK=[0,1]K ,表示样本属于第K类。对于回归问题, RK 表示样本在K维空间中的向量预测。
在测试时,对于分类问题,对于样本 x ,每棵决策树t输出其在每一个类上的后验概率 pt(y|x) ,对于回归问题则直接输出预测向量 yt 。
整个随机森林的输出为各棵树的平均,分类和回归问题分别为:
本文采用了Boosting方法的思想。具体来说,Boosting方法的最终输出分类器F(x),这其中包含了T个弱学习器 ft(x):X→RK ,每个弱学习器给出一个预测,根据错误率来更新样本权重和弱学习器在整个最终的分类器的权重。最终可以得出 F(x)=∑Tt=1vtft(x) ,其中 vt 是弱学习器在整个分类器中的权重。在训练第1个弱学习器时,所有样本的权重 w1i 都设为零。在训练第t个弱学习器时,第i个样本的权重根据之前的结果根据一定的规则被调整为 wti 。
再根据GradientBoost的思想,可以进行全局最优化以下目标式:
input:training sample:{xi,yi}Ni=1,number of trees:T,maximum depth:Dmax
init w1i
init F0=f0(x)
for d from 1 to Dmax do
Check stopoing criteria d≤Dmax
Caluculate(update) wdi
Find Θd,using information gain I
Split nodes in depth d:
Fd(x;Θ)=Fd−1(x;Θ)+fd(x;Θd)
end for
Boost方法因为是先训练完一棵完整树,再更新样本权重,最后再根据每棵树的预测错误率来给树设定权重,于是树的数量会比较多,训练会比较慢。ADF/ARF因为是训练的同时更新权重,所以反而用较少的树就能得到好一些的结果。论文里作者贴了实验对比,我就不上传了。
ADF/ARF两篇文章的作者把通常决策树用的深度优先训练变为广度优先训练,并采用了gradient boost的方法为样本设定权重,达到了更高的准确率,可以对新的idea的改进给出一定的引导的方向。