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

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)的信号分解方…

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

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

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

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

嵌入式杂记 - 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 清零数据段例子 在嵌入式开发中,我们经常都会使用一些IDE,例…

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 应用程序开发的状态…

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

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

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

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

基于SSH的java记账管理系统

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

初识优先级队列与堆

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

git常用命令指南

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

C++STL的string模拟实现

文章目录 前言string的成员变量成员函数构造函数拷贝构造赋值重载 模拟实现string各种接口print迭代器普通迭代器const迭代器 string比较大小push_backinsert 和 eraseinserterase reserve和resizereserveresize swapfindcout和cincoutcin 前言 今天要讲string的底层实现&…

总线(什么是南北桥?您都用过哪些总线?)

什么是总线? 计算机系统中的总线(Bus)是指计算机设备和设备之间传输信息的公共数据通道,是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多…

python基于轻量级GhostNet模型开发构建23种常见中草药图像识别系统

轻量级识别模型在我们前面的博文中已经有过很多实践了,感兴趣的话可以自行移步阅读: 《移动端轻量级模型开发谁更胜一筹,efficientnet、mobilenetv2、mobilenetv3、ghostnet、mnasnet、shufflenetv2驾驶危险行为识别模型对比开发测试》 《基…

Vue 核心 数据监听 computed | watch

Vue 核心 数据监听 computed | watch 一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 (演示&…

selenium 解决 id定位、class定位中,属性值带空格的解决办法

一、前置说明 selenium遇到下面这种元素&#xff1a; <th id"demo id" class"value1 value2 value3 ">1、虽然id一般不会有空格&#xff0c;但是前端错误的这种写法(如下图)&#xff0c;会造成使用id定位不到元素&#xff0c;如&#xff1a; find…

IOday6作业

1>使用有名管道&#xff0c;完成两个进程的相互通信 //create.c #include<myhead.h>int main(int argc, const char *argv[]) {if((mkfifo("myfifo1",0664)) -1){perror("mkfifo");return -1;}if((mkfifo("myfifo2",0664)) -1){perror…

MYSQL练题笔记-高级查询和连接-这系列最后一题以及下个系列(子查询)的第一题

今天做了下面两题&#xff0c;到第三题的时候想了下但是没有太多的思路&#xff0c;然后看题解的时候实在是觉得自己不会&#xff0c;打算明天看吧。 1.按分类统计薪水相关的表和题目如下 我是想着简化问题&#xff0c;先找出薪水低于30000的员工&#xff0c;然后找这些员工的上…