当前位置: 代码迷 >> 综合 >> 机器学习算法拾遗:(三)集成学习(Adaboost、RandomForest)
  详细解决方案

机器学习算法拾遗:(三)集成学习(Adaboost、RandomForest)

热度:89   发布时间:2023-12-16 18:09:04.0

基础:集成学习、Adaboost

根据个体学习器的生成方式不同,我们可以将集成算法分成两类:

  1)个体学习器之间存在强依赖关系,必须串行化生成的序列化方法,这一类的代表是Boosting(常见的算法有Adaboost、GBDT);

  2)个体学习器之间不存在强依赖关系,可以并行化生成每个个体学习器,这一类的代表是Bagging(常见的算法有RandomForest)。

2、集成算法—Boosting

Boosting算法的工作机制可以概括为:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的样本受到更多的关注(通过施加权重来控制),然后基于调整后的样本集训练下一个基学习器,如此反复进行,直到学得的基学习器的个数达到设定的个数T(基学习器的个数是我们需要调试的超参,通过交叉验证来选择),最终对这T个基学习器根据他们的预测表现来施加不同的权重并结合在一起构成我们的强学习器。

 

Boosting算法最具代表的是Adaboost算法,关于Adaboost算法的具体流程如下:(只适用于二分类)

输入:

输出:最终的强分类器G(x)

  1)初始化训练集的权值分布,每个样本的权值一样

  

  2)对于第m个基学习器,使用权值分布Dm的训练数据集训练模型,得到基学习器Gm

  

  计算Gm(x)在训练数据集上的分类误差率,在这里我们可以看到分类误差率是和样本权重有关的,是分类错误的样本权重之和,这样就使得下一次分类时在最小化损失函数时,会更加关注本次分类错误的样本

  

  计算Gm(x)的系数αm,该系数最后会用来作为基学习器的权重,权重系数是随着分类误差率较小而增大的,也就是分类准确性越高的模型,权重也越大

  

  更新训练数据集的权值分布,求得Dm+1

  

  其中Zm是规范场因子,其表达式为

  

  3)构建基学习器的线性组合

  

  则最终的学习器模型如下

3、集成算法—Bagging

Bagging算法的核心是通过在原始数据集上进行采样,获得多份不同的样本集,用这些样本集来训练基学习器。

Bagging与Adaboost只适用于二分类问题不同,可以不经修改的用于多分类问题。

Bagging算法的作用主要是减小模型的方差

假设有n个随机变量,方差记为σ2,两两变量之间相关性为?,则n个随机变量的均值方差为:

因此对于n个模型,若是模型之间相互独立,则方差会降低 n倍,但实际中模型之间不可能相互独立,因此我们只能尽量增加模型的多样性,当前也得平衡基学习器的准确率。

4、集成学习的输出方式

  1)平均法

  对于数值类的回归问题,通常使用的方式是平均法,也即是对每个弱学习器的输出加和取平均值,将该平均值作为最后的输出,当然有的时候会给每个学习器带上权重,此时就是加权平均获得最终的输出值。

 2)投票法

  对于分类问题的输出方式常采用投票法,最简单的投票方式就是取弱学习器中预测最多的那一类作为我们的输出值,其次严格一点的投票方式是不但要输出预测最多的那一类的值,且该类的值要占到预测的值的一半以上,最后还有对每个弱学习器赋予权重,对于最终的投票计算会乘以对应的权重(比如选举时班长的一票顶五票,而普通学生一票就只是一票)。

 3)学习法

  对于平均法和投票法相对比较简单,有时候在预测时可能存在误差,于是就衍生出了学习法,例如stacking,当使用stacking时是将所有弱学习器的输出作为输入,在这基础上再建立一个模型,让机器自己去学习输出方式,有时候我们会训练多个强学习器,比如将训练一个随机森林的学习器,再训练一个Adaboost的学习器,然后将这两个学习器的弱学习器的输出作为输入(这样我们就有两条输入数据),训练一个用于最终预测的学习器来输出结果。

 5、Adaboost和RandomForest对比

 Adaboost算法常用的弱学习器是决策树和神经网络(理论上可以用任何学习器作为基学习器)。对于决策树,Adaboost分类用了CART分类树,Adaboost回归用了CART回归树。

 Adaboost的主要优点:

  1)Adaboost作为分类器时,分类精度很高

  2)在Adaboost的框架下,可以使用各种分类回归模型来构建基学习器

  3)作为简单的二分类问题,构建简单,结果可理解

  4)不容易发生过拟合

  Adaboost的主要缺点:

  1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习其的预测准确性

  2)Adaboost只能做二分类问题,要做多分类问需要做其他的变通

 RandomForest算法常用的弱学习器也是决策树和神经网络,对于决策树,在随机森林中也是使用CART分类回归树来处理分类回归问题,通常采用投票法和平均法来决定最后的输出,

 随机森林的主要优点:

  1)训练可以高度并行化,因此算法的速度要选快于Adaboost。

  2)由于随机子特征集,因此在高维特征下,算法仍具有较好的效率

  3)在训练后可以给出各个特征对输出的重要性

  4)由于随机采样,训练出的模型的方差小,泛化能力强

  5)算法实现起来比Boosting更简单

  6)对部分特征缺失不敏感

  随机森林的主要缺点:

  1)在某些噪声比较大的样本集上,RF模型容易陷入过拟合

  2)取值比较多的特征容易影响随机森林的决策,影响模型的拟合效果

  相关解决方案