集成学习简单讲解

个体与集成

在机器学习中,集成学习是一种通过结合多个学习器(即个体学习器)来构建更强大模型的技术。个体学习器是指基本的、弱的学习算法,而集成学习通过组合这些个体学习器的预测结果,从而获得更准确、更稳定的预测结果。

个体学习器可以是同质的(即使用相同的学习算法,但在不同的训练集上训练)或者异质的(使用不同的学习算法或者在不同的特征子集上训练)。集成学习可以通过多种方式组合个体学习器的预测结果,其中最常见的方法包括投票法(Voting)、平均法(Averaging)、堆叠法(Stacking)等。

 

集成学习的优势在于通过结合多个学习器来获得比单一学习器更好的泛化性能,尤其是在使用弱学习器时效果更为明显。弱学习器通常指的是在某个学习任务上略优于随机猜测的学习器,而集成学习的理论研究大多针对弱学习器展开。在实践中,人们有时候会使用比较强的学习器,这可能是因为希望减少个体学习器的数量或者利用对常见学习器的经验。

集成学习中的一个基本原理是“集大成者”的概念,即将各个学习器的判断综合起来,取多数票或者加权平均等方式来得到最终结果。这种综合的方法通常能够比单一学习器更好地泛化到新的数据上。在实际应用中,个体学习器的“好而不同”是很重要的,即个体学习器应该在某种程度上具有准确性,而且彼此之间要有差异性。这样的多样性可以确保集成学习能够综合各个学习器的优点,避免了“坏掉的笼子里的鸟将会变得更糟”的情况。

在集成学习中,一个关键的假设是个体学习器的误差应该相互独立。然而,在实际任务中,个体学习器是为解决同一个问题而训练的,它们之间并不是完全独立的。这意味着个体学习器之间的准确性和多样性存在一定的冲突,即要提高多样性就需要牺牲一定的准确性,反之亦然。

为了解决这种冲突,集成学习方法可以分为两大类:序列化方法和并行化方法。序列化方法中,个体学习器之间存在强依赖关系,必须按顺序生成。Boosting 是典型的序列化方法,它通过训练一系列的弱学习器,每个学习器都专注于修正前面学习器的错误,从而提高整体模型的性能。

另一类是并行化方法,个体学习器之间不存在强依赖关系,可以同时生成。Bagging 和随机森林就属于这一类方法。Bagging通过随机抽样生成多个训练集,然后用每个训练集训练一个学习器,最后将它们结合起来。随机森林是Bagging的一个扩展,它在构建每个学习器时引入了随机特征选择,进一步增加了学习器之间的多样性。

 Boosting

Boosting 是一种集成学习方法,通过串行生成一系列的弱学习器(通常是决策树),每个学习器都专注于修正前面学习器的错误,从而提高整体模型的性能。Boosting 的核心思想是在训练过程中对样本分布进行调整,使得前一个学习器分错的样本在下一个学习器中得到更多的关注,从而逐步提高模型的性能。

下面是 Boosting 的一般流程:

  1. 初始化样本权重:开始时,所有样本的权重相等。

  2. 对于每个弱学习器:

    a. 根据当前样本权重训练一个弱学习器。

    b. 计算该学习器在训练集上的错误率。

    c. 更新样本权重:增加错误分类的样本的权重,减少正确分类的样本的权重。

  3. 最终模型的预测结果是所有弱学习器预测结果的加权和,权重取决于每个学习器的性能。

Boosting 的一个典型算法是 AdaBoost(Adaptive Boosting)

oosting 算法要求基学习器能对特定的数据分布进行学习。为了实现这一点,Boosting 可以采用两种方法之一:重赋权法和重采样法。

  1. 重赋权法:在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。这样可以让基学习器更关注那些之前被错分类的样本,从而提高整体模型的性能。

  2. 重采样法:对于无法接受带权样本的基学习算法,可以通过重采样法处理。在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练。

这两种方法在实践中没有显著的优劣差别,选择哪种方法取决于具体情况和基学习器的要求。

另外,需要注意的是,Boosting 算法在训练的每一轮都要检查当前生成的基学习器是否满足基本条件(如是否比随机猜测好)。一旦条件不满足,则当前基学习器被抛弃,学习过程停止。在这种情况下,可能导致最终集成中只包含很少的基学习器而性能不佳。为了避免这种情况,可以采用重启动机制,即在抛弃不满足条件的当前基学习器之后,重新对训练样本进行采样,并重新训练出基学习器,使得学习过程可以持续到预设的轮数完成。

