第八章 集成学习

  1. 经典机器学习系列之【集成学习】 - 知乎 (zhihu.com)
  2. (46条消息) 集成学习(ensemble learning)原理详解_Soyoger的博客-CSDN博客
  3. (46条消息) 集成学习-Bagging原理与实现 西瓜书_西瓜书bagging_BIT_666的博客-CSDN博客
  4. AdaBoost算法 - 知乎 (zhihu.com)
  5. GBDT(梯度提升决策树)——来由、原理和python实现 - 知乎 (zhihu.com)
  6. 机器学习梯度提升算法的温和介绍 - MachineLearningMastery.com
  7. GBDT的原理、公式推导、Python实现、可视化和应用 - 知乎 (zhihu.com)
  8. XGBoost的原理、公式推导、Python实现和应用 - 知乎 (zhihu.com)
  9. (47条消息) 一文读懂 Bias(偏差)、Error(误差)、Variance(方差)_bias偏差_Suprit的博客-CSDN博客

一 集成学习概述


1.1 学习器


弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(error rate < 0.5),常见的弱学习器包括决策树、朴素贝叶斯分类器、支持向量机等

  1. **预测准确率较低:**弱学习器的预测结果可能比随机猜测稍好一些,但通常不能达到高准确率
  2. **可用于组合:**虽然单个弱学习器的预测能力有限,但可以通过组合多个弱学习器来提高整体预测准确率
  3. **训练速度较快:**弱学习器通常具有较简单的结构和较少的参数,因此训练速度较快

强学习器(Strong Learner)是指在机器学习中,具有较高预测能力的学习算法或模型。与弱学习器相比,强学习器的预测准确率更高,能够提供更可靠的预测结果,常见的强学习器包括神经网络、深度学习模型、支持向量机等

  1. **高预测准确率:**强学习器能够在训练数据和测试数据上都获得较高的预测准确率
  2. **复杂模型:**强学习器通常具有复杂的结构和较多的参数,能够更好地拟合训练数据的特征
  3. **训练速度较慢:**由于模型的复杂性,强学习器的训练过程可能需要更长的时间

同质集成中,个体学习器由相同的学习算法生成,个体学习器称为基学习器
异质集成中,个体学习器由不同的学习算法生成,个体学习器称为组件学习器


1.2 概述与优势


集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器

集成算法的成功在于保证弱分类器的多样性(Diversity)。而且集成不稳定的算法也能够得到一个比较明显的性能提升

常见的集成学习思想有:

  1. Bagging(套袋法)
  2. Boosting(提升)
  3. Stacking(堆叠)

集成学习器性能要好于单个个体学习器需要满足好而不同的两点要求:

  1. 个体学习器要好于随机猜测的结果
  2. 个体学习器要相互独立
  1. 第一个条件相对来说比较容易实现,在当前问题下训练一个模型,结果比瞎猜的结果好就行了
  2. 第二个条件是集成学习研究的核心问题。每个个体学习器学习的都是同一个问题,所以个体学习器不可能做到完全相互独立。下一小节我们具体阐述如何提高个体学习器的多样性

优势:

  1. 弱分类器间存在一定的差异性,这会导致分类的边界不同,也就是说可能存在错
    误。那么将多个弱分类器合并后,就可以得到更加合理的边界,减少整体的错误率,
    实现更好的效果

  2. 对于数据集过大或者过小,可以分别进行划分有放回的操作产生不同的数据子
    集,然后使用数据子集训练不同的分类器,最终再合并成为一个大的分类器

  3. 如果数据的划分边界过于复杂,使用线性模型很难描述情况,那么可以训练多个
    模型,然后再进行模型的融合

  4. 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一
    个分类模型,然后将多个模型融合

    异构的特征集指的是在机器学习任务中,输入数据中包含不同类型不同表示形式的特征。这些特征可能来自于不同的数据源、具有不同的数据类型或表示方式

1.3 增强基学习器多样性常用方法


