在使用机器学习模型时,我们经常面临这样的问题:我们手头训练好了很多模型,这些模型可能效果比较差,能力比较弱。能不能通过一定的方法,将这些弱模型组合成一个更强的模型?是可以的,三个臭皮匠,顶个诸葛亮。但是,组合后的模型能力肯定也是有上限的。

机器学习会涉及到偏差(bias)和方差(variance)的权衡,不同的Ensemble方法,侧重也有所不同。最常见的Ensemble有三种,分别是bagging,boosting和stacking。用于Ensemble的基模型,要“好而不同”,才能保证Ensemble的结果有所提升。

  1. Bagging:每个基模型使用不同的训练子集,不同的训练子集相互独立,因此可以并行训练。主要能够减小方差。RF就是典型的Bagging。
  2. Boosting:每个基模型使用不同的训练子集,不同的训练子集是依赖的,后面的子集会着重强调之前没有处理好的样本,因此必须串行训练。主要能够减小偏差。GBDT就是典型的Boosting
  3. Stacking:类似Boosting,但是,每个基模型的权重是由模型(LR、Ridge Regression等)“学”出来的。

参考资料:

  1. What is the difference between Bagging and Boosting?
  2. Dream team: Combining classifiers
  3. bagging boosting and stacking in machine learning