f(x)=∑m=1MαmT(x;Θm)
f
(
x
)
=
∑
m
=
1
M
α
m
T
(
x
;
Θ
m
)
αm
α
m
是每个基学习器的权系数,
T(x;Θm)
T
(
x
;
Θ
m
)
代表学习得到的第m个基学习器,
m
m
为学习器个数,Θm为学习器分类的参数,一般这里指分类树或者回归树模型参数。
在给定训练数据和损失函数形式后,boosting学习模型可以定义为一个损失函数极小化的问题,
优化的目标函数为:
argminf∑i=1NL(yi,f(xi))
arg
min
f
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
L
L
为损失函数,N为样本个数。从这两个定义我们就可以知道boosting类算法的模型和优化目标函数是什么。接下来理解boosted tree 就容易了。
boosted tree
提升树是以分类树和回归树为基学习器的提升算法,就是将T(x;Θm)
T
(
x
;
Θ
m
)
学习器定义为了决策树。提升树被认为是统计学性能最好的方法之一。为了方便大家理解,这里就不再另外定义模型了(参考前文),提升树模型如下
f(x)=∑m=1MαmT(x;Θm)
f
(
x
)
=
∑
m
=
1
M
α
m
T
(
x
;
Θ
m
)
对于二分类问题,提升树可以看做采用二分类树的adaboost算法,所以这里不再详细解释。因此这里的
T(x;Θm)
T
(
x
;
Θ
m
)
为回归树。回归提升树使用的前向分布计算法:
f0(x)=0
f
0
(
x
)
=
0
fm(x)=fm−1(x)+T(x;Θm)
f
m
(
x
)
=
f
m
−
1
(
x
)
+
T
(
x
;
Θ
m
)
fM(x)=∑m=1MT(x;Θm)
f
M
(
x
)
=
∑
m
=
1
M
T
(
x
;
Θ
m
)
前向计算到低
m
m
步时,需要求解目标函数
Θ′m=argminΘ∑i=1NL(yi,fm−1(xi)+T(x−i;Θm))
Θ′m
Θ
m
′
为根据损失函数更新的第m颗树的参数。假设这里的损失函数我们定义为平方误差函数
L=(y−f(x))2
L
=
(
y
−
f
(
x
)
)
2
损失就变为了
L=[y−fm−1(xi)−T(x−i;Θm)]2
L
=
[
y
−
f
m
−
1
(
x
i
)
−
T
(
x
−
i
;
Θ
m
)
]
2
这就是基于平方误差函数的提升树模型。
算法步骤可以总结如下:
1.输入训练数据
(xi,yi)
(
x
i
,
y
i
)
;
2.构建提升树模型
fM(x)
f
M
(
x
)
3.初始化
f0(x)=0
f
0
(
x
)
=
0
对于第m步,首先计算残差
rmi=yi−fm−1(xi)
r
m
i
=
y
i
−
f
m
−
1
(
x
i
)
然后根据残差求取误差函数最小化的分类器,得到树模型
Θ′m=argminΘ∑i=1NL(rmi,fm−1(xi)+T(x−i;Θm))
Θ
m
′
=
arg
min
Θ
∑
i
=
1
N
L
(
r
m
i
,
f
m
−
1
(
x
i
)
+
T
(
x
−
i
;
Θ
m
)
)
4. 更新提升树模型
fm(x)=fm−1(x)+T(x;Θm)
f
m
(
x
)
=
f
m
−
1
(
x
)
+
T
(
x
;
Θ
m
)
了解了adaboost和提升树算法后,就很容易理解GBM算法了。GBM(提升器)算法,又名GBDT,是基于梯度下降算法得到提升树模型。它与提升树的关键不同之处,就在于残差更新的方式,下面来看看GBM的的计算步骤; 1.输入训练数据(xi,yi)
(
x
i
,
y
i
)
; 2.构建提升树模型fM(x)
f
M
(
x
)
3.初始化f0(x)=argminΘ∑i=1NL(yi;Θ)
f
0
(
x
)
=
a
r
g
min
Θ
∑
i
=
1
N
L
(
y
i
;
Θ
)
Form=1toM
F
o
r
m
=
1
t
o
M
1.对于第m个基学习器,首先计算梯度
gm(xi)=[∂L(yi,f(xi))∂f(xi)]f(x)=fm−1(x);
g
m
(
x
i
)
=
[
∂
L
(
y
i
,
f
(
x
i
)
)
∂
f
(
x
i
)
]
f
(
x
)
=
f
m
−
1
(
x
)
;
2.根据梯度学习第m个学习器
Θ′m=argminΘ,β∑i=1N[−gm(xi)−βmΘ(xi)]2;
Θ
m
′
=
a
r
g
min
Θ
,
β
∑
i
=
1
N
[
−
g
m
(
x
i
)
−
β
m
Θ
(
x
i
)
]
2
;
3.通过line search求取最佳步长
βm=argminβ∑i=1NL[yi,fm−1(xi)+βmΘ′m(xi)];
β
m
=
a
r
g
min
β
∑
i
=
1
N
L
[
y
i
,
f
m
−
1
(
x
i
)
+
β
m
Θ
m
′
(
x
i
)
]
;
4.令
fm=βmΘ′m
f
m
=
β
m
Θ
m
′
,更新,模型
f(xi)=fm−1+fm;
f
(
x
i
)
=
f
m
−
1
+
f
m
;
end
e
n
d
Output:f(xi)
O
u
t
p
u
t
:
f
(
x
i
)
目前对GBM算法理解还不深,我会在后续学习中继续更新对GBM算法得解释。
更多的内容可以参考以下资料: 1.Introduction to Boosted Trees. By Tianqi Chen. http://homes.cs.washington.edu/~tqchen/data/pdf/BoostedTree.pdf 2.李航《统计学习方法》 3.GBDT算法原理与系统设计简介.wepon.http://wepon.me 4.http://baijiahao.baidu.com/s?id=1596688880528064344&wfr=spider&for=pc
发表评论 取消回复