集成学习
正所谓 “三个臭皮匠,赛过诸葛亮”,集成学习正是用了这个思想。正如王者荣耀,一个 team 需要法师、射手、打野、坦克、辅助五个职位。在集成学习中亦如此,系统内不同分类器担当不同角色。
集成学习有两种模型:Bagging 和 Boosting。Bagging 适用于模型极复杂,过拟合问题严重,方差大偏差小的情况;而 Boosting 适用于模型精度低,方差小偏差大的情况。
Bagging
Bagging 的方法是将很多高方差低偏差的模型放在一起,通过平均或投票等方法做出最终决策。具体做法,先是从 \(N\) 个样本中随机抽取 \(N'\) 个样本,对此 \(N'\) 个样本训练一个复杂模型,再将抽出的 \(N'\) 个样本放回。重复上述过程得到若干个复杂模型。对这些模型利用平均或投票法做出最终决策。
Bagging 的一个声名显赫的代表是 Random Forest,它基于上述重采样的方法做出了一些改变。因为单纯的使用上述重采样的方法来做的话,得到的决策树非常相似,故而不能满足 好而不同 的需求。故每次分割节点时人为强制一些特征不可使用,如此可得若干丰富多彩的决策树。
Boosting
Boosting 的方法是用以将很多效果卑微的模型增强为一个较强的模型,它主要的服务对象是低方差高偏差的模型。其核心思想是依次训练新的互补模型以补助前面的卑微模型,最后将所有模型结合到一起。而如何为「补助」? 这是构建 Boosting 模型所需回答的问题。Adaboost 给出的方案是:当前模型会在前模型不能胜任的新数据集上训练。何谓“新数据集”?前次模型出错样本加大训练样本权重即可得到新数据集。而数据集权重的变化只需体现在损失函数中即可。
Adaboost
指定 \(f_1(x), \ f_2(x)\) 模型分别为前次模型和当前模型。Adaboost 指出,只要卑微模型的错误率可以控制在 50% 以下,则经 boost 操作可改善为 0 错误率。所以疯狂加大错误样本权重,并不可取,一定要控制其使得每个分类器错误率在 50% 以下。
计算增减的权重
初始所有样本的权重都为 1,假设 \(f_1 (x)\) 模型中 \(N\) 个样本中 \(M\) 个样本分类错误,分类错误率记为 \(\epsilon\),则
我们希望增大 \(f_1(x)\) 模型错分样本的权重,故而我们在 \(f_2 (x)\) 模型的损失函数中为每个样本对应损失乘以或除以一个权重 \(d_2\)。调整后的错误率为
令其等于 \(0.5\),可得
Adaboost 模型假设
故而在训练新的模型的时候损失函数中的单样本损失都要乘以或除以 \(d\),优化后可得 \(f_2\),依照此法可得 \(f_3, f_4 ... f_T\),最终所有的分类器将以如下方式整合起来,也即得到最终的 Adaboost 模型假设:
证明经验误差趋近零
证明思路大概就是首先得到训练误差上的一个错误率不等关系
其次求第 T 次增强的样本权重之和的通项公式
进而训练误差可以转化成第 T 次增强的样本权重和的表达式,而 T 次增强的样本权重和容易证明是一个单调递减的数列,从而可以证明
即错误率会趋近零。

浙公网安备 33010602011771号