百面机器学习(12)——集成学习

目录

集成学习的种类(Boosting,bagging, 基分类器)

集成学习的步骤和例子

基分类器(方差-偏差关系,随机森林,基分类器)

偏差与方差

梯度提升决策树的基本原理

XGBoost与GBDT的联系和区别


集成学习的种类(Boosting,bagging, 基分类器)

1. 集成学习分哪几种?它们有何异同?(1)

Boosting

Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。

它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。 测试时,根据各层分类器的结果的加权得到最终结果。

Bagging

Bagging 与 Boosting 的串行训练方式不同,Bagging 方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。其中很著名的算法之一是基于决策树基分类器的随机森林(Random Forest)。为了让基分类器之间互相独立,将训练集分为若干子集(当训练样本数量较少时,子集之间可能有交叠)。 Bagging方法更像是一个集体决策的过程,每个个体都进行单独学习,学习的内容可以相同,也可以不同,也可以部分重叠。 但由于个体之间存在差异性,最终做出的判断不会完全一致。 在最终做决策时,每个个体单独作出判断,再通过投票的万式做出最后的集体决策。

基分类器的错误,是偏差和方差两种错误之和。偏差主要是由于分类器的表达能力有限导致的系统性错误,表现在训练误差不收敛。方差是由于分类器对于样本分布过于敏感,导致在训练样本数较少时,产生过拟台。

Boosting方法时通过逐步聚焦于基分类器分错的样本,减小集成分类器的偏差;Bagging方法则是采取分而治之的策略,通过对训练样本多次采样,并分别训练出多个不同的模型,然后做综合,来减小集成分类器的方差。

 

集成学习的步骤和例子

1. 集成学习有哪些基本步骤?请举几个集成学习的例子(2)

集成学习一般可分为以下3个步骤:

1)找到误差互相独立的基分类器

2)训练基分类器

3)合并基分类器的结果

合并基分类器的方法有voting和stacking两种。前者是用投票的方式,将获得最多投票的结果作为最终的结果。后者是用串行的方式,把前一个基分类器的结果输出到下一个分类器,将所有的基分类器的输出结果相加(或者用更复杂的算法融合,比如把各基分类器的输出作为特征,使用逻辑回归作为融合模型进行最后的结果预测)作为最后的输出。

 

基分类器(方差-偏差关系,随机森林,基分类器)

1. 常用的基分类器是什么(1)

常用的基分类器是决策树,主要有以下3个方面的原因。

1)决策树可以较为方便地将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重。

2)决策树的表达能力和泛化能力,可以通过调节树的层数来做折中。

3)数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类器随机性较大,这样的“不稳定学习器” 更适合作为基分类器。此外,在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性,很好地引入了随机性。

 

除了决策树外,神经网络模型也适合作为基分类器,主要由于神经网络模型也比较“不稳定” , 而且还可以通过调整神经元数量、 连接方式、 网络层鼓、初始权值等方式引入随机性。

 

2. 可否将随机森林中的基分类器,由决策树替换为线性分类器或K-近邻?请解释为什么?(2)

随机森林属于 Bagging 类的集成学习。Bagging 的主要好处是集成后的分类器的方差, 比基分类器的方差小。Bagging 所采用的基分类器,最好是本身对样本分布较为敏感的(即所谓不稳定的分类器),这样 Bagging 才能有用武之地。 线性分类器或者 K-近邻都是较为稳定的分类器,本身方差就不大,所以以它们为基分类器使用 Bagging 并不能在原有基分类器的基础上获得更好的表现,甚至可能因为 Bagging的采样,而导致他们在训练中更难收敛,从而增大了集成分类器的偏差。

 

偏差与方差

我们经常用过拟台、欠拟合来定性地描述模型是否很好地解决了特定的问题。 从定量的角度来说,可以用模型的偏差( Bias )与方差( Variance )来描述模型的性能。

1. 什么是偏差和方差?(2)

在有监督学习中,模型的泛化误差来源于两个方面——偏差和方差,具体来讲它们的定义如下:

偏差指的是由所有采样得到的大小为 m 的训练数据集训练出的所有模型的输出的平均值和真实模型输出之间的偏差。偏差通常是由于我们对学习算法做了错误的假设所导致的,比如真实模型是某个二次函数,但我们假设模型是一次函数。 由偏差带来的误差通常在训练误差上就能体现出来。

方差指的是由所有采样得到的大小为 m 的训练数据集训练出的所有模型的输出的方差。方差通常是由于模型的复杂度相对于训练样本数 m过高导致的,比如一共有 100 个训练样本,而我们假设模型是阶数不大于 200 的多项式函数。 由方差带来的误差通常体现在测试误差相对于训练误差的增量上。

我们用一个射击的例子来进一步描述这二者的区别和联系。 假设一次射击就是一个机器学习模型对一个样本进行预测。射中靶心位置代表预测准确,偏离靶心越远代表预测误差越大。我们通过 n 次采样得到 n 个大小为 m 的训练样本集合,训练出 n 个模型,对同一个样本做预测,相当于我们做了 n 次射击,射击结果如下图,我们最期望的结果就是左上角的结果,射击结果又准确又集中,说明模型的偏差和方差都很小;右上图虽然射击结果的中心在靶心周围,但分布比较分散,说明模型的偏差较小但方差较大;同理,左下图说明模型方差较小,偏差较大;右下图说明模型方差较大,偏差也较大。

