问题
我们在机器学习问题“三种集成学习思想简介”中大体上介绍了 bagging 思想,在这个问题中,我们便具体讨论下这种思想,且与DNN中的dropout思想做下对比。
bagging
要得到泛化性能强的集成,集成中的个体学习器应尽可能表现好且相互独立,即“好而不同”。但是“独立”的学习方法在现实任务中无法做到,因为同一个数据集,训练得到的学习器肯定不会完全独立,但可以设法使基学习器尽可能具有较大的差异。给定一个训练数据集,一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器。这样,由于训练数据的不同,我们获得的基学习器可望具有较大的差异。然而,为了获得好的集成,我们同时还希望个体学习器不能太差,如果采样出的每个子集都完全不同,则每个学习器都只用到了一小部分的训练数据,甚至不足以进行有效学习。为解决这个问题,我们可考虑使用相互有交叠的采样子集。
bagging对训练数据集的采样使用的是 bootstrap 自助采样法,因此这里先对这个方法进行简单介绍:
给定包含 m 个样本的数据集 D D