【每日一问】谈谈你对集成学习的见解与认识,描述一下它们的优势所在?
Datawhale优秀回答者:HipHopMan
集成方法有很多种,一种叫做bagging,bagging的思想是,我把我的数据做一点微小的调整,就得到了一个跟原来不一样的数据集,我就能多训练一个模型出来,模型的数量多了,解释力自然就增强了。比如说我原来有100个人的数据,其中有两个分别叫Tony和Lily,我把Tony这条数据删掉,用Lily的数据来替换,这样就得到了一个跟原来不一样的船新的数据集,这个过程叫做Bootstrap
每一个Bootstrap数据集都能用来训练一次模型,所以我们重复这个过程,比如重复1000次,一次是Tony替代Cici,一次是Ivy替代Yuki,这样每一次都是不一样的数据,也就可以训练1000次,得到了1000个决策树,我们把这1000个决策树打包到一起作为我们最终的模型,这个打包就叫做bagging
一般我们会把bagging跟随机森林一起叠加使用,在数据点的处理上,我们使用bagging来创造许多组(比如说1000组)bootstrap数据,对于每一组数据,我们使用随机森林来训练模型,最后再把所有模型的预测结果bagging起来
第二种集成的方法是boosting,boosting跟bagging一样都属于集成的思想,本质上都是训练很多模型,用数量堆积出质量。还是举1000个model,100个variable的例子,bagging是训练1000个等价的模型,比如说用随机森林,这些模型都是同样随机从100个里面选10个variable出来训练,每一个模型之间是同一级别的、互不干扰的
但boosting的思路和bagging不同,boosting里每一个模型都是基于上一个模型来进行优化,它的核心思想是训练1000个模型,每一个模型在上一个模型的基础上再好一点点
比如说第一个模型的RSS是10,这时候我们基于第一个模型定个小目标,先让RSS减到9,这就是我们的第二个模型,第三个模型的RSS减到8.5…如此往复,得到1000个model,再综合这1000个model得到最终的模型
第三种也是最后一种集成方法是stacking,stacking在字面上更好