机器学习--分类算法--集成学习算法理论(RF/AdaBoost/GBDT/XGBoost算法)

本文深入探讨集成学习的概念、优势及其三种主要思想:Bagging、Boosting和Stacking。详细讲解了随机森林、AdaBoost、GBDT以及XGBoost等算法的原理、优缺点,强调了集成学习如何通过结合多个弱学习器提升模型性能。
摘要由CSDN通过智能技术生成

目录

一 集成学习背景

1 集成学习概念

2 集成学习优势

1)弱分类器之间存在差异性的问题

2)对于数据集过大或者过小的问题

3)对于数据集的划分边界过于复杂,线性模型很难描述的问题

4)对于多个异构数据集而言,数据集很难合并的问题

3 集成学习三种思想

1)Bagging思想(Bootstrap Aggregating,自主汇聚法)

2)Boosting思想(存在弱学习器,可通过提升技术变成强学习器)

3)Stacking思想

二 Bagging

1 随机森林算法(Random Forest)

1)算法原理

2)优点

3)缺点

2 随机森林的推广算法

1)Extra Tree算法原理(一般不推荐使用)

2)Totally Random Trees Embedding算法原理(TRTE,一种无监督的特征转换)

3)Isolation Forest算法原理(IForest,一种异常点检测算法)

三 Boosting思想

1 AdaBoost算法

1)概念(关注提升过程)

2)算法原理

3)算法流程

4)算法优缺点

2 GBDT(Gradient Boosting Dicision Tree)

1)算法概念

2)算法流程(以回归问题为例)

3)算法处理分类问题,损失函数采用对数损失函数(交叉熵损失函数)

4)算法优缺点

3 XGBOOST(GBDT的变种算法)

1)算法概念

2)算法原理

3)算法学习策略(树生成策略)

4)XGBoost特性(优点)

四 Stacking思想


一 集成学习背景

1 集成学习概念

指将若干个学习器进行组合而得到一个新的学习器

2 集成学习优势

1)弱分类器之间存在差异性的问题

导致分类边界的不同(换言之存在错误),那么将多个弱分类器合并之后,会得到更加合理的分类边界

2)对于数据集过大或者过小的问题

我们可以采用划分或者有放回操作,得到不同的数据子集,分别训练不同的学习器,在组合成一个新的学习器

3)对于数据集的划分边界过于复杂,线性模型很难描述的问题

可以训练多个学习器,再组合成一个新的学习器

4)对于多个异构数据集而言,数据集很难合并的问题

可以对每个数据集训练一个学习器,在组合成一个新的学习器

3 集成学习三种思想

1)Bagging思想(Bootstrap Aggregating,自主汇聚法)

在原始数据集上\left \{ X_{i} \right \}_{i=1}^{m}通过bootstap有放回抽样方式,抽取出S个新的数据集\left \{ X_{i}^{​{}'} \right \}_{i=1}^{m}(存在重复数据,实际训练时需去重),分别训练S个学习器,并进行组合成新的学习器(并行训练)

2)Boosting思想(存在弱学习器,可通过提升技术变成强学习器)

每一步产生弱学习器,并加权累计到总学习器上,且每一步的弱学习器生成都是依据损失函数的梯度方式(串行训练)

3)Stacking思想(堆叠+分阶段)

训练多个学习器产生多个输出,并作下个学习器的输入,并重复多个阶段进行(类似于深度学习中的神经网络)

注意:Bagging与Boosting区别

  • 第一点:样本角度

Bagging每一轮样本是从原始数据中有放回随机抽取的

Boosting每一轮样本为原始数据,但是样本权重或者目标属性由上一轮损失函数调整

  • 第二点:计算方式角度

Bagging采用并行计算

Boosting采用串行计算

  • 第三点:泛化误差角度

Bagging降低的是模型的方差(var=E[(f(x)-\bar{f}(x))^2]

Boosting降低的是模型的偏差(bias=E[(y-\bar{f}(x))^{2}]

二 Bagging

1 随机森林算法(Random Forest)

1)算法原理

  • 在原始数据集中采用自助法(Bootstrap)抽取出新数据集
  • 从所有属性中随机抽取K个特征属性,再进行选择特征属性和分裂特征属性(纯度损失的度量)创建决策树
  • 重复上述步骤S次,创建S个决策树
  • 将S个决策树形成森林,通过平均值法或者多数表决法进行预测样本

2)优点

第一点:无需进行交叉验证或者使用一个独立测试集来获取误差的无偏估计(换言之它可以在内部进行误差的无偏估计)

  • oob样本(袋外样本)