从偏差和方差的角度来看,Boosting 主要关注降低偏差,因此能够基于泛化性能相当弱的学习器构建出很强的集成。

Bagging 与随机森林

为了使得集成中的个体学习器具有较大的差异性,一种常见的做法是对训练样本进行采样,产生若干个不同的子集,然后从每个子集中训练出一个基学习器。这样,由于训练数据的不同,每个基学习器之间的差异性较大,有利于提高集成的泛化能力。

然而,为了获得好的集成,我们同时也希望个体学习器不能太差。如果采样出的每个子集都完全不同,那么每个基学习器只能用到一小部分训练数据,可能不足以进行有效的学习,这样就无法确保产生出比较好的基学习器。

为了解决这个问题,我们可以考虑使用相互有交叠的采样子集。也就是说,每个子集中的样本并不完全独立,而是有一定的重叠部分。这样做的好处是,每个基学习器可以在一定程度上共享训练数据,既能保证每个学习器用到足够的数据进行学习,又能保持学习器之间的差异性。

采用相互有交叠的采样子集可以在一定程度上平衡个体学习器之间的差异性和泛化能力,是一种常用的提高集成学习效果的方法。

Bagging

Bagging(Bootstrap Aggregating)是一种集成学习方法,旨在提高分类器的准确性和稳定性。它的基本思想是通过对原始训练集进行有放回抽样(bootstrap采样)产生多个不同的训练集,然后基于每个训练集训练一个基学习器,最后将这些基学习器的预测结果进行结合。

下面是 Bagging 的基本流程:

  1. 从原始训练集中使用有放回抽样的方法,生成多个大小与原始训练集相同的新训练集(bootstrap样本)。

  2. 对于每个新训练集,使用相同的学习算法(通常是决策树)训练一个基学习器。

  3. 对于分类问题,将所有基学习器的预测结果进行投票,选择得票最多的类别作为最终预测结果;对于回归问题,将所有基学习器的预测结果进行平均。

Bagging 的优点在于能够降低模型的方差,提高模型的稳定性和泛化能力。由于每个基学习器都是在不同的训练集上训练的,它们之间的差异性较大,可以互相纠正错误,减少过拟合的风险。

随机森林

随机森林(Random Forest)是一种集成学习方法,通过组合多个决策树来完成分类或回归任务。它是 Bagging 的一种扩展形式,在训练每棵树时引入了更多的随机性,以增加模型的多样性和稳健性。

下面是随机森林的基本思想和流程:

  1. 随机采样:从原始训练集中使用有放回抽样的方法,生成多个大小相同的训练子集。这个过程保证了每棵决策树训练时使用的数据都是不同的,增加了模型的多样性。

  2. 随机特征选择:在每个节点的决策过程中,随机选择一部分特征进行评估,而不是考虑所有特征。这样做可以增加每棵树之间的差异性,减少了特定特征对最终结果的影响,提高了模型的泛化能力。

  3. 构建决策树:使用每个训练子集和随机选择的特征,构建一棵决策树。通常采用 CART(Classification and Regression Trees)算法来构建决策树。

  4. 投票或平均:对于分类问题,随机森林中的每棵决策树都会对样本进行分类,最后通过投票的方式确定最终的分类结果;对于回归问题,每棵决策树都会给出一个预测值,最终结果是所有决策树预测值的平均值。

随机森林的优点包括:

  • 可以处理大量的输入特征,并且不需要特征缩放。
  • 在处理缺失数据和不平衡数据时表现较好。
  • 具有很高的准确性和泛化能力,不容易过拟合。

随机森林的缺点包括:

  • 随机森林中的模型结构较为复杂,不太容易解释。
  • 对于包含大量类别特征的数据集,随机森林可能会出现偏向少数类别的情况。

综合策略

多个学习器结合的优势

  1. 统计方面的好处:在一个学习任务中,可能有多个假设在训练集上表现相似,但在真实数据上的表现不同。如果只使用单个学习器,可能会选择到一个在训练集上表现良好但在真实数据上表现不佳的假设。而结合多个学习器可以减小这种误选的风险,因为多个学习器的综合意见可以更全面地覆盖不同的假设。

  2. 计算方面的好处:许多学习算法容易陷入局部极小值,这些局部极小值可能对应着泛化性能很差的模型。通过多次运行学习算法并结合多个学习器的结果,可以降低陷入局部极小值的风险,因为不同运行可能会收敛到不同的局部极小值,综合考虑可以更接近全局最优解。

  3. 表示方面的好处:某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中。如果只使用单个学习器,可能无法学习到有效的模型。但通过结合多个学习器,由于考虑的假设空间有所扩大,可能会学习到更好的近似模型,更接近真实的假设。

