集成学习之Bagging
2018-05-05 本文已影响36人
海街diary
集成学习之Bagging
Bagging通过并行化的生成若干个基学习器,然后通过投票(分类)或平均(回归)来对这些基学习器进行集成。
bagging集成(-1,1分类)
在基学习器独立的条件下,理论上,随着基学习的数目增大,集成后的学习器预测错误的概率呈指数趋势下降。详细的证明见这里。
为了充分利用这个特性,Bagging采取的一个重要的手段就是bootstrap采样,即我们常说的有放回抽样。对于m个样本,进行m次有放回的抽样得到m个样本的新集合,原集合中的样本约有36.8%的概率(比例)不出现在新集合中。每个基学习器利用新集合中的样本进行训练(注:对每个基学习器对会进行一次有放回抽样产生新的样本集合)。
样本1次也没有抽到概率
这么做的好处有:
- 充分利用样本,同时由于样本的多样性,尽可能保证基学习器的多样性(即独立性)
-
在每次学习中,未被抽中可以用作test data,进行泛化误差的估计,用于防止过拟合(如决策树的限制生长,神经网络的提前结束训练)
Bagging算法
总结以上,Bagging具有的特点:
- 基学习器可并行训练。这样可以利用多核处理器的优势,加快训练速度。
- 在基学习器多样化(独立)的条件下,集成后的学习器误差随基学习器的数目而指数衰减。
因此,对于算法研究者而言,要充分利用Bagging思想的优势,就需要尽可能的设计多样化的基学习器。这也就不难理解,在有放回抽样的条件下, unstable learner由于对样本敏感,常常比stable learner效果要好。比如,bagging中常常使用unpruned tree而不是prunded tree.
Unstable Learner常比Stable Learner效果好
最后,我自己实现的一个Bagging,代码见这里
参考书目: