论文选读Alternating Decision Forests和Alternating Regression Forests

本文作者及概述

本次介绍两篇文章,分别是:
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):XRK ,其中 xiX=RM,yiY=RK ,对于分类问题, RK=[0,1]K ,表示样本属于第K类。对于回归问题, RK 表示样本在K维空间中的向量预测。
在测试时,对于分类问题,对于样本 x ,每棵决策树t输出其在每一个类上的后验概率 pt(y|x) ,对于回归问题则直接输出预测向量 yt
整个随机森林的输出为各棵树的平均,分类和回归问题分别为:

y=argmaxy1Tt=1Tpt(y|x)y=argmaxy1Tt=1Tyt

对于分裂节点的特征和阈值选取,则采用信息增益的目标函数:
I=H(LR)|L||L|+|R|H(L)|R||L|+|R|H(R)

其中的 H(.) 是熵。分类问题可以表示为:
H(S)=k=1K[p(k|S)log(p(k|S))]

回归问题可以表示为:
H(q)=yq(y|x)log(q(y|x))dy

其中, q(y|x) 是输出值与输入样本的条件概率。当假设 q(.|.) 为高斯分布,且样本数为有限值时,上式可以改写为一个闭式形式,如下:
HGauss(S)=K2(1log(2π))+12log(det(ΣS))

本文方法

全局损失函数与样本权重

本文采用了Boosting方法的思想。具体来说,Boosting方法的最终输出分类器F(x),这其中包含了T个弱学习器 ft(x):XRK ,每个弱学习器给出一个预测,根据错误率来更新样本权重和弱学习器在整个最终的分类器的权重。最终可以得出 F(x)=Tt=1vtft(x) ,其中 vt 是弱学习器在整个分类器中的权重。在训练第1个弱学习器时,所有样本的权重 w1i 都设为零。在训练第t个弱学习器时,第i个样本的权重根据之前的结果根据一定的规则被调整为 wti
再根据GradientBoost的思想,可以进行全局最优化以下目标式:

argminΘi=1Nl(yi;FDmax(xi;Θ))

其中l(.)是一个可导的损失函数, FDmax(xi;Θ)Dmaxd=0fd(x,Θd) Θ 表示分裂节点的参数, Θd 表示第d层的分裂节点的参数。上式可以转化为一个贪婪算法:对于在第d层深的时候,可以采用如下的层级式的优化:
argminΘdi=1Nl(yi;Fd1(xi;Θ)+fd(xi;Θd))

其中, Fd1(xi;Θ) 是第d-1层深时得出的整个随机森林的分类器。对上式进行一阶的泰勒展开,可以得到下式:
argminΘdi=1Nl(yi;Fd1(xi;Θ))l(yi;Fd1(xi;Θ))F(x)fd(xi;Θd)

于是,每个样本的权重可以由上式的第二项中偏导数部分得出如下:
wti=|l(yi;Fd1(xi;Θ))F(x)|

算法流程

input:training sample:{xi,yi}Ni=1number of trees:Tmaximum depth:Dmax
init w1i
init F0=f0(x)
for d from 1 to Dmax do
Check stopoing criteria dDmax
Caluculate(update) wdi
Find Θd,using information gain I
Split nodes in depth d:
Fd(x;Θ)=Fd1(x;Θ)+fd(x;Θd)
end for

与其他方法的比较

Boost方法因为是先训练完一棵完整树,再更新样本权重,最后再根据每棵树的预测错误率来给树设定权重,于是树的数量会比较多,训练会比较慢。ADF/ARF因为是训练的同时更新权重,所以反而用较少的树就能得到好一些的结果。论文里作者贴了实验对比,我就不上传了。

总结

ADF/ARF两篇文章的作者把通常决策树用的深度优先训练变为广度优先训练,并采用了gradient boost的方法为样本设定权重,达到了更高的准确率,可以对新的idea的改进给出一定的引导的方向。

你可能感兴趣的:(机器学习,模式识别,随机森林,ICCV,cvpr)