平均法

学习器结合的平均法是一种简单而有效的集成学习方法,其基本思想是将多个学习器的预测结果进行平均(或加权平均),作为最终的预测结果。这种方法适用于回归和分类问题。

对于回归问题,学习器结合的平均法会将多个学习器的预测值取平均作为最终预测值。假设有 N 个学习器,每个学习器的预测值分别为 y1, y2, ..., yN,则最终的预测值为 (y1 + y2 + ... + yN) / N。

对于分类问题,学习器结合的平均法会对多个学习器的预测结果进行投票或加权投票。假设有 N 个学习器,每个学习器的预测结果为类别 C1, C2, ..., CK 的概率或置信度,然后取概率或置信度最高的类别作为最终预测结果。如果使用加权投票,可以根据学习器的性能给予不同的权重。

学习器结合的平均法简单直观,容易实现,通常在集成学习中作为基线方法使用。然而,它也有一些局限性,比如对于不同性能的学习器,简单平均可能会导致性能较差的学习器对最终结果产生较大影响。

投票法

学习器结合的投票法是一种常用的集成学习方法,适用于分类问题。其基本思想是对多个学习器的预测结果进行投票,最终选择得票最多的类别作为最终的预测结果。

  1. 绝对多数投票法:也称为硬投票,在分类问题中,每个学习器对一个样本进行分类后,直接统计每个类别的票数,选择票数最多的类别作为最终预测结果。如果有 N 个学习器,对一个样本的分类结果分别为类别 0 和类别 1 的票数分别为 count0 和 count1,则最终结果为 count1 > count0 则为类别 1,否则为类别 0。

  2. 相对多数投票法:也称为软投票,在分类问题中,对于每个类别,计算所有学习器预测为该类别的概率或置信度的平均值,然后选择概率或置信度最高的类别作为最终预测结果。相对多数投票法考虑了学习器的预测概率或置信度,相比硬投票更加细致,能够更好地反映学习器的置信程度。

  3. 加权平均投票法:在加权平均投票法中,给每个学习器分配一个权重,根据学习器的性能或置信度决定权重大小。然后对每个类别的预测结果进行加权平均,选择加权平均值最高的类别作为最终预测结果。加权平均投票法可以根据实际情况调整不同学习器的重要性,提高模型的性能和稳定性。

学习法

学习法是一种集成学习方法,通过训练一个元学习器(meta-learner)来结合多个基学习器的预测结果。这种方法通常用于解决元学习(meta-learning)问题,其中目标是学习如何将多个学习器的输出结合起来以获得更好的性能。

学习器结合的学习法一般分为两个阶段:

  1. 基学习器训练阶段:首先,使用原始训练集训练多个基学习器。每个基学习器可以使用不同的学习算法或不同的参数设置,以增加学习器之间的多样性。训练完成后,基学习器可以对新的输入样本进行预测。

  2. 元学习器训练阶段:其次,使用一个元学习器来结合多个基学习器的预测结果。元学习器的输入是多个基学习器对同一样本的预测结果,输出是最终的集成预测结果。元学习器可以是一个简单的线性模型,也可以是一个复杂的神经网络模型,根据实际情况选择合适的模型。

在元学习器的训练过程中,通常会使用交叉验证技术来评估不同的集成方式,并选择最佳的集成策略。例如,可以使用留出法(hold-out)、交叉验证(cross-validation)或自助法(bootstrapping)等方法来评估元学习器的性能,并选择最优的参数设置。

学习器结合的学习法可以提高集成模型的性能和稳定性,尤其在处理复杂任务和大规模数据集时效果显著。然而,这种方法通常需要更多的计算资源和时间来训练和评估模型。

Stacking是一种元学习方法,通过将多个基学习器的预测结果作为次级学习器的输入来提高集成模型的性能。

在训练阶段,Stacking方法首先使用原始训练集训练多个基学习器。然后,使用交叉验证或留一法等方式,将训练集划分为多个子集,每个子集用于训练不同的基学习器。对于每个基学习器,使用它在训练集上的预测结果作为次级学习器的训练样本。这样可以避免过拟合,因为次级学习器的训练样本是由初级学习器在未使用的样本上产生的。

次级学习器的输入属性表示和次级学习算法对Stacking集成的泛化性能有很大影响。一种常用的方式是将初级学习器的输出类概率作为次级学习器的输入属性,并使用多响应线性回归(MLR)作为次级学习算法。在MLR中,使用不同的属性集可以提高Stacking集成的性能。

