机器学习_集成学习(Ensemble Learning):随机森林(RF)、GBDT(迭代决策树)、提升算法、Adaboost

这两天学的是随机森林提升算法GBDTAdaboost算法,今天导师让我们没事的时候看看论文,学习机器学习和深度学习,现在学习这些知识终于成为了“合法”(前些天都是自己抽时间学的),导师看到了就不乐意了。视频看完了,大概知道讲的什么,可是只是大概还不够啊,我得一点点往下整理啊,开讲了!
前边讲到了决策树,是一种分类算法,构建一棵树(分类器)进行分类。集成学习思想是将若干个学习器分类器和回归器)组合之后产生一个新学习器
弱分类器(weak learner) 指那些分类准确率稍好于随机猜测,比如准确率在60%-80%,反之90%以上的准确率成为强分类器。

为什么要学习集成学习?

  1. 若分类器间存在一定的差异性,这会导致分类的边界不同,也就是说可能存在错误。那么将多个弱分类器合并后,就可以得到更加合理的边界,减少整体的错误率,实现更好的效果。
  2. 对于数据集过大或者过小,可以分别进行划分和有放回地操作产生不同的数据子集,然后使用数据子集训练不同的分类器,最终再合并成为一个大的分类器。
  3. 如果数据的划分边界过于复杂, 使用线性模型很难描述情况,那么可以训练多个模型,然后再进行模型的融合。
  4. 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个分类模型,然后再将多个模型融合。比如:ABC是一个特征集,BCD是一个特征集,这个时候可以用ABC训练模型m1,BCD训练模型m2,BC训练模型m3,最后把模型m1,m2,m3做一个融合。

集成算法的成功之处在于保证弱分类器的多样性。而且集成不稳定的算法也能得到一个比较明显的提升。
集成学习的一个直观理解:如下图三个弱分类器进行线性组合,得到一个融合在一起的强分类器,
在这里插入图片描述
常见的集成学习思想:

  • Bagging
  • Boosting
  • Stacking

Bagging方法

一、bagging方法原理

  • 此方法又叫自举汇聚法(Bootstrap Aggregating),其思想是:在原始数据集上通过有放回的抽样的方式,更新选择出S个新数据集来分别训练S个分类器的集成技术(这些模型的训练数据允许出现重复的数据)
  • Bagging方法训练出来的模型在预测新样本分类的时候,会使用多数投票或者求均值的方式来统计最终的分类效果。
  • Bagging方法的弱学习分类器可以是基本的算法模型,eg:Linear,ridge,Lasso, Logistic, Softmax, ID3,
  • Bagging方式是有放回的抽样,并且每个子集的样本数量必须和原始样本数量一致,但是子集中允许存在重复数据
    二、训练过程
    在这里插入图片描述
    三、决策过程
    在这里插入图片描述
    学习器1会有一个结果,学习器2有一个结果,,,学习器s有一个结果,最后把这几个结果进行求均值或者多数投票。

随机森林(Random Forest)

