机器学习算法之集成学习

集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器。弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < 0.5)。

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

常见的集成学习思想有:Bagging、Boosting、Stacking

为什么需要集成学习

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

Bagging

Bagging方法又叫做自举汇聚法(Bootstrap Aggregating),思想是:在原始数据集上通过有放回的抽样的方式,重新选择出S个新数据集来分别训练S个分类器的集成技术。也就是说这些模型的训练数据中允许存在重复数据。

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

Bagging方法的弱学习器可以是基本的算法模型,eg: Linear、Ridge、Lasso、Logistic、Softmax、ID3、C4.5、CART、SVM、KNN等。

备注:Bagging方式是有放回的抽样,并且每个子集的样本数量必须和原始样本数量一致,但是子集中允许存在重复数据。

Bagging训练过程

Bagging预测过程

随机森林(Random Forest)

在Bagging策略的基础上修改之后的算法:

  1. 从样本集中用Bootstrap采样选出n个样本。
  2. 从所有属性中随机选择K个属性,选择出最佳分割属性作为节点创建决策树。
  3. 重复以上两步m次,即建立m棵决策树
  4. m棵决策树形成随机森林,通过投票表决结果决定数据属于哪一类。如下图:

RF的推广算法

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

  • Extra Tree
  • Totally Random Trees Embedding(TRTE)
  • Isolation Forest

RF的推广算法:Extra Tree

ET是RF的一个变种,原理基本相同,区别在于:

  1. RF会随机采样作为决策树的训练集,而ET每个决策树采用原始数据集训练。
  2. RF在选择划分特征点的时候会和传统决策树一样,会基于信息增益、信息增益率、基尼系数、均方差等原则来选择最有特征值;而ET会随机的选择一个特征值来划分决策树。

ET因为是随机选择特征值的划分点,这样会导致决策树的规模一般大于RF所生成的决策树。也就是说ET模型的方差相对于RF进一步减少。在某些情况下,ET的泛化能力比RF的强。

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)

RF的推广算法:Isolation Forest(IForest)

IForest是一种异常点检测算法,使用类似RF的方式来检测异常点;IForest算法和RF算法的区别在于:

  1. 在随机采样的过程中,一般只需要少量数据即可。
  2. 在进行决策树构建的过程中,IForest算法会随机选择一个划分特征,并对划分特征随机选择一个划分阈值
  3. IForest算法构建的决策树一般深度max_depth是比较小的。

区别原因

目的是异常点检测,所以只要能够区别异常的即可,不需要大量数据,同时也不需要建立太大规模的决策树。

对于异常点的判断。是将测试样本X拟合到T棵决策树上。计算在每棵树上该样本的叶子节点的深度H。从而计算出平均深度h;然后使用公式计算样本点X的异常概率值,p(s,m)的取值范围是[0,1],越接近1,则是异常点的概率越大。

RF随机森林总结

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

思考:

如果在构建第m棵子树的时候,考虑到前m-1棵子树的结果,会不会对最终结果产生有益的影响?

各个决策树组成随机森林后,在形成最终结果的时候能不能给定一种既定的决策顺序呢?(也就是那颗子树先进行决策、那颗子树后进行决策)

RF的主要优点

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

RF的主要缺点

  1. 在某些噪声比较大的特征上,RF模型容易陷入过拟合
  2. 取值比较多的划分特征对RF决策树会产生更大的影响,从而有可能影响模型的效果。

Boosting

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

百度百科:Boosting是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。

提升技术的意义:如果一个问题存在弱预测模型,那么可以通过提升技术的方法得到一个强预测模型。(强预测模型由若干个弱预测模型累加而成)。

常见的模型有:Adaboost、Gradient Boosting(GBT/GBDT/GBRT)。

AdaBoost

AdaBoost算法原理

Adaptive Boosting是一种迭代算法。每轮迭代中会在训练集上产生一个新的学习器,然后使用该学习器对所有样本进行预测,以评估每个样本的重要性(Informative)。换句话来讲就是,算法会为每个样本赋予一个权重,每次用训练好的学习器标注/预测各个样本,如果某个样本点被预测的越正确,则将其权重降低;否则提高样本的权重。权重越高的样本在下一个迭代训练中所占的比重就越大,也就是说越难区分的样本在训练过程中会变得越重要;

整个迭代过程直到错误率足够小或者达到一定的迭代次数为止。

可以看见,每一次学习后,被误分的样本具有的更高的权重,这权重在下一次构建学习器的时候产生影响(对样本集的影响构建成多个样本子集)。

