一、什么是集成学习?
集成学习(Ensemble learning)就是将多个机器学习模型组合起来,共同工作以达到优化算法的目的。具体来讲,集成学习可以通过多个学习器相结合,来获得比单一学习器更优越的泛化性能。集成学习的一般步骤为:1.生产一组“个体学习器(individual learner)”;2.用某种策略将他们结合起来。
个体学习器通常由一个现有的学习算法从训练数据产生。在同质集成(系统中个体学习器的类型相同)中,个体学习器又被称为“基学习器”,而在异质集成(系统中个体学习器的类型不同)中,个体学习器又被称为“组建学习(component learner)”。
二、集成学习主要有哪几种框架?工作过程是?
集成学习的集成框架主要有:Bagging,Boosting和Stacking,其中Bagging和Boosting为同质集成,而Stacking为异质集成。
(1)Bagging(Bootstrap Aggregating)
Bagging的核心思想为并行地训练一系列各自独立的同类模型,然后再将各个模型的输出结果按照某种策略进行聚合。例如,分类中可以采用投票策略,回归中可以采用平均策略。Bagging主要分为两个阶段:
- Boostrap阶段,即采用有放回的采样方式,将训练集分为n个子样本集;并用基学习器对每组样本分布进行训练,得到n个基模型;
- Aggregating阶段,将上一个阶段训练得到的n个基模型组合起来,共同做决策。在分类任务中,可采用投票法,比如相对多数投票法,将结果预测为得票最多的类别。而在回归任务中可采用平均法,即将每个基模型预测得到的结果进行简单平均或加权平均来获得最终的预测结果。
(2)Stacking
Stacking的核性思想是并行地训练一系列各自独立的不同类模型,然后通过训练一个元模型(meta-model)来将各个模型输出结果进行结合。Stacking也可以分为两个阶段:
- 分别采用全部的训练样本来训练n个组件模型,要求这些个体学习器必须异构的,比如可以分别是线性学习器,SVM,决策树模型和深度学习模型。
- 训练一个元模型(meta-model)来将各个组件模型的输出结果进行结合,具体过程就是将各个学习器在训练集上得到的预测结果作为训练特征和训练集的真实结果组成新的训练集;然后用这个新组成的训练集来训练一个元模型。这个元模型可以是线性模型或者树模型。
(3)Boosting
Boosting的核心思想为串行地训练一系列前后依赖的同类模型,即后一个模型用来对前一个模型的输出结果进行纠正。Boosting算法是可以将弱学习器提升为强学习器的学习算法。学习过程是:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行。直至基学习器数目达到实现指定的值n,最终将这n个基学习器进行结合。
三、Boosting算法有哪两类,它们之间的区别是什么?
Boosting算法主要有AdaBoost(Adaptive Boost)自适应提升算法和Gradient Boosting梯度提升算法。最主要的区别在于两者如何识别和解决模型的问题。AdaBoost用错分的数据样本来识别问题,通过调整错分数据样本的权重来改进模型。Gradient Boosting主要通过负梯度来识别问题,通过计算负梯度来改进模型。
具体可参考:
机器学习算法二:详解Boosting系列算法一Adaboost.
机器学习算法二:详解Boosting系列算法二GBM.
四、什么是Bias(偏差)和Error(误差)?
偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力,偏差越大,预测值越偏离真实数据的标签。
方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响,方差越大,预测值的分布越分散。
具体可参考:机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?.
五、为什么说Bagging可以减少弱分类器的方差,而Boosting 可以减少弱分类器的偏差?
Bagging就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的variance. Bagging 比如Random Forest 这种先天并行的算法都有这个效果。
Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低。这种算法无法并行,如Adaptive Boosting.