百面机器学习之第12章 集成学习

编程入门 行业动态 更新时间:2024-10-28 01:18:55

百面<a href=https://www.elefans.com/category/jswz/34/1771242.html style=机器学习之第12章 集成学习"/>

百面机器学习之第12章 集成学习

1.集成学习的种类

集成学习分哪几种?他们有何异同?

        1.Boosting 

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

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

        2.Bagging

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


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

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

        Bagging和Boosting的区别:

        1)样本选择上

        Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

        Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

        2)样例权重

        Bagging:使用均匀取样,每个样例的权重相等

        Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大

        3)预测函数

        Bagging:所有预测函数的权重相等

        Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

        4)并行计算

        Bagging:各个预测函数可以并行生成

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

2.集成学习的步骤和例子

集成学习有哪些基本步骤?请举几个例子?

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

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

        (2)训练基分类器

        (3)合并基分类器的结果

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

        以Adaboost为例,其基分类器的训练和合并的基本步骤如下:

        (1)确定基分类器:这里可以选取ID3决策树作为基分类器。

        (2)训练基分类器:假设训练集为{x_i,y_i},i=1,...,N,并且有T个基分类器。则按照以下过程训练基分类器。

并将它归一化为一个概率分布函数。

        (3)合并基分类器:给定一个未知样本z,输出分类结果为加权投票的结果。

 从AdaBoost可以明显看到Boosting的思想,对分类正确的样本降低了权重,对分类错误的样本升高或者保持权重不变。在最后进行权重融合的过程中,也根据错误率对基分类器进行加权融合,错误率低的分类器拥有更大的话语权。

        另一个流行的模型是梯度提升决策树(GBDT),其核心思想是,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。

3.基分类器

常用的基分类器是什么?

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

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

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

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

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

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

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

4.偏差与方差 

什么是偏差和方差?

        偏差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的平均值和真实模型输出之间的偏差。偏差通常是由于我们对学习算法做了错误的假设所导致的。由偏差带来的误差通常体现在训练误差上。(高偏差低方差-欠拟合)

        方差指的是所有采样得到的大小为m的训练数据集训练出的所有模型的输出的方差。方差通常是由于模型的复杂度相对于训练样本树m过高导致的。有方差带来的误差通常体现在测试误差相对于训练误差的增量上。(高方差-过拟合)

 如何从减小方差和偏差的角度解释Boosting和Bagging的原理

         Bagging能够提高弱分类器性能的原因是降低了方差,Boosting能够提升弱分类器性能的原因是降低了偏差。

        通过训练集的重采样也能够带来弱分类器之间的一定独立性,从而降低Bagging后模型的方差。

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

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

GBDT的基本原理是什么?

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

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

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

梯度提升函数空间 F
梯度下降参数空间 W

GBDT的优点和局限性有哪些?

        优点:

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

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

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

        局限性:

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

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

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

6.XGBoost与GBDT的联系和区别

 XGBoost与GBDT的联系和区别有哪些?

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

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

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

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

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

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

更多推荐

百面机器学习之第12章 集成学习

本文发布于:2024-03-06 11:29:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715210.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:机器

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!