样本加权

下面图片中表现了样本加权的过程。标记变大的就是前一次迭代中误判断的样本点,标记越大说明权重越高。

Adaboost算法

Adaboost算法将基分类器的线性组合作为强分类器,同时给分类误差率较小的基本分类器以大的权值,给分类误差率较大的基分类器以小的权重值;构建的线性组合为

最终分类器是在线性组合的基础上进行Sign函数转换(取数字n的符号,大于0返回1,小于0返回-1,等于0返回0):

Adaboost算法构建过程一

Adaboost算法的直观理解

AdaBoost的优缺点

AdaBoost的优点如下:

  • 可以处理连续值和离散值;
  • 模型的鲁棒性比较强;
  • 解释强,结构简单。

AdaBoost的缺点如下:

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

梯度提升决策树GBDT

GBDT也是Boosting算法的一种,但是和AdaBoost算法不同;区别如下:AdaBoost算法是利用前一轮的弱学习器的误差来更新样本权重值,然后一轮一轮的迭代;GBDT也是迭代,但是GBDT要求弱学习器必须是CART模型(决策树),而且GBDT在模型训练的时候,是要求模型预测的样本损失尽可能的小。

别名:GBT(Gradient Boosting Tree)、GTB(Gradient Tree Boosting)、GBRT(Gradient Boosting Regression Tree)、GBDT(Gradient Boosting Decison Tree)、MART(Multiple Additive Regression Tree)

GBDT是由三个部分组成:DT(Regression Decistion Tree)、GB(Gradient Boosting)和 Shrinking(衰减)。所有树的结果累加起来就是最终结果。

GBDT直观理解

当给定步长时候,给定一个步长step,在构建下一棵树的时候使用step*残差值作为输入值,这种方式可以减少过拟合的发生

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

  1. 随机森林使用抽取不同样本构建不同的子树,也就是说第m棵树的构建与第m-1棵树是没有关系的。
  2. 迭代决策树在构建子树的时候,使用之前的子树构建结果后形成的残差作为输入数据构建下一个子树,最终预测时候按照子树的构建的顺序进行预测,并将预测结果相加。

GBDT算法原理

给定输入向量X和输出变量Y组成的若干训练样本(x_{1} ,y_{1} ),(x_{2} ,y_{2} )......(x_{n} ,y_{n}),目标是找到近似函数F(X),使得损失函数L(Y,F(X))的损失值最小。

L损失函数一般采用最小二乘损失函数或者绝对值损失函数

最优解为:

假定F(X)是一族最优基函数f i (X)的加权和:

以贪心算法的思想扩展得到Fm(X),求解最优f

以贪心法在每次选择最优基函数f时仍然困难,使用梯度下降的方法近似计算

给定常数函数F 0 (X)

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

唯一的区别在于选择不同的损失函数

回归算法中选择的损失函数是均方差(最小二乘)或者是绝对值误差。分类算法中一般的损失函数选择对数函数来表示。Bagging、Boosting的区别

GBDT的优缺点

GBDT的优点如下:

  • 可以处理连续值和离散值;
  • 在相对少的调参情况下,模型的预测效果也会不错;
  • 模型的鲁棒性比较强。

GBDT的缺点如下:

  • 由于弱学习器之间存在关联关系,难以并行训练模型

Bagging、Boosting的区别

  • 样本选择:Bagging算法是有放回的随机采样;Boosting算法是每一轮训练集不变,只是训练集中的每个样例在分类器中的权重发生变化,而权重根据上一轮的分类结果进行调整;
  • 样例权重:Bagging使用随机抽样,样例的权重;Boosting根据错误率不断的调整样例的权重值,错误率越大则权重越大;
  • 预测函数:Bagging所有预测模型的权重相等;Boosting算法对于误差小的分类器具有更大的权重。
  • 并行计算:Bagging算法可以并行生成各个基模型;Boosting理论上只能顺序生产,因为后一个模型需要前一个模型的结果;
  • Bagging是减少模型的variance(方差);Boosting是减少模型的Bias(偏度)。
  • Bagging里每个分类模型都是强分类器,因为降低的是方差,方差过高需要降低是过拟合;Boosting里每个分类模型都是弱分类器,因为降低的是偏度,偏度过高是欠拟合。我们认为方差越大的模型越容易过拟合:假设有两个训练集A和B,经过A训练的模型Fa与经过B训练的模型Fb差异很大,这意味着Fa在类A的样本集合上有更好的性能,而Fb在类B的训练样本集合上有更好的性能,这样导致在不同的训练集样本的条件下,训练得到的模型的效果差异性很大,很不稳定,这便是模型的过拟合现象,而对于一些弱模型,它在不同的训练样本集上 性能差异并不大,因此模型方差小,抗过拟合能力强,因此boosting算法就是基于弱模型来实现防止过拟合现象。
  • Bagging对样本重采样,对每一轮的采样数据集都训练一个模型,最后取平均。由于样本集的相似性和使用的同种模型,因此各个模型的具有相似的bias和variance;

