之前说了**个体学习器之间不存在强依赖关系,可同时生成的并行化方法**:Bagging和RandomForest,这次来说第二种集成方式,即**个体学习器间存在强依赖关系、必须串行生成的序列化方法**:Boosting。<br />** Boosting是一族可以将弱分类器提升为强学习器的算法**(很重要的概念)。它的大致工作机制为:<br />(1)先从初始训练集训练出一个初始的基学习器(**之前有说过基学习器的概念,即所有的个体学习器都是一种机器学习算法时,这些算法被称为基学习器,很重要的概念**);<br />(2)根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练集在后续得到更多的关注;<br />(3)基于调整后的样本分布来训练下一个基学习器,重复以上步骤,直到基学习器达到预定数量,然后将这些基学习器加权结合。<br /> Boosting族算法最著名的是AdaBoost,接下来我们大致来说一下Adaboost.
Adaboost略讲
对于喜欢公式推导的,可以参照西瓜书174-177页Adaboost的推导,这里我只大致说一下Adaboost训练的过程。<br />首先对于训练集,拿一个基学习算法,以及训练轮数,我们做以下步骤:<br />(1)初始化一个样本权重,为,其实就是样本的个数嘛。<br />(2)在初始样本权重分布下训练基学习算法,得到分类器;<br />(3)在此分类器上计算分类误差,要求分类误差小于0.5,**若大于0.5,则算法终止**;<br />(4)通过误差计算分类器权重,并根据分类情况调整数据集分布,给判错的样本以更大的权值。<br />(5)重复以上过程,对T个基学习器按照对应的权值加权结合:。(二分类自然用sign(·))<br /> 这里值得注意的是,在算法第四步过程中,如果分类误差大于0.5,则训练出的分类器比随机猜测差,需要立即终止算法,然后执行最后一步加权结合得到最终集成算法。但这有可能使得最终集成的时候基学习器较少导致性能不佳。此时可以采用重采样的方法,即每一轮按照样本权重分布采样样本对基学习器进行训练,直到训练出一个误差小于0.5的基学习器,再进入下一轮,持续到训练轮次达到T为止。
生活感悟
Boosting是将弱学习器提升为强学习器的方法,它始终只训练同一个学习器,也就是基学习器,每一轮训练基学习器的时候都去更加关注之前判断错误的样本。这何尝不和我们人一样,我们一开始对某件事也不是很会做,也会不断犯错,如果我们能够一点点总结所犯的错误,不断进行修正,总会把这件事情做好,那么我们就是在不断的Boosting.