单个决策桩(只能横着或竖着切一刀)在月牙上只有 88% 的准确率。 把 30 个桩组合起来,可以到 99%。但组合的方式有两种,逻辑完全不同: Bagging 让它们各自独立做题再投票,AdaBoost 让后一个专门补前一个的漏。 这一页把两种方式的边界一笔一笔画出来。
模型的泛化误差可以粗略拆成偏差(系统性地错在哪)和 方差(换个训练集就换个答案)。两种集成各治一头:
假设有 个相互独立、 方差都是 的模型, 平均之后的方差是:
这是 Bagging 的全部理论。它有两个前提:模型要足够独立 (所以要有随机采样),以及平均不会破坏准确性 (所以基学习器不能太弱)。现实中样本有限,树之间总有关联, 降方差的效果会打折——但方向是对的。
每一轮的流程只有四步:
①算这一轮的加权错误率 ε; ②换算成发言权 α——错得越少说话越响, 但 ε = 0.5(和瞎猜一样)时 α = 0,直接作废; ③把答错的样本权重乘上 放大; ④归一化,进入下一轮。
最终预测是按 α 加权投票: 。 页面上圆点的大小画的就是当前样本权重——你会看到被错分的点一轮轮变大。
还有一个容易被误读的地方:AdaBoost 下右侧那个「单棵树平均」会比 Bagging 低很多 (月牙上实测 66% vs 83%)。这不是实现有问题——那些树是偏科生: 越到后面,它们越专门盯着被放大权重的难分点训练,在整体数据上自然一塌糊涂。 正因为每棵树只负责一小块局部,最后才必须按 α 加权投票把它们拼起来。