树模型(2)随机森林

news2024/11/26 0:28:07

随机森林属于集成学习中bagging算法的延展,所以先来介绍一下集成学习。

**集成学习:**对于训练数据集,我们通过训练一系列个体学习器,并通过一定的结合策略将它们组合起来,形成一个强有力的学习器

**个体学习器:**个体学习器是相对于集成学习来说的,作为单个学习器,它通常是由一个现有的学习算法从训练数据产生,如C4.5决策树算法、BP神经网络算法等。个体学习器代表的是单个学习器,集成学习代表的是多个学习器的结合。

Bagging与Bosting

Bagging是并行式集成学习方法最著名的代表。它直接基于自助采样法(bootstrap sampling)。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m轮随机采样,我们得到m个样本的采样集,初始训练集中有的样本在采样集中多次出现,有的则从未出现,约63.2%的样本出现在采样集中,而未出现的约36.8%的样本可用作验证集来对后续的泛化性能进行“包外估计”。

照这样,我们可以采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,然后将这些基学习器进行结合。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法,这就是Bagging的基本流程。

从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等易受到样本扰动的学习器上效用更明显。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Boosting是一族可将弱学习器提升为强学习器的算法。它的基本原理:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,提高被错误分类的样本的权重,降低被正确分类的样本的权重,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最后将这T个基学习器进行加权结合。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • Bagging是个体学习器不存在强依赖关系,可以同时生成的并行化方法;Boosting是个体学习器间存在强依赖关系、必须串行生成的序列化方法。

  • 从偏差-方差分解角度看,Bagging主要关注降低方差,而Boosting主要关注降低偏差。

组合策略

1.平均法:①简单平均法②加权平均法

  • 当个体学习器性能相差较大时宜用加权平均法,而在个体学习器性能相近时宜用简单平均法。

2.投票法

①绝对多数投票法:哪类得票过半数,则预测为该类,否则拒绝预测。

②相对多数投票法:哪类得票最多,若同时多个类得票最多,则随机从中选取一个。

③加权投票法

3.学习法

当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。Stacking是学习法的典型代表。我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。

Stack先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。

随机森林

随机森林是Bagging的一个扩展变体,在理解了Bagging方法后,随机森林学习起来就容易多了。RF在以决策树作为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中加入了随机属性的选择。具体来说,传统决策树在选择划分属性时是在当前结点的所有候选属性(假定有d个)中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的候选属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。抽取的属性数k的选择比较重要,一般推荐 K = l o g 2 d K=log_{2}d K=log2d 。由此,随机森林的基学习器的“多样性”不仅来自样本的扰动,还来自属性的扰动,使得最终集成的泛化能力进一步增强。

随机森林特点主要是:

  • 个体学习器为决策树

  • 对训练样本进行采样

  • 对属性进行随机采样

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

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

相关文章

cartographer中的扫描匹配

cartographer中的扫描匹配 cartographer中使用了两种扫描匹配方法:CSM(相关性扫描匹配方法(暴力匹配))、ceres优化匹配方法 CSM可以简单地理解为暴力搜索,即每一个激光数据与子图里的每一个位姿进行匹配&…

数据结构和算法——树结构

又叫二叉排序树。 满二叉树:所有的叶子节点都在最后一层。 完全二叉树:如果所有叶子节点都在最后一层和倒数第二层,而且每个叶子节点都有左右子节点。 完全二叉树 前序遍历 1、先输出当前节点(初始是root节点)。 2、…

论文阅读:Image-to-Lidar Self-Supervised Distillation for Autonomous Driving Data

目录 摘要 Motivation 整体架构流程 技术细节 雷达和图像数据的同步 小结 论文地址: [2203.16258] Image-to-Lidar Self-Supervised Distillation for Autonomous Driving Data (arxiv.org) 论文代码:GitHub - valeoai/SLidR: Official PyTorch implementati…

股票买卖问题I、II、III、IV、V、VI

