Boosting和Bagging

    在生成集成中个体网络方面,最重要的技术是Boosting [Sch90] 和Bagging [Bre96]。
Boosting最早由Schapire [Sch90] 提出,Freund [Fre95] 对其进行了改进。通过这种方法可以产生一系列神经网络,各网络的训练集决定于在其之前产生的网络的表现,被已有网络错误判断的示例将以较大的概率出现在新网络的训练集中。这样,新网络将能够很好地处理对已有网络来说很困难的示例。另一方面,虽然Boosting方法能够增强神经网络集成的泛化能力,但是同时也有可能使集成过分偏向于某几个特别困难的示例。因此,该方法不太稳定,有时能起到很好的作用,有时却没有效果 [Sch90]。值得注意的是,Schapire [Sch90] 和Freund [Fre95] 的算法在解决实际问题时有一个重大缺陷,即它们都要求事先知道弱学习算法学习正确率的下限,这在实际问题中很难做到。1995年,Freund和Schapire [FS97] 提出了AdaBoost(Adaptive Boost)算法,该算法的效率与Freund算法 [Fre95] 很接近,却可以非常容易地应用到实际问题中,因此,该算法已成为目前最流行的Boosting算法。
    Bagging [Bre96] 方法中,各神经网络的训练集由从原始训练集中随机选取若干示例组成,训练集的规模通常与原始训练集相当,训练例允许重复选取。这样,原始训练集中某些示例可能在新的训练集中出现多次,而另外一些示例则可能一次也不出现。Bagging方法通过重新选取训练集增加了神经网络集成的差异度,从而提高了泛化能力。Breiman [Bre96] 指出,稳定性是Bagging能否发挥作用的关键因素,Bagging能提高不稳定学习算法的预测精度,而对稳定的学习算法效果不明显,有时甚至使预测精度降低。学习算法的稳定性是指如果训练集有较小的变化,学习结果不会发生较大变化,例如,k最近邻方法是稳定的,而判定树、神经网络等方法是不稳定的。
Bagging与Boosting 的区别在于Bagging 的训练集的选择是随机的,各轮训练集之间相互独立,而Boosting的训练集的选择不是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging 的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量时间开销。
    此外还存在多种个体生成方法。例如,有些研究者 [OS96a, YL98] 利用遗传算法来产生神经网络集成中的个体;有些研究者使用不同的目标函数 [HW90]、隐层神经元数 [Che96]、权空间初始点 [MS95] 等来训练不同的网络,从而获得神经网络集成的个体。

猜你喜欢

转载自blog.csdn.net/yueyedeai/article/details/19076763