机器学习笔记05——集成学习

集成学习

集成学习正是使用多个个体学习器来获得比每个单独学习器更好的预测性能。监督学习的任务是通过假设空间搜索来找到能够对特定问题给出良好预测的假设。

但问题是即使这样的假设存在,能否找到也在两可之间。因而集成学习的作用就是将多个可以得到假设整合为单个更好的假设,其一般结构是先产生一组个体学习器,再使用某种策略将它们加以整合。

每个组中的个体学习器如果属于同一类型(比如都是线性回归或者都是决策树),形成的就是同质集成;相应地,由不同类型学习器得到的集成则称为异质集成。

但是所谓的集成,对于集成的各个个体首先就是个体的不能有太高的错误率,否则集成后很可能放大了错误。其次就是个体间要有一定差异性,这样才能取长补短获得更好的效果。

个体学习器的生成方式很大程度上取决于数据的使用策略。根据训练数据使用方法的不同,集成学习方法可以分为两类:个体学习器间存在强依赖关系因而必须串行生成的序列化方法,和个体学习器之间不存在强依赖关系因而可以同时生成的并行化方法

序列化方法中的数据使用机制被称为提升(Boosting),其基本思路是对所有训练数据进行多次重复应用,每次应用前需要对样本的概率分布做出调整,以达到不同的训练效果。

与 Boosting 相比,并行化方法中的数据使用机制是将原始的训练数据集拆分成若干互不交叠的子集,再根据每个子集独立地训练出不同的个体学习器。这种方法被称为自助聚合(Bootstrap AGgregation),简称打包(Bagging)。在 Bagging 机制中,不同个体学习器之间的多样性容易得到保证;但由于每个个体学习器只能使用一小部分数据进行学习,其效果就容易出现断崖式下跌。

Adaptive Boosting

典型的序列化学习算法是自适应提升方法(Adaptive Boosting),人送绰号 AdaBoost。在解决分类问题时,提升方法遵循的是循序渐进的原则。先通过改变训练数据的权重分布,训练出一系列具有粗糙规则的弱个体分类器,再基于这些弱分类器进行反复学习和组合,构造出具有精细规则的强分类器。从以上的思想中不难看出,AdaBoost 要解决两个主要问题:训练数据权重调整的策略和弱分类器结果的组合策略。

在训练数据的权重调整上,AdaBoost 采用专项整治的方式。在每一轮训练结束后,提高分类错误的样本权重,降低分类正确的样本权重。因此在下一轮次的训练中,弱分类器就会更加重视错误样本的处理,从而得到性能的提升。这就像一个学生在每次考试后专门再把错题重做一遍,有针对性地弥补不足。虽然训练数据集本身没有变化,但不同的权重使数据在每一轮训练中发挥着不同的作用。

在 AdaBoost 的弱分类器组合中,每一轮得到的学习器结果都会按照一定比例叠加到前一轮的判决结果,并参与到下一轮次权重调整之后的学习器训练中。当学习的轮数达到预先设定的数目 T 时,最终分类器的输出就是 T 个个体学习器输出的线性组合。每个个体学习器在最终输出的权重与其分类错误率相关,个体学习器中的分类错误率越低,其在最终分类器中起到的作用就越大。

但需要注意的是,所有个体学习器权重之和并不必须等于 1。根据以上的主要策略,可以归纳出算法的特点。随着训练过程的深入,弱学习器的训练重心逐渐被自行调整到的分类器错误分类的样本上,因而每一轮次的模型都会根据之前轮次模型的表现结果进行调整,这也是 AdaBoost 的名字中“自适应”的来源。

随机森林方法

随机森林就是对多个决策树模型的集成。“随机”的含义体现在两方面:一是每个数据子集中的样本是在原始的训练数据集中随机抽取的,这在前文中已有论述;二是在决策树生成的过程中引入了随机的属性选择。在随机森林中,每棵决策树在选择划分属性时,首先从结点的属性集合中随机抽取出包含 k 个属性的一个子集,再在这个子集中选择最优的划分属性生成决策树。

为什么要执行随机的属性选择呢?其目的在于保证不同基决策树之间的多样性。如果某一个或几个属性对输出的分类结果有非常强的影响,那么很可能所有不同的个体决策树都选择了这些属性,这将导致不同子集上训练出个体决策树呈现出众口一辞的同质性,对原始训练样本的有放回随机抽取也就失去了意义。

在这个意义上,随机特征选取是对集成学习算法中多样性的一重保护措施。在合成策略上,随机森林通常采用少数服从多数的策略,选择在个体决策树中出现最多的类别标记作为最终的输出结果。当数据较多时,也可以采用更加强大的学习法,即通过另一个单独的学习器实现复杂合成策略的学习。随机森林是罕有的具有强通用性的机器学习方法,能够以较小的计算开销在多种现实任务中展现出强大的性能。数据使用机制的不同在泛化误差的构成上也有体现。

以 Boosting 方法为代表的序列化方法使用了全体训练数据,并根据每次训练的效果不断迭代以使损失函数最小化,因而可以降低平均意义上的偏差,能够基于泛化能力较弱的学习器构建出较强的集成。

以 Bagging 方法为代表的并行化方法则利用原始训练数据生成若干子集,因而受异常点的影响较小,对在每个子集上训练出的不完全相关的模型取平均也有助于平衡不同模型之间的性能,因而可以一定程度上降低方差。

猜你喜欢

转载自blog.csdn.net/david2000999/article/details/124849491