机器学习---集成学习的初步理解

1. 集成学习

        集成学习(ensemble learning)是现在非常火爆的机器学习方法。它本身不是一个单独的机器学

习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集

成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有

的机器学习领域都可以看到集成学习的身影。

集成学习通过建立几个模型来解决单⼀预测问题。它的⼯作原理是⽣成多个分类器/模型,各自独

立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何⼀个单分类的做出预测。 

 只要单分类器的表现不太差,集成学习的结果总是要好于单分类器的。

       对于训练集数据,通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强

学习器,以达到博采众长的目的。集成学习有两个主要的问题需要解决,第一是如何得到若干个个

体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。

2. 集成学习例子 

对下面实例D1进行分类,得到两个分类结果h1和h2:

对多个分类器的分类结果进行某种组合来决定最终的分类,以取得比单个分类器更好的性能:

定义:集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得

比单个学习器更好的学习效果的一种机器学习方法。如果把单个分类器比作一个决策者的话,集成

学习的方法就相当于多个决策者共同进行一项决策。

在概率近似正确(PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能

够学习它,如果正确率很高,那么就称这个概念是强可学习(strongly learnable)的。如果正确率

不高,仅仅比随机猜测略好,那么就称这个概念是弱可学习(weakly learnable)的。后来证明强

可学习与弱可学习是等价的。

3. 解决的问题

3.1 弱分类器之间的关系

第一种就是所有的个体学习器都是一个种类的,或者说是同质的。

第二种是所有的个体学习器不全是一个种类的,或者说是异质的。

个体学习器有两种选择:

第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或

者都是神经网络个体学习器

第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训

练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某

种结合策略来确定最终的分类强学习器

目前而言,同质个体学习器应用最广泛,一般常说的集成学习的方法都是指的同质个体学习器。而

同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间

是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基

本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,

一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。

3.2 如何选择个体学习器

考虑准确性和多样性:

准确性指的是个体学习器不能太差,要有一定的准确度;

多样性则是个体学习器之间的输出要具有差异性。

3.3 弱分类器的组合策略

平均法:对于数值类的回归预测问题

思想:对于若干个弱学习器的输出进行平均得到最终的预测输出。

简单平均法:
加权平均法:

其中wi是个体学习器hi的权重,通常有wi≥0,

②投票法:对于分类问题的预测

思想:多个基本分类器都进行分类预测,然后根据分类结果用某种投票的原则进行投票表决,按照

投票原则使用不同投票法:一票否决  、阈值表决 、 少数服从多数。

阈值表决:首先统计出把实例x划分为Ci和不划分为Ci的分类器数目分别是多少,然后当这两者比

例超过某个阈值的时候把x划分到Ci。

③学习法:之前的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差

较大。代表方法是Stacking。

思想:不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,分为2层。第一层是用

不同的算法形成T个弱分类器,同时产生一个与原数据集大小相同的新数据集,利用这个新数据集

和一个新算法构成第二层的分类器。

4. 集成学习方法

根据个体学习器的生成方式,目前的集成学习方法大致可分为两类:

Boosting:个体学习器间存在强依赖关系,必须串行生成的序列化方法;串行:下一个分类器只

在前一个分类器预测不够准的实例上进行训练或检验。

Bagging:个体学习器间不存在强依赖关系,可同时生成的并行化方法。并行:所有的弱分类器都

给出各自的预测结果,通过组合把这些预测结果转化为最终结果。

4.1 Boosting

重赋权法:即在训练过程的每一轮中,根据样本分布为每一个训练样本重新赋予一个权重。对无法

接受带权样本的基学习算法,则可以通过重采样法来处理,即在每一轮的学习中,根据样本分布对

训练集重新进行采样,在用重采样而来的样本集对基学习器进行训练。

代表算法:

Adboost,决策树+adboost=提升树

GBDTGradient BoostDecision Tree)梯度提升决策树,决策树+Gradient Boosting=GBDT

其他叫法: Gradient Tree Boosting,GBRT (Gradient BoostRegression Tree) 梯度提升回归树

                    MART (MultipleAdditive Regression Tree) 多决策回归树,Tree Net决策树网络

