有监督分类:集成分类(Bagging Boosting RandomForest)

2023-12-02 11:48

本文主要是介绍有监督分类:集成分类(Bagging Boosting RandomForest),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.前言

集成学习(Ensemble),是指把性能较低的多种弱学习器,通过适当组合形成高性能的强学习器的方法。“三个臭皮匠顶个诸葛亮”这句谚语用来形容集成分类器最合适不过了。这几年,关于集成分类的研究一直是机器学习领域的一个热点问题。在这里,只分析了两个我比较熟悉的集成分类方法。
  • 对多个弱学习器独立进行学习的Bagging学习法
  • 对多个弱学习器依次进行学习的Boosting学习法

   
虽然目前集成学习的思维方式适用于回归、分类等各种类型的机器学习任务,但这里之谈分类问题。

2.剪枝分类方法

剪枝分类是属于弱分类器的一种单纯分类器。剪枝分类是指,对于d次维的输入变量:

任意选定其中的一维,通过将其值与给定的与之相比较来进行分类的线性分类器。即以输入空间内的坐标轴于朝平面进行正交的方式对模式进行分类,原理如下所示:

剪枝分类器中的“枝”是从树上剪下来的枝节
剪枝分类器通过一层一层的积累形成树状结构成为决策树分类器
剪枝分类器的自由度很低,怎么都称不上是优秀的分类器,但是他确实具有计算成本低的优点。具体而言,对于n各训练样本,首先根据所选取的维度的数值进行分类。然后,对于i=1,...,n-1,计算顺序为i何i+1的训练样本在分类时的误差,使分类误差最小,从而决定分类边界。也就是说,剪枝分类器候补解最多只有n-1个,所以通过对所有可能的解进行分类误差的计算并确定最小值,由此就可以得到最终的解。

3.Bagging学习法

Bagging = Bootstrap Aggregation
Bootstrap是指从n个训练样本中随机选取n个,允许重复,生成与原始的训练样本集有些许差异的样本集的方法
Aggregation:聚集、集成。
在Bagging学习中,首先经过由自助生成虚拟的训练样本,并对这些样本进行学习,然后,反反复复这一过程,对得到的多个分类器的输出求平均值。具体算法流程如下图所示:

通过上述方法,就可以从大量略有不同的训练样本集合,得到多个稍微不同的弱分类器,然后在对这些分类器加以统合,就可以得到稳定可靠的分类器。
下图展示的是,利用剪枝分类器进行Bagging的实例:

对剪枝分类器进行Bagging学习实例(5000)

Bagging学习中,通过单一的剪枝分类器的组合,可以获得复杂的分类边界。
一般而言,像剪枝分类器这样非常单一的弱分类器,对其进行学习很少会发生过拟合现象,因此Bagging学习的重复次数设置为较大值是比较好的选择。在这种情况下,因为多个分类器的学习是个并列的过程,因此可以使用多台计算机并行处理,会使计算效率得到巨大的提升。
剪枝分类器不断地生长、积累,形成多层级的模型,该模型就称为“决策器分类器”(如山所述)。对决策树分类器进行Bagging学习的时候,通过随机选择输入变量中某个维度进行学习,可以大幅度提高分类器的性能,这种方法有个更熟悉的名字:随机森林学习

4.Boosting学习法

Boosting学习,首先使用一个原始的学习算法,对训练样本:

进行普通分类器学习。如果这个原始的学习算法性能不高,就不能对所有训练样本进行正确的分类。因此,对于不能正确分类的困难样本,就加大其权重(反之,对于能正确分类的简单样本则减少其权重),再重新进行学习。这样再次得到的分类器,对原本没能正确分类的样本,应该也能在一定程度上进行正确的分类了。然后,在循环多次进行加权学习,慢慢地就可以对所有训练样本都进行正确的分类了。
然而另一方面,在进行加权过程中,最开始就能够正常分类的样本的权重会慢慢变小,有可能造成建大的样本反而不能正确分类的情况。因此,Boosting学习应该边学习边更新样本的权重,并把学习过程中得到的所有分类器放在一起,对其可信度进行平均后训练得到强分类器。
样本的加权方法多种多样,最为标准的就是AdaBoost算法,如下图所示:

Adaboosting学习算法
可以分析一下决定分类器的权重Θj的式子:

根据该式,加权的误分类率R()越小,其权重Θ就越大,如下图所示:

Adaboosting学习中,基于加权误分类率R来确定分类器的权重Θ
下面是对剪枝分类器进行Adaboosting学习的一个例子:

对剪枝分类器进行Adaboosting学习(b=50000)

这篇关于有监督分类:集成分类(Bagging Boosting RandomForest)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/445229

相关文章

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o