7分钟
DART booster
1. 在GBDT
中,越早期加入的子树越重要;越后期加入的子树越不重要。
2. DART booster
原理:为了缓解过拟合,采用dropout
技术,随机丢弃一些树。
3. 由于引入了随机性,因此dart
和gbtree
有以下的不同:
- 训练速度更慢
- 早停不稳定
4. DART booster
也是使用与提升树相同的前向分步算法
- 第 m 步,假设随机丢弃 K 棵,被丢弃的树的下标为集合 K 。 令 D=∑_(k∈K)h_k ,第 m 棵树为 h_m 。则目标函数为:
- 由于
dropout
在设定目标函数时引入了随机丢弃,因此如果直接引入 h_m,则会引起超调。因此引入缩放因子,这称作为归一化:
- 其中 b 为新的子树与丢弃的子树的权重之比,α 为修正因子。
- 令 M ̂=∑_(k≠K)h_k 。采用归一化的原因是:h_m 试图缩小 M ̂ 到目标之间的
gap
; 而 D 也会试图缩小 M ̂ 到目标之间的gap
。 如果同时引入随机丢弃的子树集合 ,以及新的子树 ,则会引起超调。 - 有两种归一化策略:
'tree'
: 新加入的子树具有和每个丢弃的子树一样的权重,假设都是都是 1/K 。 此时 b=1/K,则有:
要想缓解超调,则应该使得 ,则有:α=K/(K+v) 。
'forest'
:新加入的子树的权重等于丢弃的子树的权重之和。假设被丢弃的子树权重都是 1/K, 则此时 b=1,则有:
要想缓解超调,则应该使得 α(∑_(k∈K)h_k+bvh_m ) D,则有:α=1/(1+v) 。
学员评价