4.2 Bagging (bootstrap aggregation )

从样本集中用Bootstrap采样选出n个样本,在所有属性上,对这n个样本建立分类器(CART or

SVM or ...),重复以上两步m次,i.e.build m个分类器(CART or SVM or ...)。将数据放在这m

个分类器上跑,最后vote看到底分到哪一类。

Bootstrap方法是非常有用的一种统计学上的估计方法。 Bootstrap是对观测信息进行再抽样,进而

对总体的分布特性进行统计推断。Bootstrap是一种有放回的重复抽样方法,抽样策略就是简单的

随机抽样。

随机森林:决策树+bagging=随机森林

4.3 两者的区别

从偏差-方差分解的角度:

偏差(bias) 描述的是预测值的期望真实值之间的差距。偏差越大,越偏离真实数据。

方差(variance) 描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。

方差越大,数据的分布越分散。

Boosting主要关注降低偏差:偏差刻画了学习算法本身的拟合能力,Boosting思想,对判断错误的

样本不停的加大权重,为了更好地拟合当前数据,所以降低了偏差,因此Boosting能基于泛化性能

相当弱的学习器构建出很强的集成。Boosting是把许多弱的分类器组合成一个强的分类器。

Bagging主要是降低方差:度量了同样大小的数据集的变动所导致的学习性能的变化。刻画了数据

扰动所造成的影响。 Bagging思想,随机选择部分样本来训练处理不同的模型,再综合来减小方

差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效果更明显。Bagging是对许多

强(甚至过强)的分类器求平均。 

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

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

相关文章

多线程并发Ping脚本

1. 前言 最近需要ping地址,还是挺多的,就使用python搞一个ping脚本,记录一下,以免丢失了。 2. 脚本介绍 首先检查是否存在True.txt或False.txt文件,并在用户确认后进行删除,然后从IP.txt的文件中读取IP地…

CSS——sticky定位

1. 大白话解释sticky定位 粘性定位通俗来说,它就是相对定位relative和固定定位fixed的结合体,它的触发过程分为三个阶段 在最近可滚动容器没有触发滑动之前,sticky盒子的表现为相对定位relative【第一阶段】, 但当最近可滚动容…

【MATLAB】tvfEMD信号分解+FFT+HHT组合算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 TVFEMDFFTHHT组合算法是一种结合了总体变分模态分解(TVFEMD)、傅里叶变换(FFT)和希尔伯特-黄变换(HHT)的信号分解方…

vivado时序方法检查8

TIMING-30 &#xff1a; 生成时钟所选主源管脚欠佳 生成时钟 <clock_name> 所选的主源管脚欠佳 &#xff0c; 时序可能处于消极状态。 描述 虽然 create_generated_clock 命令允许您指定任意参考时钟 &#xff0c; 但是生成时钟应引用在其直接扇入中传输的时钟。此…

电子学会C/C++编程等级考试2021年06月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数字变换 给定一个包含5个数字(0-9)的字符串,例如 “02943”,请将“12345”变换到它。 你可以采取3种操作进行变换 1. 交换相邻的两个数字 2. 将一个数字加1。如果加1后大于9,则变为0 3. 将一个数字加倍。如果加倍后大于…

JS--异步的日常用法

目录 JS 异步编程并发&#xff08;concurrency&#xff09;和并行&#xff08;parallelism&#xff09;区别回调函数&#xff08;Callback&#xff09;GeneratorPromiseasync 及 await常用定时器函数 JS 异步编程 并发&#xff08;concurrency&#xff09;和并行&#xff08;p…

Python中一些有趣的例题

下面会写一些基础的例题&#xff0c;有兴趣的自己也可以练练手&#xff01; 1.假设手机短信收到的数字验证码为“278902”&#xff0c;编写一个程序&#xff0c;让用户输入数字验证码&#xff0c;如果数字验证码输入正确&#xff0c;提示“支付成功”&#xff1b;否则提示“数…

Python configparser 模块:优雅处理配置文件的得力工具

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 配置文件在软件开发中扮演着重要的角色&#xff0c;而Python中的 configparser 模块提供了一种优雅而灵活的方式来处理各种配置需求。本文将深入介绍 configparser 模块的各个方面&#xff0c;通过丰富的示例代码…