一、算法原理

  • 从原始样本集(n个样本)中用Bootstrap采样(有放回重采样)选出n个样本;
  • 从所有属性中随机选择K个属性,选择出最佳分割属性作为节点创建决策树;
  • 重复以上两步m次,即建立m棵决策树;
  • 这m个决策树形成随机森林,通过投票表决结果决定数据属于那一类。
    构建成的决策树,有如下操作:
    在这里插入图片描述,构建了多棵决策树,第一棵决策树的第二个节点认为当前是2,第二棵认为当前节点是2,第三棵认为当前节点是1,那个最终通过多数投票认为当前预测是2。
    加入当前森林由三颗决策树构成的,决策树一第一个节点预测的一条数据值为,第二棵决策树第一个节点预测为2,第三棵决策树预测为3,那么怎样区分呢?通过一个概率的方法,请看下图,第三棵决策树认为当前预测的3为90%,那么就认为这条数据的值为3。在这里插入图片描述,总之还是用过多数投票的方式进行决策。
    随机森林中决策树分裂特征
    随机森林是在多个特征中,选择最优的一个,而随机森林中的决策树是从多个待选特征中,随机抽出几个待选特征,然后再从随机选择的特征中找出最优的一个。
    在这里插入图片描述
    在这里插入图片描述
    二、随机森林的推广
    RF算法在实际应用中具有比较好的特性,应用也比较广泛,主要应用在:分类、回归、特征转换、异常点检测等。常见的RF变种算法如下:
  • Extra Tree
  • Totally Random Trees Embedding(TRTE)
  • Isolation Forest
    Extra Tree
    Extra Tree是RF的一个变种,原理基本和RF一样,区别如下:
  1. RF会随机采样来作为子决策树的训练集,而Extra Tree每个子决策树采用原始数据集训练;
    1. RF在选择划分特征点的时候会和传统决策树一样,会基于信息增益、信息增益率、基尼系数、均方差等原则来选择最优特征值;而Extra Tree会随机的选择一个特征值来划分决策树。
      Extra Tree因为是随机选择特征值的划分点,这样会导致决策树的规模一般大于
      RF所生成的决策树。也就是说Extra Tree模型的方差相对于RF进一步减少。在某
      些情况下,Extra Tree的泛化能力比RF的强。
      Totally Random Trees Embedding(TRTE)
      TRTE是一种非监督的数据转化方式。将低维的数据集映射到高维,从而让映射
      到高维的数据更好的应用于分类回归模型。
      TRTE算法的转换过程类似RF算法的方法,建立T个决策树来拟合数据。当决策树构建完成后,数据集里的每个数据在T个决策树中叶子节点的位置就定下来了,将位置信息转换为向量就完成了特征转换操作。
      案例:有3棵决策树,每棵决策树有5个叶子节点,某个数据x划分到第一个决策树的第3个叶子节点,第二个决策树的第一个叶子节点,第三个决策树的第第五个叶子节点,那么最终的x映射特征编码为:(0,0,1,0,0, 1,0,0,0,0, 0,0,0,0,1)
      Isolation Forest(IForest)
      IForest是一种
      异常点检测算法
      ,使用类似RF的方式来检测异常点;IForest算法和RF算法的区别在于:
  2. 在随机采样的过程中,一般只需要少量数据即可;
  3. 在进行决策树构建过程中,IForest算法会随机选择一个划分特征,并对划分特征随机选择一个划分阈值;
  4. IForest算法构建的决策树一般深度max_depth是比较小的。
    对于异常点的判断,则是将测试样本x拟合到T棵决策树上。计算在每棵树上该样本的叶子节点的深度h t (x)。从而计算出平均深度h(x);然后就可以使用下列公式计算样本点x的异常概率值,p(s,m)的取值范围为[0,1],越接近于1,则是异常点的概率越大。
    在这里插入图片描述

RF随机森林总结

RF的主要优点:

  1. 训练可以并行化,对于大规模样本的训练具有速度的优势;
  2. 由于进行随机选择决策树划分特征列表,这样在样本维度比较高的时候,仍然具有比较高的训练性能;
  3. 给以给出各个特征的重要性列表;
  4. 由于存在随机抽样,训练出来的模型方差小,泛化能力强;
  5. RF实现简单;
  6. 对于部分特征的缺失不敏感。
    RF的主要缺点:
  7. 在某些噪音比较大的特征上,RF模型容易陷入过拟合;
  8. 取值比较多的划分特征对RF的决策会产生更大的影响,从而有可能影响模型的效果。

Boosting提升算法