2. 如何从减小方差和偏差的角度解释Boosting和Bagging的原理?(3)

对 n 个独立不相关的模型的预测结果取平均,方差是原来单个模型的1/n,所以Bagging减低了模型的方差。

对于Boosting,在训练好一个弱分类器后,我们需要计算弱分类器的错误或者残差,作为下一个分类器的输入。这个过程本身就是在不断减小损失函数,来使模型不断逼近“靶心”,使得模型偏差不断降低。但Boosting的过程并不会显著降低方差。这是因为 Boosting 的训练过程使得各弱分类器之间是强相关的,缺乏独立性,所以并不会对降低方差有作用。

关于泛化误差、偏差、方差和模型复杂度的关系如下图12.5所示。

不难看出,方差和偏差是相辅相成,矛盾又统一的,二者并不能完全独立的存在。 对于给定的学习任务和训练数据集,我们需要对模型的复杂度做合理的假设。如果模型复杂度过低,虽然方差很小,但是偏差会很高;如果模型复杂度过高,虽然偏差降低了,但是方差会很高。 所以需要综合考虑偏差和方差选择合适复杂度的模型进行训练。

 

梯度提升决策树的基本原理

梯度提升决策树( Gradient Boosting Decision Tree , GBDT )是 Boosting 算法中非常流行的模型,也是近来在机器学习竞赛、商业应用中表现都非常优秀的模型。 GBDT非常好地体现了 “从错误中学习”的理念,基于决策树预测的残差进行迭代的学习。

1. GBDT的基本原理是什么?(2)

Gradient Boosting 是 Boosting 中的一大类算法,其基本思想是根据当前模型损失函数的负梯度信息来训练新加入的弱分类器,然后将训练好的弱分类器以累加的形式结合到现有模型中。算法1描述了Gradient Boosting 算法的基本流程,在每一轮迭代中,首先计算出当前模型在所有样本上的负梯度,然后以该值为目标训练一个新的弱分类器进行拟合并计算出该弱分类器的权重,最终实现对模型的更新。

2. 梯度提升和梯度下降的区别和联系是什么?(2)

表 12. 1 是梯度提升算法和梯度下降算法的对比情况。可以发现,两者都是在每一轮迭代中,利用损失函数相对于模型的负梯度方向的信息来对当前模型进行更新,只不过在梯度下降中,模型是以参数化形式表示,从而模型的更新等价于参数的重新。 而在梯度提升中,模型并不需要进行参数化表示,而是直接定义在函数空间中,从而大大扩展了可以使用的模型种类。

3. GBDT的优点和局限性有哪些?(2)

优点
1) 预测阶段的计算速度快,树与树之间可并行化计算。

2) 在分布稠密的数据集上,泛化能力和表达能力都很好,这使得 GBDT 在 Kaggle 的众多竞赛中,经常各列榜首。

3) 采用决策树作为弱分类器使得 GBDT 模型具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系,并且也不需要对数据进行特殊的预处理如归一化等。

局限性

1)GBDT 在高维稀疏的数据集上,表现不如支持向量机或者神经网络。

2)GBDT 在处理文本分类特征问题上,相对其他模型的优势不如它在处理数值恃征时明显。

3)训练过程需要串行训练,只能在决策树内部采用一些局部并行的手段提高训练速度。

 

XGBoost与GBDT的联系和区别

XGBoost 是陈天奇等人开发的一个开源机器学习项目,高效地实现了 GBDT 算法并进行了算法和工程上的许多改进,被广泛应用在 Kaggle 竞赛及其他许多机器学习竞赛中并取得了不错的成绩。

1. XGBoost与GBDT的联系和区别有哪些?(3)

在算法和工程实现上都有不同,基本概括如下几个方面:

1)GBDT 是机器学习算法, XGBoost 是该算法的工程实现。

2)在使用 CART 作为基分类器时,XGBoost 显式地加入了正则项来控制模型的复杂度,有利于防止过拟台,从而提高模型的泛化能力。

3)GBDT 在模型训练时只使用了代价函数的一阶导数信息,XGBoost 对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。

4)传统的 GBDT 采用 CART 作为基分类器,XGBoost 支持多种类型的基分类器,比如线性分类器。

5)传统的 GBDT 在每轮迭代时使用全部的数据,XGBoost 则采用了与随机森林相似的策略,支持对数据进行采样。

6)传统的GBDT没有设计对缺失值进行处理,XGBoost 能够自动学习出缺失值的处理策略。

 

 

后记

从开始接触《百面机器学习》,当把全部章节看完,觉得这本书写的特别深入浅出,把很多机器学习的基础知识给串联起来了,虽然用电子书阅读完毕,仍然忍不住入手纸质版书本,好书就需要多看!

百面系列链接:

百面机器学习(2)——模型评估

百面机器学习(3)——经典算法

百面机器学习(4)——降维

百面机器学习(5)——非监督学习

百面机器学习(6)——概率图模型

百面机器学习(7)——优化算法

百面机器学习(8)——采样

百面机器学习(9)——前向神经网络

百面机器学习(10)——循环神经网络

百面机器学习(11)——强化学习

百面机器学习(12)——集成学习

百面机器学习(13)——生成式对抗网络

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Briwisdom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值