当前位置:   article > 正文

机器学习基础:模型集成/集成学习_基分类器

基分类器

目录

1. 什么是集成学习

1.1 分类器集成的结果

1.2 构造基分类器的三种方法

1.3 多个基分类器如何进行分类

2. 分析预测模型的泛化误差

3. 分类器集成方法

3.1 装袋法 Bagging(实例操作)

3.2 随机森林法 Random Forest(特征操作)

3.3 演进法 Boosting(算法操作)

3.3.1 演进法实例:AdaBoost

3.3.2 装袋法/随机森林和演进法对比

3.4 堆叠法 Stacking


1. 什么是集成学习

集成学习原名为Classifier combination / ensemble learning,它是根据训练数据构造一组基分类器(base classifier),通过聚合每个基分类器的输出来进行分类。

基分类器,就是一个小的分类器,单个基分类器的性能取决于它选择的分类算法和训练集。

对于单个性能比较弱的基分类器,我们称为弱分类器

对于单个性能比较强的基分类器,我们称为强分类器

多个基分类器集成的思想源于下列直觉

  • 考虑到几个基分类器的分类意见,而不是仅仅依靠一个基分类器的意见 。
  • 许多弱分类器的组合至少可以和一个强分类器一样好。
  • 一些强分类器的组合(通常)至少和基分类器中最好的一个一样好。

1.1 分类器集成的结果

多个分类器集成后的性能一定更好吗?我们带着这个疑问来看下面的例子:

C_{1}, C_{2}, C_{3} 分别代表了3个基分类器,C^{*} 表示的是三个分类器的结合的最终结果:

由结果可以看出,多个基分类器的集合不一定犹豫单个基分类器的性能,那么:

什么时候选择集成呢?

  • 基础分类器不会犯同样的错误。
  • 每个基础分类器都是相当准确的。

1.2 构造基分类器的三种方法

实例操作:通过抽样产生多个训练集,并在每个数据集上训练一个基础分类器。

特征操作:通过不同的特征子集生成多个训练集,并在每个数据集上训练一个基础分类器。

算法操作:半随机地调整给定算法中的内部参数,在给定的数据集上生成多个基础分类器。

1.3 多个基分类器如何进行分类

在多个基分类器上进行分类的最简单手段是投票

对于离散类,在测试集上运行多个基分类器,并选择由最多基分类器预测的类(少数服从多数)。例如一个二分类的数据集,label=0/1,构造了5个基分类器,对于某个样本有三个基分类器的输出结果是1, 两个是0那么这个时候,总和来看结果就应该是1。

对于连续数值类,对我们基分类器预测的数字进行平均,将平均数作为最终的预测结果。

2. 分析预测模型的泛化误差

从模型角度看:

  • Bias(偏置):衡量一个分类器进行错误预测的趋势。
  • Variance(变异度):衡量一个分类器预测结果的偏离程度。

如果一个模型有更小的BiasVariance 就代表这个模型的泛化性能很好。

3. 分类器集成方法

3.1 装袋法 Bagging(实例操作)

