Blending and Bagging
Motivation of Aggregation
- 集成模型:混合或者组合多个假设的结果得到最后的结果
- Validation:选择最佳(最小验证误差)假设进行预测 G ( x ) = g t ∗ ( x ) G(\bold x) = g_{t_\ast}(\bold x) G(x)=gt∗(x)
- 等权重叠加: G ( x ) = sign ( ∑ t = 1 T ) 1 ⋅ g t ( x ) G(\bold x) = \operatorname{sign}(\sum_{t = 1}^T) 1 \cdot g_t(\bold x) G(x)=sign(∑t=1T)1⋅gt(x)
- 不等权重叠加:
G
(
x
)
=
sign
(
∑
t
=
1
T
)
α
t
⋅
g
t
(
x
)
,
α
t
≥
0
G(\bold x) = \operatorname{sign}(\sum_{t = 1}^T) \alpha_t \cdot g_t(\bold x) ,\ \alpha_t \ge 0
G(x)=sign(∑t=1T)αt⋅gt(x), αt≥0
- 包含了前两种情形
- 不同情境下组合不同假设的结果:
G
(
x
)
=
sign
(
∑
t
=
1
T
)
q
t
(
x
)
⋅
g
t
(
x
)
,
q
t
(
x
)
≥
0
G(\bold x) = \operatorname{sign}(\sum_{t = 1}^T) q_t(\bold x) \cdot g_t(\bold x) ,\ q_t(\bold x) \ge 0
G(x)=sign(∑t=1T)qt(x)⋅gt(x), qt(x)≥0
- 包含了上述所有情形
- Validation Best:依赖强假设——如果只有一些弱假设能否胜任呢?
- 集成学习——更好的泛化性能
- 多个简单假设集成复杂假设——特征转换?
- 多个假设中得到一个比较合适的——正则化?
Uniform Blending
- 已知 g t g_t gt,如何融合
- 均匀blending,每人一票,一票权值为1
G ( x ) = sign ( ∑ t = 1 T 1 ⋅ g t ( x ) ) G(\bold x) = \operatorname{sign} \left( \sum_{t = 1}^T 1 \cdot g_t(\bold x) \right) G(x)=sign(t=1∑T1⋅gt(x))
- 如果所有的 g t g_t gt都一样:能力与单个 g t g_t gt一样
- 如果 g t g_t gt都各有不同:大多数可以纠正少数(可能导致犯错)
- 投票取最多数
- 对于回归任务:
G ( x ) = 1 T ∑ t = 1 T g t ( x ) G(\bold x) = \frac 1 T \sum_{t = 1}^T g_t(\bold x) G(x)=T1t=1∑Tgt(x)
- 如果所有的 g t g_t gt都一样:能力与单个 g t g_t gt一样
- 如果
g
t
g_t
gt都各有不同:
- 存在高估和一部分低估情形
- 综合得到平均值——更合适
- 多个假设的多样性很重要
- 理论回归误差分析:
avg ( E o u t ( g t ) ) = avg ( E ( g t − G ) 2 ) + E o u t ( G ) ≥ E o u t ( G ) \operatorname{avg}(E_{out} (g_t)) = \operatorname{avg}(\mathcal E(g_t - G)^2) + E_{out}(G) \ge E_{out}(G) avg(Eout(gt))=avg(E(gt−G)2)+Eout(G)≥Eout(G)
- 产生弱假设算法的期望性能 = 对于共识的期望差距(方差) + 共识的性能(偏差)
- blending:消除方差,得到稳定的性能
Linear Blending
- 已知 g t g_t gt,如何融合
G ( x ) = sign ( ∑ t = 1 T α t ⋅ g t ( x ) ) , α t ≥ 0 G(\bold x) = \operatorname{sign} \left (\sum_{t = 1}^T \alpha_t \cdot g_t(\bold x) \right),\ \alpha_t \ge 0 G(x)=sign(t=1∑Tαt⋅gt(x)), αt≥0
- 计得到好的 α t \alpha_t αt: min α t ≥ 0 E i n ( α ) \min_{\alpha_t \ge 0} E_{in}(\alpha) minαt≥0Ein(α)
- linear blending = linear model + hypotheses as transform + weight constraints
- 实际上,限制 α t \alpha_t αt非负并不必要,因为负的权重实际对应一个反过来使用的分类器,可能得到一个非常好的效果(如果本身非常烂的话)
- 但是在使用 E i n E_{in} Ein进行选择的时候,会增加模型的复杂度,很容易过拟合——使用 E v a l E_{val} Eval
- 选择 g − g^- g−(即剔除validation的数据训练得到的模型),根据 E v a l E_{val} Eval确定权重
- 利用若干个 g − g^- g−,实际上就是在将原始输入 x \bold x x扩展到一个新的空间 Φ ( x ) = ( g 1 − ( x ) , g 2 − ( x ) , … , g n − ( x ) ) \Phi(\bold x) = \left( g^-_1(\bold x), g^-_2(\bold x), \ldots, g^-_n(\bold x) \right) Φ(x)=(g1−(x),g2−(x),…,gn−(x))
- 利用上述转换后的样本计算权重 α \alpha α,然后得到最终模型 G ( x ) = L I N ( α T Φ ( x ) ) G(\bold x) = \operatorname{LIN(\alpha^{\mathrm{T}} \Phi(\bold x))} G(x)=LIN(αTΦ(x))
- 拓展:非线性的Blending(Stacking)
- 使用任何函数形式,根据得到的样本计算: g ~ = Any ( Φ ( x ) , y n ) \tilde g = \operatorname{Any}(\Phi(x), y_n) g~=Any(Φ(x),yn)
- 从而得到最终模型: G ( x ) = g ~ ( Φ ( x ) ) G(\bold x) = \tilde g(\Phi(\bold x)) G(x)=g~(Φ(x))
- 很强大,可以实现根据条件调整权重
- 有比较大的过拟合风险
Bagging
- 如何得到不同的
g
t
g_t
gt
- 来自不同的模型
- 来自不同的训练参数
- 来自不同的算法随机性(初始化等)
- 来自不同的数据随机性(交叉验证产生 g − g^- g−)
- Bagging:利用数据随机性,不使用 g − g^- g−产生 g ˉ \bar g gˉ
- bootstraping:从现有数据
D
D
D中均有放回随机采样
N
N
N个样本
- 不再从一个分布采样样本
- 而是从一个现有数据集中采样得到子集
- 元算法
- 只要算法对数据随机性敏感,bootstrapping就会表现很好