嵌入式杂记 - MDK的Code, RO-data , RW-data, ZI-data意思

嵌入式杂记 - Keil的Code, RO-data , RW-data, ZI-data意思 MDK中的数据分类MCU中的内部存储分布MDK中数据类型存储Code代码段例子 RO-data 只读数据段例子 RW-data 可读写数据段例子 ZI-data 清零数据段例子 在嵌入式开发中&#xff0c;我们经常都会使用一些IDE&#xff0c;例…

Hadoop学习笔记(HDP)-Part.17 安装Spark2

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

Web前端 ---- 【Vue】Vuex的使用(辅助函数、模块化开发)

目录 前言 Vuex是什么 Vuex的配置 安装vuex 配置vuex文件 Vuex核心对象 actions mutations getters state Vuex在vue中的使用 辅助函数 Vuex模块化开发 前言 本文介绍一种新的用于组件传值的插件 —— vuex Vuex是什么 Vuex 是一个专为 Vue.js 应用程序开发的状态…

浅谈前端代码里的命名规范与注释

浅谈前端代码里的命名规范与注释 在前端代码中&#xff0c;命名规范和注释是非常重要的。它们不仅有助于提高代码的可读性和可维护性&#xff0c;还可以帮助开发者之间更好地协作和沟通。下面是一些关于命名规范和注释的常见建议&#xff1a; 命名规范&#xff1a; 使用有意义…

【ArcGIS Pro微课1000例】0053:基于SQL Server创建与启用地理数据库

之前的文章有讲述基于SQL Server创建企业级地理数据库,本文讲述在SQL Server中创建常规的关心数据库,然后在ArcGIS Pro中将其启用,转换为企业级地理数据库。 1. 在SQL Server中创建数据库** 打开SQL Server 2019,连接到数据库服务器。 展开数据库连接,在数据库上右键→新…

python中的lambda关键字

对于一切很模糊的知识&#xff0c;首要的是抓住概念的定义。 lambda&#xff1a;在 Python 中用于创建匿名函数的关键字。 也即&#xff0c;lambda是一种关键字&#xff0c;这种关键字的作用是创建匿名函数。 这一段很好懂&#xff0c;就是匿名函数有点懵。 什么是匿名函数&…

mybatis-plus构造器查询

文章目录 Hutool工具包Vo与entity转换多表分页查询构造器&#xff1a;查询构造器&#xff1a;拼接构造器&#xff1a;删除操作构造器&#xff1a;修改操作查询关键字 Hutool工具包Vo与entity转换 BeanUtils&#xff1a;copyProperties(vo, entity)&#xff0c;vo转实体类。 L…

在装有 PostgreSQL 14 的 Red Hat8上安装 `pg_cron`

要在装有 PostgreSQL 14 的 Red Hat、CentOS、Fedora 或 Amazon Linux 上安装 pg_cron&#xff0c;请遵循以下步骤。这些步骤假定您已经安装了 PostgreSQL Global Development Group (PGDG) 的 PostgreSQL 版本。 安装 pg_cron 扩展 使用 yum 安装 pg_cron 扩展&#xff1a;s…

(四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)

一、无人机模型简介&#xff1a; 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献&#xff1a; [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、Tiki-taka算法&#xff08;TTA&#xf…

基于SSH的java记账管理系统

基于SSH的java记账管理系统 一、系统介绍二、功能展示四、其他系统实现五、获取源码 一、系统介绍 项目类型&#xff1a;Java EE项目 项目名称&#xff1a;基于SSH的记账管理系统 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 前端技术&#xff1a;HTML、CS…

初识优先级队列与堆

1.优先级队列 由前文队列queue可知&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;在此情况下&#xff0c;使用队列queue显然不…

git常用命令指南

目录 一、基本命令 1、创建分支 2、切换分支 3、合并分支 4、初始化空git仓库 二、文件操作 1、创建文件 2、添加多个文件 3、查看项目的当前状态 4、修改文件 5、删除文件 6、提交项目 三、实际操作 1、创建目录 2、进入新目录 3、初始化空git仓库 4、创建文…