机器学习: ensemble learning
ensemble learning即把多个模型综合成一个模型。这样往往能达到不错的效果。原因为: 不同的模型可能采用了不同的数据、或对数据的刻画方式角度不一样;直觉上讲,如果一个问题从多个角度去看,那么效果往往会比从单角度看效果更好。
各种ensemble的方法,据说在kaggle比赛中也有明显的效果
ensemble的方式大致分几类:
bagging (bootstrap aggregation):
bootstrap 代表:有放回的重采样。bagging即在原始数据中,首先有放回的重采样出多份数据,每一份数据训练出一个model, 然后再把model组合起来(分类一般采用投票法,回归采用平均法)。
- bagging可以有效降低模型的variance(可能提高bias), 因为多个模型放在一起,提升了泛化性. 所以bagging对高方差的模型比较有效,比如树模型
- 多个模型的训练是不互相依赖的,即多个模型可以并行训练
boosting
Boosting involves incrementally building an ensemble by training each new model instance to emphasize the training instances that previous models mis-classified. In some cases, boosting has been shown to yield better accuracy than bagging, but it also tends to be more likely to over-fit the training data(wiki)
- boosting can give good results even if the base classifier is weak learner(only slightly better than random)
- base classifier are trained in sequence(注意这里必须串行训练,每一个模型的训练依赖之前的模型,和bagging不同)
- 所有模型训练完成后,在将所有模型组合到一起
- 特点: 可以提升对训练数据的拟合,减小bias, 但是可能造成overfitting(增加variance)
- 例子: adboost, gbdt, gbdt
stacking
分两层,第一层是多种模型利用数据训练出的不同模型,第一层所有模型的输出是第二层模型的输入,第二层模型的输出是最终结果。(个人理解,普通的模型输出综合无非是平均法、投票法。而stacking把所有模型的输出当作了输入,这样就可以学到比平均/投票法更复杂的模型融合方法)
其他
-
Bayes optimal classifier(wiki,T代表training data, h_i 代表第i个假设,最终的结果是多个假设计算出的模型,按照概率加权投票)
-
Bayesian model combination