想要在个体学习器足够好的前提下,增强其多样性好而不同解决,我们可以直观上来想象一下。整个的算法学习过程是从数据模型再到输出

  1. 首先考虑输入。如果每个学习器学习不同的样本,那么可以学习出相对来说不同的个体学习器。那么现在的问题就是怎么划分训练样本,你可以随机抽取,或者利用不同的属性子集训练出不同的个体学习器
  2. 其次考虑模型,如果基学习器的模型不一样,也能训练出不同的个体学习器
  3. 最后考虑输出,如果我们依据标签的特性来进行划分,也能得到不同的个体学习器
  1. 训练样本扰动:

原始训练样本中产生不同的样本子集,然后利用不同的样本子集训练不同的个体学习器。如Bagging中使用的自助采样Boosting中使用的序列采样

这种训练样本扰动的方法简单高效,但只对不稳定的基学习器有效,像**决策树神经网络等;对于稳定的基学习器**,如线性学习器支持向量机朴素贝叶斯K-NN等,就效果不明显,产生这个问题的原因就是因为稳定的基学习器,“变通能力”并不是很强

  1. 输入属性扰动:

RF算法解释:

RF在以**决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入随机属性。传统决策树在选择划分属性时是在当前结点的属性集合中选择一个最优属性**;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含n个属性的子集然后再从这个子集中选择一个最优属性用于划分

随机森林中基学习器多样性不仅来自样本扰动,还来自属性扰动,使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。

但这类输入属性扰动的方法只对大量冗余属性的数据集有效,但若数据集只包含少量属性,或者冗余属性很少,则不宜使用。随机森林由于起始引入了属性扰动性能会比Bagging差一点,但随着个体数量增多,随机森林通常会收敛到更低的泛化误差算法参数扰动:

  1. 算法参数扰动:

算法参数扰动指的是通过随机设置不同的参数来训练差别较大的个体学习器

  1. 输出标记扰动:

输出标记扰动是对训练样本的类别标记稍作变动,将原来的多分类问题随机转化多个二分类问题来训练基学习器

  1. 混合扰动:

    混合扰动在同一个集成算法中同时使用上述多种扰动方法。比如随机森林就同时使用了训练样本扰动和输入属性扰动

二 偏差(Bias)和方差(Variance)


偏差(Bias)和方差(Variance)是统计学和机器学习中两个重要的概念,它们描述了模型的预测误差来源

偏差是指模型预测值真实值之间的差异,即模型的预测能力的偏离程度。如果模型的偏差较大,说明模型对真实数据的特征没有很好地捕捉到,可能出现欠拟合的情况。偏差较大的模型通常会产生一致的错误,无论输入的数据如何变化,都会偏离真实值

方差是指模型的预测值在不同训练数据集上的变化程度,即模型的预测能力的波动程度。如果模型的方差较大,说明模型对训练数据过于敏感,可能出现过拟合的情况。方差较大的模型在不同的训练数据上可能会产生不一致的错误,即在不同的数据集上表现不稳定

偏差和方差之间存在一种权衡关系,这就是“棒性”(Robustness)。在理想情况下,我们希望模型既能够对训练数据有较低的偏差,又能够对不同的训练数据有较低的方差,以实现较好的泛化能力。然而,在实际应用中,偏差和方差通常是相互制约的,减小偏差可能会增加方差,减小方差可能会增加偏差。因此,需要在偏差和方差之间进行平衡,以找到最优的模型

解决偏差和方差问题的方法包括增加模型复杂度、增加训练数据量、使用正则化等。通过调整这些因素,可以使模型在偏差和方差之间取得合适的平衡,从而提高模型的预测能力和泛化能力。

鲁棒性(Robustness)是指模型对于异常值噪声其他干扰因素抵抗能力。一个鲁棒性较好的模型能够在面对这些干扰时保持较好的性能和稳定性

