有监督分类:集成分类(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

相关文章

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

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

Swagger2与Springdoc集成与使用详解

《Swagger2与Springdoc集成与使用详解》:本文主要介绍Swagger2与Springdoc集成与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1. 依赖配置2. 基础配置2.1 启用 Springdoc2.2 自定义 OpenAPI 信息3.

Spring Boot 集成 Solr 的详细示例

《SpringBoot集成Solr的详细示例》:本文主要介绍SpringBoot集成Solr的详细示例,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录环境准备添加依赖配置 Solr 连接定义实体类编写 Repository 接口创建 Service 与 Controller示例运行

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

springboot集成Lucene的详细指南

《springboot集成Lucene的详细指南》这篇文章主要为大家详细介绍了springboot集成Lucene的详细指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起... 目录添加依赖创建配置类创建实体类创建索引服务类创建搜索服务类创建控制器类使用示例以下是 Spring

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则