模型组合比如Boosting,Bagging和stacking等等的基本思想是将多个较弱的模型合成比较强的一个模型,但它们采用的方法不同。
Boosting是将多个预测偏差相对较大的模型,通过组合后降低偏差来得到一个预测更准的模型。在学习方法上,Boosting是按顺序的学习n个模型。每个模型学习后,由下一个模型学习上一个模型出错的那部分学习集。常见的算法有AdaBoosting和Gradient Boosting等,AdaBoost侧重于在每一轮迭代中增加那些被前一轮弱学习器错误分类的样本的权重,而Gradient Boosting则是通过拟合前一轮的残差来生成新的弱学习器。在选择基础子模型的时候,要选择一些弱模型,比如模型本身能力较弱或者仅针对一部分特征进行训练,从而降低过拟合的程度。
Bagging是多个不稳定的模型,通过组合后降低方差来得到一个预测更稳定的模型。Bagging是将多个基础子模型分别训练和独立学习,然后将模型预测结果组合。组合方法可采用多种方法,比如投票或者平均等,然后将输出一个统一的结果。在训练子模型的时候,会随机在样本中用boostap sampling方法得到约63%的不重复样本,剩下大约37%的样本叫out of bag样本可以作为验证集使用。Bagging比较适合在基础子模型不是很稳定的情况下,用来提高整个模型的平均预测水平。
Stacking和Bagging类似可以用小模型并行组合成一个大模型,但是是在同样的数据集上训练不同类别的模型。因为模型的总类不一样,它们的差别是比较大的,所以在输出的时候,会先将各个子模型的输出连接起来做一个线性组合得到最终输出。Stacking在以往的模型竞赛中取得过不俗的成绩。这种方法和Bagging一样,用来降低方差。但也可以使用多层的组合来降低模型偏差,但需要注意降低过拟合。