Stacking

Stacking是指训练一个模型用于组合(combine)其它模型(基模型/基学习器)的技术。即首先训练出多个不同的模型,然后再以之前训练的各个模型的输出作为输入来新训练一个新的模型,从而得到一个最终的模型。一般情况下使用单层的Logistic回归作为组合模型。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的方法论-NPS

转载于:https://www.cnblogs.com/qjm201000/p/7687510.html

controller调用controller的方法_SpringBoot 优雅停止服务的几种方法

转自&#xff1a;博客园&#xff0c;作者&#xff1a;黄青石www.cnblogs.com/huangqingshi/p/11370291.html 在使用 SpringBoot 的时候&#xff0c;都要涉及到服务的停止和启动&#xff0c;当我们停止服务的时候&#xff0c;很多时候大家都是kill -9 直接把程序进程杀掉&#x…

机器学习之聚类概述

什么是聚类 聚类就是对大量未知标注的数据集&#xff0c;按照数据 内部存在的数据特征 将数据集划分为 多个不同的类别 &#xff0c;使 类别内的数据比较相似&#xff0c;类别之间的数据相似度比较小&#xff1b;属于 无监督学习。 聚类算法的重点是计算样本项之间的 相似度&…

qt release打包发布_几种解决Qt程序打包后无法连接数据库问题的方法

Qt是一个跨平台C图形用户界面应用程序开发框架&#xff0c;使用它不仅可以方便地开发GUI程序&#xff0c;也可以开发非GUI程序&#xff0c;可以一次编写&#xff0c;处处编译。今天遇到的问题比较怪异&#xff0c;我开发的是一个桌面版订单管理系统&#xff0c;整体架构就是一个…

机器学习之拉格朗日乘子法和 KKT

有约束的最优化问题 最优化问题一般是指对于某一个函数而言&#xff0c;求解在其指定作用域上的全局最小值问题&#xff0c;一般分为以下三种情况(备注&#xff1a;以下几种方式求出来的解都有可能是局部极小值&#xff0c;只有当函数是凸函数的时候&#xff0c;才可以得到全局…

pmp思维导图 第六版_PMP考试技巧攻略(上)

PMP考试需要有保证足够的时间投入&#xff1a;获得PMP 考试并拿到5A 成绩&#xff0c;并且还需要理解性记忆&#xff1a;PMP 指定教材PMBOK第六版&#xff08;教材为必看三遍以上&#xff09;&#xff0c;学习起来是有趣的&#xff0c;同时也是痛苦的。因为看书时字面的字我们认…

浅谈MVC MVP MVVM

复杂的软件必须有清晰合理的架构&#xff0c;否则无法开发和维护。 MVC&#xff08;Model-View-Controller&#xff09;是最常见的软件架构之一&#xff0c;业界有着广泛应用。 它本身很容易理解&#xff0c;但是要讲清楚&#xff0c;它与衍生的 MVP 和 MVVM 架构的区别就不容易…

商务搜索引擎_外贸研修 | 世界各国常用搜索引擎,开发客户必备!

我们平时生活中也好&#xff0c;开发客户也好&#xff0c;搜索引擎是我们离不开的工具。最佳没有之一的当属谷歌了。谷歌网址&#xff1a;www.google.com谷歌高级搜索&#xff1a;https://www.google.com/advanced_search (通过设置/排除一些字词缩小精确搜索范围)作为普通使用…

HaProxy+Keepalived+Mycat高可用群集配置

概述 本章节主要介绍配置HaProxyKeepalived高可用群集&#xff0c;Mycat的配置就不在这里做介绍&#xff0c;可以参考我前面写的几篇关于Mycat的文章。 部署图&#xff1a; 配置 HaProxy安装 181和179两台服务器安装haproxy的步骤一致 --创建haproxy用户 useradd haproxy--…