一、算法原理

  • 提升算法是一种机器学习技术,可以用于回归和分类中,它每一步都产生弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型的生成都是依据损失函数的梯度方式的,那么就称为梯度提升(Gradientboosting)
  • 提升技术的意义:如果一个问题存在弱预测模型,那么可以通过提升技术的办法得到一个强预测模型
    二、Boosting算法直观理解图
    在这里插入图片描述上图是将训练好的多个弱学习器加权融合成为一个强分类器。
    三、常见的Boosting方法
  • AdaBoost
  • Gradient Boosting(GBT/GBDT/GBRT)
    1. AdaBoost算法原理
    AdaBoost(Adaptive适应的 Boosting)是一种迭代算法。每轮迭代中都会在训练集上产生一个新的学习器,然后使用该学习器对所有样本进行预测,以评估每个样本的重要性(Informative)。换句话来讲就是,算法会为每个样本赋予一个权重,每次用训练好的学习器标注/预测各个样本,如果某个样本点被预测的越正确,则将其权重降低;否则提高样本的权重。权重越高的样本在下一个迭代训练中所占的比重就越大也就是说越难区分的样本在训练过程中会变得越重要
    整个迭代过程直到错误率足够小或者达到一定的迭代次数为止。
    Adaboost算法将基本分类器的线性组合作为强分类器,同时给分类误差率较小的基本分类器以的权值,给分类误差率较大的基分类器以小的权重值,构建的线性组合为:
    在这里插入图片描述
    样本加权的例子
    在这里插入图片描述
    第1步结束后,绿线左边分类错误的红色样本加权,于是第2步就再把权重大的红色分开。第3步的时候,在最下边画一条线,此线段认为上边是蓝色的,下边是红色的。第4步发现两个蓝色的仍然是错误的,继续加大权重,继续迭代分类。继续第5步,接着第6步,把上边每一步的迭代结果进行融合得到了第6步的结果:变成一个一个的框框的形式。
    2,损失函数
    在这里插入图片描述
    损失函数其实就是错误率,I(true)=1.I(false)=0,I(G(x)!=yi)的意思是,如果分类错误了,返回1,分类正确了返回0;这样把所有的分类错误的样本,进行累加,最后除n得到的就是错误的占比(错误率)。

我把这个都写在纸上了,欢迎一起讨论哦。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

梯度提升迭代决策树GBDT

GBDT(Gradient Boosting Decison Tree)也是Boosting算法的一种,但是和AdaBoost算法不同,区别如下:AdaBoost算法是利用前一轮的的弱学习器的误差来更新样本权重值,然后一轮一轮地迭代。GBDT也是迭代,但是GBDT要求弱学习器必须是CART模型,而且GBDT在模型训练的时候,是要求模型预测的样本损失尽可能的小。
梯度提升迭代决策树GBDT直观理解
以残差作为新的样本特征值:
在这里插入图片描述
假如现在新来了一个样本,收入值大于1K,并且上网大于·1H,那么此时就认为,这个人的年龄为26岁。
给定步长的时候,给定一个步长step(step>1),在构建下一棵树的时候使用step*残差值作为输入值,这样可以防止过拟合。
梯度提升迭代决策树GBDT,由三部分组成,DT(Regression Decistion Tree)、GB(Gradient Boosting)
和Shrinkage(衰减)。
由多棵决策树组成,所有树的结果累加起来就是最终结果。
迭代决策树和随机森林的区别:
1.随机森林使用抽取不同的样本构建不同的子树,也就是说第m棵树的构建和前m-1棵树的结果是没有关系的。
2.迭代决策树在构建子树的时候,使用之前子树构建结果后形成的残差作为输入数据构建下一个子树;然后最终预测的时候按照子树构建的顺序进行预测,并将预测结果相加。
GBDT算法原理
给定输入向量X和输出变量Y组成的若干训练样本,(X1,Y1,)(X2,Y2)…(Xn,Yn),目标是找到近似函数F(x),使得损失函数L(Y,F(x))最小。
L损失函数一般采用最小二乘损失函数或者绝对值损失函数
在这里插入图片描述
最优解为:在这里插入图片描述
假定F(X)是一族最优基函数F(X)的加权和,那么为了防止每个学习器能力过强,可能导致过拟合,给定一个缩放系数:在这里插入图片描述
贪心算法的思想扩张到**F(X),**求最优解f,在这里插入图片描述用贪心算法在每次选择最优基函数f时,仍然困难,使用梯度下降的方法近似计算。
在给定基函数F0(X)在这里插入图片描述
这个函数是找到一个叶子的最优解,最优解也就是一个常数C。根据梯度下降计算计算导数值:在这里插入图片描述(实际值和预测值之间的偏差值),使用数据在这里插入图片描述
最后更新迭代模型:在这里插入图片描述

GBDT回归算法和分类算法的区别

两者的区别就选择不同的损失函数。
回归算法选择的损失函数一般式均方差(最小二乘)或者绝对值误差:
在这里插入图片描述
而分类算法中一般的损失函数选择对数函数来表示(信息熵):
在这里插入图片描述

GBDT总结:

GBDT的优点:
可以处理连续值和离散值;
在相对少的调参情况下,模型的预测效果也会不错;
模型的鲁棒性比较强。
GBDT的缺点如下:
由于弱学习器之间存在关联关系,难以并行训练模型。

Bagging、Boosting的区别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值