(六)集成算法
1)
集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器。
弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(error rate < 0.5);
集成算法的成功在于保证弱分类器的多样性(Diversity)。而且集成不稳定的算法也能够得到一个比较明显的性能提升。
常见的集成学习思想有:
- 用于减少方差的bagging
- 用于减少偏差的boosting
- 用于提升预测结果的stacking
关于偏差和方差随模型复杂度变化,
模型过于复杂,阶数抬高,容易过拟合,预测方差比较大。我们要找的是预测错误率最低的模型,而不是方差或者偏差小的。
bagging
对于一个m个样本的数据集,又放回的抽样m个样本,训练多个基学习器。最终的输出是全部基分类器的的结果投票表决或者取平均值。对于分类问题,一般通过投票法,以多数模型预测结果为最终结果。而对于回归问题,一般采用算术平均法,对所有模型的预测结果做算术平均得到最终结果。
bagging可以解决过拟合问题,可以减小方差来降低总体误差。
Bagging方法又叫做自举汇聚法(Bootstrap Aggregating),思想是:在原始数据集上通过==有放回的抽样(抽一个放回一个,不是一批一批的,所以会抽到重复的样本)==的方式,
Bagging方法训练出来的模型在预测新样本分类/回归的时候,会使用多数投票或者求均值的方式来统计最终的分类/回归结果。
Bagging方法的弱学习器可以是基本的算法模型,eg: Linear、Ridge、Lasso、Logistic、Softmax、ID3、C4.5、CART、SVM、KNN,BP神经网络等。
bagging:可并行计算,模型之间没有依赖关系,减小过拟合,泛化能力强,减小方差,减小错误率,提高准确率(随机森林是其中之一)
基学习器(id3,c4.5,cart,线性回归,逻辑回归,svm,knn,bp等)的特点:单个分类器,方差高,偏差低,模型复杂(树深度深,模型参数多,增加隐含层数,增加隐含层神经元数,激活函数,次方(线性回归))
boosting
用同样的数据集,先训练第一个基学习器,根据第一个基学习器的输出结果,调整样本的x或者y值,再在新的调整过的训练集上训练第二个基学习器,一次类推。最终的结果是将 全部基学习器的结果相加。
先从初始训练集训练一个基学习器,再根据基学习器的表现对新联样本分布进行调整,是的基学习器预测错的训练样本受到更多的关注,然后基于调整后的数据及训练下一个学习器,如此重复进行,直至学习器的数目达到之前的T,最后将T个学习器进行加权结合。
通常Boosting基于弱学习器,弱分类器具有高偏差,低方差。决策树的深度较浅时,通常是弱学习器,比如一种比较极端的例子,只有一个根节点和两个叶子节点。Boosting这种策略主要通过减小偏差来降低总体误差,一般来讲,通过集成多个模型的结果也会减小方差。这里的总体误差可以看作由偏差和方差构成。由于GBDT是基于Boosting策略的,所以这种算法具有序贯性,不容易并行实现。
提升学习(Boosting)是一种机器学习技术,可以用于回归和分类的问题,它每一步产生弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型的生成都是依据损失函数的梯度方式的,那么就称为梯度提升(Gradient boosting);
提升技术的意义:如果一个问题存在弱预测模型,那么可以通过提升技术的办法得到一个强预测模型; 常见的模型有:
• Adaboost
• Gradient Boosting(GBT/GBDT/GBRT)
boosting:不可并行计算,是串行的,模型之间有依赖关系,解决欠拟合问题,减小偏差,减小错误率,提高准确率GBDT
基学习器的特点:单个分类器,偏差高,方差低,模型不复杂(树深度浅,模型参数少,减小隐含层数,减小隐含层神经元数)
stacking
第一轮训练多个基学习器,用不同的机器学习模型训练,必须采用k这交叉验证的方式进行训练,将k折中预留的一折的预测结果,合并起来,作为新的特征,第一轮完成。第二轮的模型融入第一轮的新特征,并且第一轮测试集的结果作为新特征加入到第二轮的测试集中,一般不超过两轮。
对比
-
样本选择:Bagging算法是有放回的随机采样;Boosting算法是每一轮训练集不变,只是训练集中的每个
样例在分类器中的权重发生变化或者目标属性y发生变化,而权重&y值都是根据上一轮的预测结果进行调整; -
样例权重:Bagging使用随机抽样,样例是等权重;Boosting根据错误率不断的调整样例的权重值,错误
率越大则权重越大(Adaboost); -
预测函数:Bagging所有预测模型的权重相等(分类投票机制,回归平均值);Boosting算法对于误差小的分类器具有更大的权重(Adaboost)。
-
并行计算:Bagging算法可以并行生成各个基模型;Boosting理论上只能顺序生产,因为后一个模型需要
前一个模型的结果; -
Bagging是减少模型的variance(方差);Boosting是减少模型的Bias(偏度)。
-
Bagging里每个分类模型都是强分类器,因为降低的是方差,方差过高需要降低是过拟合;
Boosting里每个分类模型都是弱分类器,因为降低的是偏度,偏度过高是欠拟合。
-
bagging 可并行,模型之间没有依赖关系。减小过拟合,泛化能力强,减小方差,减小错误率,提高准确率,
基学习器性能:方差高,偏差低,模型复杂度高,
-
boosting不可并行,模型之间有依赖关系。解决欠拟合问题,减少偏差,减小错误率,提高准确率,
基学习器性能:方差低,偏差高,模型复杂度低。