提高模型的鲁棒性可以通过以下方法来实现:

  1. 数据清洗:识别和处理异常值和噪声,以减少对模型的干扰
  2. 特征选择:选择具有较好鲁棒性的特征,避免过度依赖噪声或不相关的特征
  3. 模型选择:选择对异常值和噪声具有较好鲁棒性的模型,如支持向量机(SVM)和决策树
  4. 集成学习:通过组合多个模型的预测结果,可以减少对单个模型的依赖,提高整体的鲁棒性
  5. 正则化:通过引入正则化项,可以减少模型对噪声的过度拟合
  6. 交叉验证:使用交叉验证来评估模型的鲁棒性,通过在不同的数据子集上进行训练和验证,可以检测模型在不同数据分布下的性能

总结:

  1. low bias and low variance:又准又稳

  2. low bias and high variance: 准但不稳

  3. high bias and low variance:不准但稳

  4. high bias and high variance:不准又不稳

三 Bagging(套袋法)


3.1 简述

Bagging方法又叫做自举汇聚法(Bootstrap Aggregating),思想是:在原始数据集上通过有放回的抽样的方式,重新选择出S个新数据集来分别训练S个分类器的集成技术。大部分情况下,经过 bagging 得到的结果方差(variance)更小

基学习器:

Bagging方法的弱学习器可以是基本的算法模型,eg: LinearRidgeLasso
LogisticSoftmaxID3C4.5CARTSVMKNN

效果评估:

Bagging方法训练出来的模型在预测新样本分类/回归的时候,会使用多数投票或者求
的方式来统计最终的分类/回归结果

Bagging方式是有放回的抽样,并且每个子集的样本数量必须和原始样本数量一致,所以抽取出来的子集中是存在重复数据的,模型训练的时候允许存在重复数据

差不多有1/3的样本数据是不在Bagging的每个子模型的训练数据中的

lim ⁡ m → ∞ ( 1 − 1 m ) m = 1 e ≈ 0.368 \lim_{m\to\infty}\bigg(1-\frac{1}{m}\bigg)^{m}=\frac{1}{e}\approx0.368 mlim(1m1)m=e10.368

3.2 训练过程


llpqaj.png

3.3 预测过程


llpuM5.png

四 随机森林(Random Forest)


4.1 简述


Bagging策略的基础上进行修改后的一种算法。随机森林,特征选择保证了样本间的差异性,具体过程如下:

  1. 从原始样本集(n个样本)中用Bootstrap采样(有放回重采样)选出n个样本

  2. 使用抽取出来的子数据集(存在重复数据)来训练决策树;从所有属性中随机选择K

    个属性,从K个属性中选择出最佳分割属性作为当前节点的划分属性,按照这种方式

    来迭代的创建决策树

  3. 重复以上两步m次,即建立m棵决策树

  4. 这m个决策树形成随机森林,通过投票表决结果决定数据属于那一类

  5. 对于分类问题,采用投票的方法,得票最多子模型的分类类别为最终的类别;对于回归问题,采用简单的平均方法得到预测值

图解:

llpgB9.png

4.2 RF算法推广


RF算法在实际应用中具有比较好的特性,应用也比较广泛,主要应用在:分类、回归、特征转换、异常点检测等。常见的RF变种算法如下:

  1. 额外树(Extra Tree),分类-回归
  2. 完全随机树嵌入(Totally Random Trees Embedding(TRTE)),特征转换
  3. 孤立森林(Isolation Forest),异常点检测

4.3 额外树(Extra Tree)


llL9YY.png

4.4 完全随机树嵌入(TRTE)


llLmOU.png

4.5 孤立森林(Isolation Forest)

llLlX7.png llL5rO.png

4.6 RF随机森林总结


RF的主要优点:

  1. 训练可以并行化,对于大规模样本的训练具有速度的优势
  2. 由于进行随机选择决策树划分特征列表,这样在样本维度比较高的时候,仍然具有比较高的训练性能
  3. 给以给出各个特征的重要性列表
  4. 由于存在随机抽样,训练出来的模型方差小泛化能力强能够缓解过拟合的情况
  5. RF实现简单
  6. 对于部分特征的缺失不敏感