贝叶斯模型平均(BMA)方法,它基于后验概率为不同模型赋予权重,可以看作是加权平均法的一种特殊实现。然而,在实际应用中,由于无法确保数据生成模型一定在当前考虑的模型中,以及数据噪声等问题,Stacking通常优于BMA,因为Stacking具有更好的鲁棒性。

多样性

误差-分歧分解

误差分歧分解(Error Decomposition)是集成学习中一种常用的分析方法,用于理解集成模型的泛化性能。误差分歧分解将集成模型的泛化误差分解为偏差(bias)、方差(variance)和噪声(noise)三个部分,有助于揭示集成模型的优缺点以及改进模型性能的方向。

  1. 偏差(Bias):偏差度量了集成模型的预测值与真实值之间的差异,反映了模型本身的拟合能力。偏差较高的模型可能对训练数据拟合不足,无法很好地捕捉数据的规律,造成欠拟合。偏差通常由模型的复杂度决定,复杂度越低,偏差越高。

  2. 方差(Variance):方差度量了同样大小的不同训练数据集训练的模型之间的差异,反映了模型对训练数据的敏感程度。方差较高的模型在不同训练数据集上的表现差异较大,可能会导致过拟合。方差通常由模型的复杂度和训练数据的变化性决定,复杂度越高、训练数据的变化性越大,方差越高。

  3. 噪声(Noise):噪声表示了训练数据中包含的不可避免的随机误差,反映了数据本身的随机性和噪声水平。噪声是模型无法消除的部分,可以看作是模型在理想情况下能达到的最低误差。

多样性度量

多样性度量(Diversity Measure)用于衡量集成学习中不同学习器之间的差异性或多样性。多样性度量可以帮助我们理解集成模型中学习器之间的关系,指导如何设计和构建更有效的集成模型。

常用的多样性度量包括:

  1. 分类错误率(Classification Error):度量集成中不同学习器在分类任务中的错误率。分类错误率越大,表示学习器之间越不相关,多样性越高。

  2. Kappa 统计量:Kappa 统计量考虑了分类结果中由于随机因素导致的误差,因此可以更准确地评估学习器之间的一致性和多样性。

  3. Q 统计量:Q 统计量也是一种用于度量分类器之间一致性的指标,通常用于二分类问题。

  4. 距离度量:距离度量包括欧氏距离、曼哈顿距离等,用于衡量学习器在输出空间上的差异性。距离越大,表示学习器之间越不相关,多样性越高。

  5. 相关系数(Correlation Coefficient):衡量集成中不同学习器之间的相关性。相关系数越接近0,表示学习器之间越不相关,多样性越高。

  6. Kullback-Leibler 散度(Kullback-Leibler Divergence):衡量两个概率分布之间的差异,用于度量集成中学习器输出的差异性。

多样性增强

在集成学习中,多样性指的是集成模型中个体学习器之间的差异程度。增强多样性是指通过引入随机性或其他方法,在训练过程中生成多样性大的个体学习器。以下是常用的增强多样性的方法:

  1. 数据样本扰动:通过从初始数据集中产生不同的数据子集,然后利用这些不同的数据子集训练出不同的个体学习器。常见的方法包括自助采样(Bootstrap Sampling)和序列采样(Sequential Sampling)。

  2. 输入属性扰动:训练样本通常由一组属性描述,不同的属性子空间提供了不同的数据视角。随机子空间算法(Random Subspace)依赖于输入属性扰动,从初始属性集中抽取出若干个属性子集,然后基于每个属性子集训练一个基学习器。

  3. 输出表示扰动:对训练样本的类标记稍作变动,如随机改变一些训练样本的标记,或者将分类输出转化为回归输出后构建个体学习器。还可以将原任务拆解为多个可同时求解的子任务,如使用纠错输出码(Error Correcting Output Codes)将多分类任务拆解为一系列二分类任务来训练基学习器。

  4. 算法参数扰动:通过随机设置不同的参数,往往可以产生差别较大的个体学习器。例如,可以使用负相关法(Negative Correlation)通过正则化项来强制个体神经网络使用不同的参数。

  5. 其他扰动方法:还有一些其他的扰动方法,如对训练过程中某些环节使用其他类似方式代替,从而达到扰动的目的。例如,可以将决策树使用的属性选择机制替换成其他的属性选择机制。

多样性增强方法的选择取决于具体的问题和基学习器的性质。通常情况下,组合多种方法可以获得更好的效果。

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值