tags: [机器学习, ensmeble]
原始博客查看:小白机器学习博客
Ensembel(集成学习)是一个简单,但非常有效的算法,在各大kaggle竞赛中,获得很高排名的,很多都应用了ensemble方法。这里是对ensemble learning 进行优秀资源的整理,便于以后查看。
了解集成学习可以从这篇blog开始:
集成学习(ensemble learning)原理详解
常见的Ensemble方法有这2种:Bagging and boosting。还有现在越来越多的stacking and blending。
Bagging
Bagging 算法如下图,通过随机采样训练集,进行训练,采集T个训练集,就训练T个弱学习器。然后通过一定的结合策略,如取平均,或者vote等形式变成一个强学习器。采集训练集时,是有放回的采集。
Boosting
从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。AdaBoost和提升树算法的原理在后面的文章中会专门来讲。From: link
Stacking&blending
理解
数据比赛大杀器—-模型融合(stacking&blending)
大话机器学习之STACKing,一个让诸葛亮都吃瘪的神技
错误认知
研究了stack技能有一阵子,查到的资料和代码基本上都是这样的。里面给的图如下图
看他的代码怎么都不能理解。KFold,cross-validation不是应该一个model就要训练了5次吗?为什么图中是用一个**model来训练一个Fold集,而代码中是每个model都要训练每个**fold集。
所以大