RF的主要缺点:

  1. 在某些噪音比较大的特征上(数据特别异常情况),RF模型容易陷入过拟合
  2. 取值比较多的划分特征对RF的决策会产生更大的影响,从而有可能影响模型的效果

4.7 思考引入下文


在随机森林的构建过程中,由于各棵树之间是没有关系的相对独立的;在构建的过程中,构建第m棵子树的时候,不会考虑前面的m-1棵树
思考:

  1. 如果在构建第m棵子树的时候,考虑到前m-1棵子树的结果,会不会对最终结果产生有益的影响?
  2. 各个决策树组成随机森林后,在形成最终结果的时候能不能给定一种既定的决策顺序呢?(也就是那颗子树先进行决策、那颗子树后进行决策)

五 提升学习(Boosting)


5.1 简述


提升学习(Boosting)是一种机器学习技术,可以用于回归分类的问题,它每一步产生弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型的生成都是依据损失函数的梯度方式的,那么就称为梯度提升(Gradient boosting)

提升技术的意义:如果一个问题存在弱预测模型,那么可以通过提升技术的办法得到一个强预测模型

学习过程:

ll0wzh.png

常见的模型有:

  1. 自适应增强(Adaptive Boosting,Adaboost
  2. 梯度提升决策树(Gradient Boosting Decision Tree,GBDT)

5.2 自适应增强(Adaboost)

5.2.1 原理

  1. AdaBoost这个方法, 比较迷人的地方就在于训练数据集误差率降为0之后, 依然能继续降低测试误差,看起来,似乎不会过拟合。Schapire给出的解释主要是基于间隔理论, 但是, AdaBoost的间隔和SVM的间隔是不一样的
  2. 间隔包含了分类正确性与确信度的含义
  3. 关于AdaBoost的间隔理论, Schapire在1998年提出之后,受到过质疑,周志华老师在这个问题上给出了解释,并说明了当间隔分布无法继续提升的时候, 过拟合终将发生

统计学习方法之间的不同,主要来自器模型、策略、算法的不同。确定了模型、策略、算法,统计学习的方法也就确定了。这也就是将其称为统计学习三要素的原因

再结构化一下这三个部分,好好理解:

  • 模型:需要学习的条件概率分布或者决策函数

  • 策略:按照什么样的准则学习或选择最优的模型。统计学习的目标在于从假设空间中选取最优模型。

    • 经验风险最小化( R e m p R_{emp} Remp)
  • 结构风险最小化( R s r m R_{srm} Rsrm)

  • 算法:考虑用什么样的方法求解最优模型,这时统计学习问题归结为最优化问题,统计学习方法的算法称为求解最优化问题的算法

  • 提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法

  • 不同的问题, 主要区别在于损失函数不同:

    1. 平方误差用于回归问题

    2. 指数损失用于分类问题



5.3.2 AdaBoost与LR的关系

AdaBoost的两个性质:

  1. 能在学习过程中不断减少训练误差
  2. 训练误差是以指数速率下降的

AdaBoost算法的核心思想就是调整错误样本的权重,进而迭代升级

  1. Adaptive Boosting是一种迭代算法。每轮迭代中会在训练集上产生一个新的学习器,然后使用该学习器对所有训练样本进行预测,以评估每个样本的重要性(Informative)。换句话来讲就是,算法/子模型会为每个样本赋予一个权重,每次用训练好的学习器标注/预测各个样本(训练数据),如果某个样本点被预测的越正确,则将样本权重降低;否则提高样本的权重。权重越高的样本在下一个迭代训练中所占的权重就越大,也就是说越难区分的样本在训练过程中会变得越重要
  2. 整个迭代过程直到错误率足够小或者达到一定的迭代次数为止

权重解释:

ll3OB4.png
5.3.3 算法推导

5.3.3.1 求解权重系数

lllhXs.png
5.3.3.2 算法构建

什么是加法模型:

  • 同样的数据集T,配合不同的权值分布,拿到不同的基分类器G
  • 误差率的定义将权值系数分布与基分类器的结果联系在了一起
  • 权值分布D的宽度代表分类器的误差率相对大小
  • G的宽度代表最终模型中该分类器对应的系数大小
  • 在模型的最终表示中有个 ∑ \sum

AdaBoost分类算法的流程图:

ll7xI3.png

算法过程:

ll7qLb.png
5.3.4 算法示例

ll7rxs.png
5.4.5 总结

优点:

  1. 可以处理连续值离散值
  2. 模型的鲁棒性比较强
  3. 解释强,结构简单
  4. 可以使用各种回归分类模型来构建弱学习器,非常灵活

缺点:

异常样本敏感,异常样本可能会在迭代过程中获得较高的权重值,最终影响模型效果

5.3 梯度提升决策树**(**GBDT)


5.3.1 简述

GBDT由三部分构成:DT(Regression Decistion Tree)、GB(Gradient Boosting)和Shrinkage(衰减)

GBDT也是Boosting算法的一种,但是和AdaBoost算法不同,区别如下:

AdaBoost算法是利用前一轮的弱学习器的误差来更新样本权重值,然后一轮一轮的迭代;GBDT也是迭代,但是GBDT要求弱学习器必须是回归CART模型,而且GBDT在模型训练的时候,是要求模型预测的样本损失尽可能的小

直观理解:

llQjnB.png

所有GBDT算法中,底层都是回归树

迭代决策树随机森林的区别:

  1. 随机森林使用抽取不同的样本构建不同的子树,也就是说第m棵树的构建和前m-1棵树的结果是没有关系的

  2. 迭代决策树在构建子树的时候,使用之前子树构建结果后形成的残差作为输入数据构建下一个子树;然后最终预测的时候按照子树构建的顺序进行预测并将预测结果相加

5.3.2 算法原理

llNg6V.png

解释为什么出现了负梯度:

利用泰勒展开,得到前后两个之差,要保证之差大于零,所以可令等于负梯度,进而保证为正,逐步逼近正确值

ly2xt6.png ly2Dcj.png
5.3.3 GBDT回归算法和分类算法

llNO66.png llNnq9.png
5.3.4 总结

优点:

  1. 可以处理连续值离散值
  2. 适合低维数据
  3. 相对少的调参情况下,模型的预测效果也会不错
  4. 模型的鲁棒性比较强

缺点:由于弱学习器之间存在关联关系,难以并行训练模型数据维度较高会加大算法的计算复杂度

六 Bagging、Boosting的区别


  1. 样本选择:Bagging算法是有放回的随机采样;Boosting算法是每一轮训练集不变,只是训练集中的每个样例在分类器中的权重发生变化或者目标属性y发生变化,而权重&y值都是根据上一轮的预测结果进行调整
  2. 样例权重:Bagging随机抽样,样例等权重;Boosting根据错误率调整样例的权重,错误率越大则权重越大
  3. 预测函数:Bagging所有预测模型的权重相等;Boosting算法对于误差小的分类器具有更大的权重
  4. 并行计算:Bagging算法并行生成各个基模型;Boosting只能顺序生产,后一个模型需要前一个模型的结果
  5. Bagging是减少模型的variance(方差);Boosting是减少模型的Bias(偏度)
  6. Bagging里每个分类模型都是强分类器,因为降低的是方差,方差过高需要降低是过拟合;Boosting里每个分类模型都是弱分类器,因为降低的是偏度,偏度过高是欠拟合

七 极致梯度提升(eXtreme Gradient Boosting,XGBoost)


7.1 简述


XGBoost(eXtreme Gradient Boosting)极致梯度提升,是一种基于GBDT的算法。一些优化,比如:

  1. 利用泰勒展开,二阶导数使损失函数更精准
  2. 正则项避免树过拟合, 简化模型
  3. Block存储可以并行计算

7.2 算法推导


llutHm.png

上课记录:

  1. w表示cart树,x进入cart进入到那个叶子,在判断叶子结果
  2. 惩罚项,超参数,叶子数, 对叶子节点的数值进行惩罚,mean求每个叶子节点均值作为预测结果,15分类不同,得到的惩罚不同,使数更加稳定
  3. 先对每个叶子求和,再对叶子求和
  4. 树的结构确定,q函数就确定了
  5. 决策树每个叶子的纯度越小越好,MSE

7.3 学习策略


llu2Ha.png

7.4 树节点分裂方法


**精确算法:**遍历所有特征的所有可能的分割点,计算gain值,选择最大的gain值对应的(feature,value)进行分割

近似算法:对于每个特征,只考虑分位点,减少计算复杂度

案例:

llww43.png

7.5 XGBoost的其它特性


  1. 列采样(column subsampling):借鉴随机森林的做法,支持列抽样,不仅可以降低过拟合,还可以减少计算量
  2. 支持对缺失值的自动处理。对于特征的值有缺失的样本,XGBoost可以自动学习分裂方向
  3. XGBoost支持并行。XGBoost的并行是特征粒度上的,在计算特征的Gain的时候,会并行执行,但是在树的构建过程中,还是串行构建的
  4. XGBoost算法中加入正则项,用于控制模型的复杂度,最终模型更加不容易过拟合
  5. XGBoost基学习器支持CART线性回归逻辑回归
  6. XGBoost支持自定义损失函数(要求损失函数二阶可导);分类,对数损失;回归,最小二乘

八 堆叠(Stacking)


8.1 基学习器与元学习器


基学习器与元学习器:

基学习器是指用于解决具体学习任务的机器学习算法,它可以从训练数据中学习出一个模型,然后用于预测或分类新的数据。基学习器的选择和设计对于学习任务的性能至关重要,常见的基学习器包括决策树、支持向量机、神经网络

元学习器是指用于学习如何选择和组合基学习器的机器学习算法。它通过对多个基学习器的性能和特征进行学习,来决定如何将这些基学习器集成为一个更强大的学习器。元学习器的目标是自动地学习出一种学习策略,使得在不同的学习任务上能够快速、准确地选择和组合合适的基学习器

总之,基学习器和元学习器是机器学习中两个重要的概念。基学习器用于解决具体的学习任务,而元学习器用于学习如何选择和组合基学习器,以提高学习任务的性能。两者相互配合可以构建出更强大和灵活的学习系统

8.2 简述


  1. Stacking(有时候也称之为stacked generalization)是指训练一个模型用于组合(combine)其他各个模型。即首先我们先训练多个不同的模型,然后再以之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出
  2. 如果可以选用任意一个组合算法,那么理论上,Stacking可以表示前面提到的各种Ensemble方法。然而,实际中,我们通常使用单层logistic回归作为组合模型

注意:Stacking有两层,一层是不同的基学习器(classifiers/regressors),第二个是用于组合基学习器的元学习器(meta_classifier/meta_regressor)

8.3 原理


llwPML.png

8.4 训练阶段


llwr5G.png

8.5 预测阶段


llw4kt.png


得到一个最终的输出

  1. 如果可以选用任意一个组合算法,那么理论上,Stacking可以表示前面提到的各种Ensemble方法。然而,实际中,我们通常使用单层logistic回归作为组合模型

注意:Stacking有两层,一层是不同的基学习器(classifiers/regressors),第二个是用于组合基学习器的元学习器(meta_classifier/meta_regressor)

8.6 原理


llwPML.png

8.7 训练阶段


llwr5G.png

8.8 预测阶段


llw4kt.png


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小酒馆燃着灯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值