奇怪的bug,不懂Atom在添加markdown-themeable-pdf,在配置好phantomjs的情况下报错

本来打算用一下atom但是导出pdf报错&#xff0c;可是在预览的情况下就没有问题&#xff0c;顺便吐槽一下谷歌浏览器自己的markdown在线预览插件无法适配&#xff0c;用搜狗搭载谷歌的插件才能导出pdf&#xff0c;一下感觉逼格少了很多&#xff0c;等忙完这阵再来看一下。先贴出…

Python 面试题

Python面试315道题第一部 Python面试题基础篇&#xff08;80道&#xff09;1、为什么学习Python&#xff1f;2、通过什么途径学习的Python&#xff1f;3、Python和Java、PHP、C、C#、C等其他语言的对比&#xff1f;PHPjavacc#c4、简述解释型和编译型编程语言&#xff1f;编译型…

bzoj1038500AC!

序列dp 先开始想了一个类似区间dp的东西...少了一维 然后发现似乎不太对&#xff0c;因为女生的最大差和男生的最大差并不相等 dp[i][j][x][y]表示当前有i个人&#xff0c;j个男生&#xff0c;男生和女生的后缀最大差是x&#xff0c;女生和男生最大差是y&#xff0c;x,y>0,转…

android生命周期_Android开发 View的生命周期结合代码详解

咱们以TextView控件为例&#xff1a;/*** Created by SunshineBoy on 2020/9/23.*/public class TestTextView extends android.support.v7.widget.AppCompatTextView {public TestTextView(Context context) {super(context);Log.e("TestTextView","TestTextVi…

机器学习算法之支持向量机 SVM

距离知识 点到直线/平面的距离公式&#xff1a; 1、假定点p(x0,y0)&#xff0c;平面方程为f(x,y)AxByC&#xff0c;那么点p到平面f(x)的距离为&#xff1a; 2、从三维空间扩展到多维空间中&#xff0c;如果存在一个超平面f(X)θXb; 那么某一个点X0到这个超平面的距离为: 参考…

VMware Horizon虚拟桌面工具箱2.0-审计,远程协助,控制台,电源

各位朋友,大家好,VMware Horizon 虚拟桌面工具箱2.0版本,已经面世啦!在2.0 版本中我们添加了vSphere虚拟机控制台访问、开机策略和图形化安装这三个新功能&#xff0c;并改进了部分老的功能。老版本即1.5版本的相关知识可以参考我的博文VMware Horizon虚拟桌面工具箱之审计与远…

python词云改颜色_一种用Python生成词云

一种用Python生成词云 我们在阅读一篇很长的文章时&#xff0c;总先看看文章的关键词来获知文章的大概内容。今天我们就来制作一个词云程序&#xff0c;将文章中出现次数较多的词语提取出来&#xff0c;生成一张词云图。词云图的生成原理&#xff1a; 程序会将这篇文章中的所有…

机器学习之 朴素贝叶斯、贝叶斯网络

目录 贝叶斯定理 朴素贝叶斯算法 高斯朴素贝叶斯 伯努利朴素贝叶斯 多项式朴素贝叶斯 贝叶斯网络 最简单的贝叶斯网络 全连接贝叶斯网络 一般化的贝叶斯网络 引子 参赛者会看见三扇关闭了的门&#xff0c;其中一扇的后面有一辆汽车&#xff0c;选中后面有车的那扇门可…

attention机制_简析Attention机制—优缺点,实现,应用

什么是Attention机制&#xff1f;Attention机制的本质来自于人类视觉注意力机制。人们在看东西的时候一般不会从到头看到尾全部都看&#xff0c;往往只会根据需求观察注意特定的一部分。简单来说&#xff0c;就是一种权重参数的分配机制&#xff0c;目标是协助模型捕捉重要信息…

pycharm Debug问题

pycharm Debug问题 参考链接:https://blog.csdn.net/weixin_43472408/article/details/85072640 Debug的调试方式如下所示&#xff1a; 1.show execution point (F10) 显示当前所有断点 2.step over(F8) 单步调试。 若函数A内存在子函数a时&#xff0c;不会进入子函数a内执…

php执行npm命令_npm系列之命令执行

当我想使用vue的脚手架来创建一个项目的时候&#xff0c;我应该怎么做&#xff1f;执行命令 npm install -g vue/cli 全局安装&#xff0c;之后就可以在控制台中使用vue create programName 来创建一个项目。为什么可以直接使用vue命令&#xff1f;这类支持命令的依赖会在项目中…