集成学习(ensemble Learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)等,其一般结构是先产生一组“个体学习器”(individual learning),再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据中产生,如果个体学习器的集成是同质(homogeneous)的,那么同质集成中的个体学习器称为“基学习器”(base learner);如果是异质(heterogenous)的,则相应的个体学习器称为“组件学习器”(component learner)或直接称为个体学习器。
其主要分为三大类:Boosting、Bagging、Stacking。其中Boosting的代表有AdaBoost,gbdt,xgboost;Bagging的代表则是随机森林(Random Forest)。
Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构造出很强的集成;而Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等学习器上效用更为明显。
一、Boosting
Boosting是一种可将弱学习器提升为强学习器的算法,它是一种序列化方法,有着强依赖关系,必须串行生成,不过xgboost有些例外,xgboost可以在节点分裂属性选择上做并行计算。Boosting的工作类似:先基于初始训练集训练出一个弱的学习器,然后根据前一个弱学习器做错的训练样本,改变样本的概率分布,构成新的训练集,然后基于调整后的样本分布训练下一个学习器,这样反复迭代提升,知道基学习器的数目达到指定值,最后将这T个基学习器进行加权结合,就构成了一个很强的学习器。
(1)AdaBoost,也就是Adaptive Boosting(自适应增强),其主要思想就是在不改变训练数据的情况下,通过在迭代训练弱学习器中,