机器学习_第二篇 分类算法(4)_集成学习【bagging(袋装法)】

2024-03-07 23:20

本文主要是介绍机器学习_第二篇 分类算法(4)_集成学习【bagging(袋装法)】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Bagging(bootstrap aggregating)采用的是随机有放回的选择训练数据构造分类器,最后组合。(一种根据均匀概率分布从数据中重复抽样(有放回)的技术)

随机森林是bagging中的一种方法。以随机森林为例进行说明

随机森林是构造很多颗决策树,形成一个森林,然后用这些决策树共同决策输出类别是什么。

随机森林算法是在构建单一决策树的基础上进行的,同时它也是对单一决策树算法的延伸和改进。

在整个随机森林算法的过程中,有两个随机过程:a. 输入数据—>随机从整体训练数据集中选取一部分作为一颗决策树的构建,而且是有放回的选取。 b. 特征选取—>每棵决策树所需的特征是从整体的特征集中随机选取的。

(这两个随机过程使得随机森林很大程度上避免了过拟合现象的出现)

A、随机森林算法具体实现过程:

  1. 从训练数据中选取n个数据作为训练数据的输入,一般情况下n是远远小于整体的训练数据N,这样就会造成有一部分数据是无法被去到的,这部分数据被称为袋外数据,可以使用袋外数据做误差分析。
  2. 选取输入的训练数据后,构建决策树(方法:每一个分裂节点从整体的特征集M中选取m个特征构建,一般情况下m远小于M,通常是log2或者sqrt的数量),从这m个属性中根据某种策略(如gini减少或信息增益等)确定分裂属性。
  3. 重复b步骤,直到不能分裂或达到我们设定的阈值(如叶子结点树或的树的深度),此时建立了一个决策树
  4. 重复上面的a,b,c步骤,直到达到预定树的颗数为止。

 

随机森林算法的注意点:

1、 在构建决策树的过程中是不需要剪枝的。 
2、 整个森林的树的数量和每棵树的特征需要人为进行设定。 
3、 构建决策树的时候分裂节点的选择是依据最小基尼系数的。

随机森林有很多的优点:

a. 在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合。

b. 在当前的很多数据集上,相对其他算法有着很大的优势,两个随机性的引入,使得随机森林具有很好的抗噪声能力。

c. 它能够处理很高维度(feature很多)的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据集无需规范化。

d. 在创建随机森林的时候,对generlization error使用的是无偏估计。

e. 训练速度快,可以得到变量重要性排序。

f. 在训练过程中,能够检测到feature间的互相影响。

g 容易做成并行化方法。

h. 实现比较简单。

 

这篇关于机器学习_第二篇 分类算法(4)_集成学习【bagging(袋装法)】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

springboot简单集成Security配置的教程

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

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

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

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

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.