力控121、122、123、188、714、309。 买卖股票的第一题 121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设…

tomcat部署jenkins

tomcat部署jenkins 1.简介: Jenkins是一个开源的自动化服务器工具,用于持续集成和持续交付。它能够自动化构建、测试和部署软件项目,提高开发团队的效率和软件质量。 jenkins就是一个整合工具,把代码从git或者其他代码托管平台…

windows10 sockect tcp

1. 在vs下添加ws2_32.lib库 右键【项目】-【属性】-【链接器】-【输入】-【附加依赖项】,进行编辑,添加 ws2_32.lib库,去掉从父级或项目默认设置继承的勾选,如下图所示: 这是因为inet_addr是一个老函数,而…

【MySQL】索引的作用及知识储备

为什么要有索引 索引可以提高数据库的性能。不用加内存,不用改程序,不用调sql,只要执行正确的create indix,查询的速度就可能提高成百上千倍。但相应的代价是,插入,更新,删除的速度有所减弱。 …

【重新定义matlab强大系列十六】求解混合整数线性问题

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

【算法|动态规划No.18】leetcode718. 最长重复子数组

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

数据结构与算法-单链表小练习

🎈类定义 typedef int ElemType; typedef struct LNode {ElemType data;LNode* next; }LNode; class LinkList { private:LNode* head;public:LinkList();~LinkList();int deletelist(int x);void CreatList_h(int n);void print_evennode();void divide_LinkList(…

『GitHub Actions』部署静态博客指南

前言 之前博主是使用的 Jenkins 实现 vuepress 博客的自动部署与持续交付,但是因为现在迁移服务器到海外,并且服务器配置降低。现在经常出现服务器的 Jenkins 构建过程中 CPU 占用率过高,导致服务器卡死 然后我想的话既然只是部署静态博客&…

基于Java的博客管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Puppeteer实现上下滚动、打开新Tab、用户数据保存(三)

Puppeteer实现上下滚动、打开新Tab、用户数据保存(三) Puppeteer实现上下滚动、打开新Tab、用户数据保存(三)一、实现上下滚动二、打开新Tab三、用户数据保存四、效果演示 一、实现上下滚动 在自动化测试中,我们需要能…

计算机毕业设计选题推荐-springboot 蛋糕甜品店管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

YOLO目标检测——跌倒摔倒数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用:公共安全监控、智能家居、工业安全等活动区域无监管情况下的人员摔倒事故数据集说明:YOLO目标检测数据集,真实场景的高质量图片数据,数据场景丰富。使用lableimg标注软件标注,标注框质量高,含…

SpringBoot面试题1:什么是SpringBoot?为什么要用SpringBoot?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:什么是SpringBoot? Spring Boot 是一个用于快速开发独立的、基于 Spring 框架的应用程序的开源框架。它简化了 Spring 应用的配置和部署过程,使…

稚晖君项目复刻:L-ink门禁卡(1)——环境搭建与第一个项目创建

行文目录 前言其他文章正文开始STM32CubeMX安装STM32CubeMX安装L0的固件支持包Clion安装OpenOCD安装MinGw安装arm-none-eabi-gcc安装Clion配置 创建STM32工程创建STM32CubeMX工程更改芯片型号 参考文献 前言 其实关于稚晖君的L-ink门禁卡在我本科阶段就已经刷过好几次了&#x…

前端页面布局之【响应式布局】

目录 🌟前言🌟优点🌟缺点🌟media兼容性🌟利用CSS3-Media Query实现响应式布局🌟常见的媒体类型🌟常见的操作符🌟属性值🌟设备检测🌟响应式阈值选取&#x1f3…

使用vue3+element-ui plus 快速构建后台管理模板

一、安装 vue3 脚手架 npm create vuelatestcd vue-ui-template #切换到刚刚创建好的vue项目根目录中 npm install #下载项目所需要的依赖包 npm run dev #启动运行项目服务项目启动后,默认页面显示如下: 二、安装element-ui plus 官网链接:…