Bagging = bootstrap aggregating(自举汇聚法


装袋法思想源于数据越多,性能越好的直觉判断。


具体方法

通过随机抽样与替换相结合的方式构建新的数据集 。

将原始数据集进行有放回的随机采样N次,得到了N个数据集,针对这些数据集一共产生N个不同的基分类器。对于这N个分类器,让他们采用投票法来决定最终的分类结果。


例子:


袋装法存在的问题

因为袋装法是有放回的随机采样N次,那就有可能有些样本可能永远不会被随机到。因为N个样本,每个样本每次被取到的概率为\frac{1}{N},那么一共取N次没取到的概率为\left ( 1-\frac{1}{N} \right )^{N}这个值在N很大的时候的极限值\approx 0.37


装袋法的特点

  • 始终使用相同的基分类算法 
  • 减少预测的Variance(通过接受一些Bias)。
  • 对不稳定的分类器(训练集的微小变化会导致预测的巨大变化)有效
  • 可能会使稳定分类器的性能略有下降
  • 基于抽样(构造基分类器的三种方法中的实例操作)和投票的简单方法。
  • 多个单独的基分类器可以同步并行进行计算。
  • 可以有效的克服数据集中的噪声数据,因为异常值可能会消失(\approx 0.63)。
  • 性能通常比基分类器要好得多,只是偶尔会比基分类器差。

3.2 随机森林法 Random Forest(特征操作

随机森林法的基分类器是随机树:一棵决策树,但每个节点只考虑一些可能的属性。


可以通过下图回忆什么是决策树:


也就是说随机树使用的特征空间不是训练集全部的特征空间

  • 例如,采用一个固定的比例\tau来选择每个决策树的特征空间大小。
  • 随机森林中的每棵树的建立都比一个单独的决策树要简单和快速;但是这种方法增加了模型的 Variance

森林就是多个随机树的集合

  • 每棵树都是用不同的袋装训练数据集建立的。
  • 综合分类是通过投票进行的。


随机森林的超参数

树的数量B,可以根据“out-of-bag”误差进行调整。

特征子样本大小:随着它的增加,分类器的强度和相关性都增加 \left ( \left \lfloor log_{2}\left | F \right | + 1 \right \rfloor \right )。因为随机森林中的每棵树使用的特征越多,其与森林中其他树的特征重合度就可能越高,导致产生的随机数相似度越大。


可解释性:单个实例预测背后的逻辑可以通过多棵随机树共同决定。


随机森林的特点

  • 随机森林非常强大,可以高效地进行构建
  • 可以并行的进行。
  • 过拟合有很强的鲁棒性
  • 可解释性被牺牲了一部分,因为每个树的特征都是特征集合中随机选取的一部分。

3.3 演进法 Boosting(算法操作

演进法的思想源于调整基础分类器,使其专注于难以分类的实例的直觉判断。


具体方法

迭代地改变训练实例的分布和权重,以反映分类器在前一次迭代中的表现。

  • 从初始训练集训练出一个基学习器;这时候每个样本instance的权重都为\frac{1}{N}
  • 每个instance都会根据上一轮预测结果调整训练集样本的权重。
  • 基于调整后的训练集训练一个新的基学习器。
  • 重复进行,直到基学习器数量达到开始设置的值T
  • T个基学习器通过加权的投票方法(weighted voting)进行结合。

例子: 

 


对于boosting方法,有两个问题需要解决:

  • 每一轮学习应该如何改变数据的概率分布
  • 如何将各个基分类器组合起来

Boosting集成方法的特点

  • 他的基分类器是决策树或者 OneR 方法。
  • 数学过程复杂,但是计算的开销较小;整个过程建立在迭代的采样过程和加权的投票(voting)上。
  • 通过迭代的方式不断的拟合残差信息,最终保证模型的精度。
  • 比bagging方法的计算开销要大一些。
  • 在实际的应用中,boosting的方法略有过拟合的倾向(但是不严重)。
  • 可能是最佳的词分类器(gradient boosting)。


3.3.1 演进法实例:AdaBoost

Adaptive Boosting(自适应增强算法):是一种顺序的集成方法(随机森林和 Bagging 都属于并行的集成算法)。


具体方法

  • T个基分类器: C_{1},C_{2},...,C_{i},..,C_{T}
  • 训练集表示为\left \{ x_{i},y_{j}|j=1,2,...,N \right \}
  • 初始化每个样本的权重都为\frac{1}{N},即:\left \{ w_{j}^{(1)=\frac{1}{N}}|j=1,2,...,N \right \}

在每个iteration i 中,都按照下面的步骤进行:

1

计算错误率 error rate

\xi _{i}=\sum _{j=1}^{N} w_{j}^{(i)}\delta (C_{j}(x_{j})\neq y_{j})

\delta \left ( \right )是一个indicator函数,当函数的条件满足的时候函数值为1;即,当弱分类器C_{i}对样本x_{j}进行分类的时候如果分错了就会累积w_{j}

 2

使用\xi _{i}来计算每个基分类器C_{i}的重要程度(给这个基分类器分配权重\alpha _{i}

\alpha _{i}=\frac{1}{2}ln\frac{1-\varepsilon _{i}}{\varepsilon _{i}}

从这个公式也能看出来,当C_{i} 判断错的样本量越多,得到的\xi _{i}就越大,相应的\alpha _{i}就越小(越接近 0

3 

根据\alpha _{i}来更新每一个样本的权重参数,为了第i+1iteration做准备:

w_{j}^{(i+1)}=\frac{w_{j}^{(i)}}{Z^{(i)}}\times \left\{\begin{matrix} e^{-\alpha _{i}} &ifC_{i}(x_{j})=y_{j} \\ e^{\alpha _{i}} & ifC_{i}(x_{j})\neq y_{j} \end{matrix}\right.

样本j的权重由w_{j}^{(i)}变成w_{j}^{(i+1)}这个过程中发生的事情是:如果这个样本在第iiteration中被判断正确了,他的权重就会在原本w_{j}^{(i)}的基础上乘以e^{-\alpha _{i}};根据上面的知识\alpha _{i} > 0因此-\alpha _{i} < 0所以根据公式我们可以知道,那些被分类器预测错误的样本会有一个大的权重;而预测正确的样本则会有更小的权重。

Z^{(i)}是一个normalization项,为了保证所有的权重相加之和为1

4

最终将所有的C_{i}按照权重进行集成

 5

持续完成从i=2,...,T的迭代过程,但是当\varepsilon_{i} > 0.5的时候需要重新初始化样本的权重最终采用的集成模型进行分类的公式:

C^{*}(x)=argmax_{y}\sum _{i=1}^{T}\alpha _{i}\delta (C_{i}(x)=y)

这个公式的意思大概是:例如我们现在已经得到了3个基分类器,他们的权重分别是0.3, 0.2, 0.1所以整个集成分类器可以表示为:

C(x)=\sum _{i=1}^{T}\alpha _{i}C_{i}(x)=0.3C_{1}(x)+0.2C_{2}(x)+0.1C_{3}(x)

如果类别标签一共只有0, 1那就最终的C(x)对于0的值大还是对于1的值大了。

只要每一个基分类器都比随机预测的效果好,那么最终的集成模型就会收敛到一个强很多的模型。

3.3.2 装袋法/随机森林和演进法对比

装袋法和演进法的对比

BaggingBoosting
样本选择训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
 
每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
 
样例权重均匀取样,每个样例的权重相等。
 
根据错误率不断调整样例的权值,错误率越大则权重越大。
预测函数所有预测函数的权重相等。
 
每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
 
计序各个预测函数可以并行生成。

各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。


 装袋法/随机森林 以及演进法对比

Bagging/Random ForestBoosting
平行取样迭代抽样
简单投票加权投票
同质分类器同质分类器
最小化变异度最小化实例偏置
不容易过度拟合容易过度拟合 

3.4 堆叠法 Stacking

堆叠法的思想源于在不同偏置的算法范围内平滑误差的直觉。


方法:采用多种算法,这些算法拥有不同的偏置


在基分类器(level-0 model) 的输出上训练一个元分类器(meta-classifier)也叫level-1 model

  • 了解哪些分类器是可靠的,并组合基分类器的输出
  • 使用交叉验证来减少偏置

Level-0:基分类器

  • 给定一个数据集 ( X , y )
  • 可以是SVM, Naive Bayes, DT

Level-1:集成分类器

  • Level-0分类器的基础上构建新的attributes
  • 每个Level-0分类器的预测输出都会加入作为新的attributes;如果有MLevel-0分离器最终就会加入Mattributes
  • 删除或者保持原本的数据X
  • 考虑其他可用的数据(NB概率分数,SVM权重)
  • 训练meta-classifier来做最终的预测

可视化这个stacking过程:


stacking方法的特点

  • 结合多种不同的分类器
  • 数学表达简单,但是实际操作耗费计算资源
  • 通常与基分类器相比,stacking的结果一般好于最好的基分类器
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/166443
推荐阅读
相关标签
  

闽ICP备14008679号