携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
bagging算法是一种旨在降低泛化误差的算法。通过随机采样,产生一系列随机采样集,然后经过与其一一对应弱学习器的训练输出系列结果,最后经过适合的结合策略结合为强分类器输 出:
上图中,数据集在分割成训练集和测试集后,首先对训练集进行随机放回采样。也就是说,在给定一个尺寸为m的标准训练集W的情况下,Bagging通过均匀地从W中进行放回采样,生成K个新的训练集wi,每个训练集的尺寸为m。通过放回采样,可以在每个!wi中出现一些重复数据。假如m趋近于infty,那么每个新训练集wi大约有36.8%的数据是重复数据。这是因为从数据量为m的原始数据集W中带有放回地抽取一个带有m个数据的新数据集wi。在每一次抽取中,数据集W中的每一个数据t被抽取的概率是1/m,不被抽取的概率是1-1/m,如果抽取m次,数据t一次也没有被抽中的概率是:
这就意味着在超大m次抽样中,一个数据量为100的原始数据中将会大约有37个数据从未被抽出。这也同时隐含着从100个原数据中放回地抽取100个随机样本将会大约有37个重复数据。另外抽取一个完全没有重复数据数据量为m数据集wi的概率为:
弱学习器经过训练后,进入到测试阶段。对于任意一条测试数据基模型(弱学习器)都会给出预测结果,我们通过适合的综合策略把这些预测结果综合成一个结果输出。比如,把这些预测结果的平均值(回归)作为输出或者通过投票输出结果(分类)。
Bagging可以在不增加偏差或有时稍微增加偏差的前提下,减小模型的方差,从而提高模型的性能,尤其是泛化性能的提高。比如对于回归树,虽然单个树的预测对其训练集中的噪声高度敏感,但只要这些树不相关,那么许多树的平均值就不再对噪音高度敏感。简单地在单个训练集上训练许多树将产生强烈关联的树; 上面所讲的自助随机放回采样是一种通过向树输入不同的训练集来解除树关联的方法。
Bagging可以改进不稳定过程,其包括例如人工神经网络,分类和回归树,以及线性回归中的子集选择。