数据集足够大,采用bootstrap抽样,对于第K棵树而言,约有1/3总样本未参与第K棵树的生成,它们被称为第K棵树的袋外样本

  • oob错误率(袋外错误率)

第一步:每个袋外样本,计算它作为袋外样本的树(约有1/3棵树),对其分类情况

第二步:多数表决法预测分类情况

第三步:使用误分类样本个数占总袋外样本的比率作为袋外错误率

第二点:可以得到特征重要度,进行特征选择

  • 随机森林中一个特征被分割的次数越多,那么该特征重要度越高
  • 特征重要度特征重要度 = #随机森林中具有该特征的内部节点总数  /  #随机森林中具有该特征决策树的所有内部节点总数

第三点:可以并行训练,对于大规模数据集具有训练优势

3)缺点

第一点:对于特别的异常样本,使得RF容易陷入过拟合

第二点:对于取值较多的特征,使得RF决策受到影响

2 随机森林的推广算法

1)Extra Tree算法原理(一般不推荐使用)

  • 原始数据集不采用抽样方式,直接使用原始数据集
  • 从所有特征属性中随机选择K个属性,再从K个属性随机选择特征属性以及分裂特征属性,创建树
  • 重复上述步骤S次,创建S个树
  • S个树形成森林,采用平均值法或者多数表决发,预测样本

注意:在某些特别情况下,可能优于RF算法

2)Totally Random Trees Embedding算法原理(TRTE,一种无监督的特征转换)

  • 在原始数据集中采用自助法(Bootstrap)抽取出新数据集
  • 计算所有特征属性的方差,从中选择方差最大的特征n_{k},使用最大特征的方差中位数n_{kv},划分为两个分支,创建树
  • 重复上述步骤S次,创建S个树
  • S个树形成森林,从而每个样本在每棵树上的叶子节点位置确定下来,将位置信息转换成向量即可

注意:是一种非监督的特征转换方式(RF+KD-Tree),可以将数据从低维度映射到高维度

3)Isolation Forest算法原理(IForest,一种异常点检测算法)

  • 从原始数据集中,随机抽取少量样本数据形成新的数据集
  • 从所有特征属性中随机选择K个属性,再从K个属性中随机选择特征属性以及分裂特征属性,创建树(深度一般不深)
  • 重复上述步骤T次,形成T个树
  • 将T个树形成森林,再将测试点x拟合到T棵树上,进行异常点检测

         第一步:计算该样本在T棵决策树上的叶子节点深度h_{_t}(x),求得平均深度h(x)

         第二步:m为样本个数,\xi为欧拉常数:

                        c(m)=2ln(m)+\xi -2*\frac{m-1}{m}

         第三步:从而测试点x作为异常点概率:p(x,m)=2^{-\frac{h(x))}{c(m)}}

注意:异常点检测不需要太多样本以及太多决策树

三 Boosting思想

1 AdaBoost算法

1)概念(关注提升过程)

算法在每一轮迭代过程中,会给每个样本赋予权重,预测越正确的样本降低其权重,反之提高权重

2)算法原理

第一点:将基分类器的线性组合作为强分类器,给分类误差小的基分类器以较大的权重,给分类误差大的基分类器以较小的权重\alpha _{m}

f(x)=\sum_{m=1}^{M}\alpha_{m}G_{m}(x) \Rightarrow G(x)=sign(f(x))=sign(\sum_{m=1}^{M}\alpha_{m}G_{m}(x)) 

第二点:损失函数(总分类器角度的错误率)

loss=\frac{1}{n}\sum_{i=1}^{n}I(G(x^{(i)})\neq y^{(i)})\Rightarrow loss\leqslant \frac{1}{n}\sum_{i=1}^{n}e^{-y^{(i)}f(x^{(i)})}

\Rightarrow loss= \frac{1}{n}\sum_{i=1}^{n}e^{-y^{(i)}f(x^{(i)})}

第三点:第k-1轮总学习器,第k轮总学习器,m轮总学习器损失函数

  • k-1轮学习器f_{k-1}(x)

f_{k-1}(x)=\sum_{m=1}^{k-1}\alpha _{m}G_{m}(x)

  • k轮学习器f_{k}(x)

f_{k}(x)=\sum_{m=1}^{k}\alpha _{m}G_{m}(x)=\sum_{m=1}^{k-1}\alpha _{m}G_{m}(x)+\alpha _{k}G_{k}(x)=f_{k-1}+\alpha _{k}G_{k}(x)

  • m轮学习器损失函数loss(\alpha_{(m)},G_{(m)}(x))

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值