集成学习与随机森林学习笔记

0 序言

本文将系统介绍BaggingBoosting两种集成学习方法随机森林算法,涵盖其原理、过程、参数等内容。通过学习,你能理解两种方法的区别,掌握随机森林的随机含义、算法步骤、优点及关键参数使用,明确各知识点的逻辑关联,本篇将主要围绕原理方面展开,下篇文章再具体用一个项目来加深巩固本文提到的随机森林算法。

1 Bagging(套袋法)

1.1 算法过程

样本抽取:采用Bootstrapping方法从原始样本集随机抽取n个训练样本,经过k轮抽取,得到k个相互独立且元素可重复的训练集。这样做是为了获得不同的训练数据,为后续构建多样化模型做准备。

举个例子:假设原始样本集是学生成绩数据集,包含 100 名学生的语文、数学、英语成绩(即(n = 100) ),要进行(k = 5)轮抽取。
每一轮都从这 100 条数据里,有放回地随机选 100 条,就像抽奖箱里有 100 个写着学生成绩的球,每次摸一个记录后再放回去,摸 100 次组成一轮的训练集。
5 轮后,得到 5 个训练集,每个训练集都是 100 条数据,数据可能有重复,也可能有遗漏,它们相互独立,为后续训练不同模型提供多样数据。

模型训练:使用得到的k个训练集分别训练k个模型,这里的模型可以是决策树、KNN等。通过多个模型的训练,能够综合不同模型的优势。

举个例子:接着上面学生成绩的例子,用 5 个训练集,分别训练 5 个决策树模型。
每个决策树依据各自训练集里的成绩数据,学习如何根据语文、数学成绩去判断学生的英语成绩等级。因为训练集不同,每个决策树学到的判断逻辑会有差异,后续就能综合这些差异模型的能力。

结果判定:在分类问题中,通过投票表决来确定最终结果,且所有模型的重要性相同。这是因为各模型是基于不同训练集独立训练的,地位平等。

举个例子:还是学生成绩分类任务,5 个决策树模型分别对一名新学生的成绩输出判断。
比如模型 1 认为是A 等,模型 2 认为是B 等,模型 3 认为是A 等,模型 4 认为是A 等,模型 5 认为是B 等
统计投票,A 等得 3 票,B 等得 2 票,最终就判定该学生英语等级为A 等,每个模型一票,公平表决。

所以,根据以上的例子,我们放到我们的训练集中去体现这个思想,

那就可以参照下图进行理解。
在这里插入图片描述

2 Boosting(提升法)

2.1 算法过程

样本权重:为训练集样本建立权值wiw_iwi,权值表示对样本的关注度,对于误分类概率高的样本会加大其权值。这样可以让模型更关注难以分类的样本,提升模型性能。

模型组合:迭代生成弱分类器,然后通过一定策略进行组合,例如AdaBoost算法会给弱分类器进行加权线性组合,其中误差小的弱分类器权值更大。通过这种方式,能让性能好的弱分类器在最终结果中发挥更大作用。

可以参考下面图片辅助理解。
在这里插入图片描述

3 Bagging与Boosting的主要区别

对比项BaggingBoosting
样本选择Bootstrap随机有放回抽样训练集不变,改变样本权重
样本权重均匀取样,权重相等依错误率调整,错误率高的样本权重越大
预测函数权重所有预测函数权重相等误差小的预测函数权重越大
并行计算预测函数可并行生成需按顺序迭代生成

4 随机森林

4.1 基本概念

随机森林由Bagging + 决策树组成,其产生是为了解决决策树泛化能力弱的问题。
通过利用Bagging方法产生不同的数据集来生成多棵决策树,从而提升预测准确率,但会损失部分直观解释性。

4.2 随机含义

样本随机:使用Bootstrap方法从样本集中随机选取n个样本用于训练每棵树。这样能保证每棵树的训练样本具有差异性。
特征随机:从所有属性中随机选取k个,然后选择最佳分割属性来构建CART决策树(也可使用SVM等其他模型)。通过特征的随机选择,进一步增加了树的多样性。

4.3 算法步骤

重复样本随机、特征随机的步骤m次,构建m棵CART决策树。
多棵树通过投票表决(如一票否决少数服从多数加权多数等方式)来决定分类结果。

具体流程可以参考下图:

在这里插入图片描述

4.4 优点

  • 由于只选择部分样本和特征进行训练,能够避免模型过拟合
  • 随机选择样本与特征的方式,使得模型的抗噪能力好、性能稳定。
  • 可以处理高维数据,无需进行特征选择。
  • 适合进行并行计算,且实现简单。

4.5 流程可视化与局限性

4.5.1 流程可视化理解

可见下图,随机森林先预设超参数(如树的数量、层数 ),再通过随机采样(样本 + 特征双随机 )训练多棵决策树,最后整合结果(分类求众数、回归求均值 )。
流程清晰体现多棵树并行训练→结合器统一输出的模式。

4.5.2 局限性

模型存在泛化与复杂度矛盾:虽通过随机化提升泛化,但整体过于General,遇到极复杂、超出训练规律的样本,因单棵树能力有限,集成后也难精准处理,即 起点高(基于 Bagging 和决策树已有基础)但天花板低(依赖基础组件能力,难突破单个弱学习器上限)
在实际应用中,需结合场景权衡。
简单规律任务表现好,超复杂、需深度挖掘的场景,可能需更复杂模型配合。

4.6 sklearn函数及参数

4.6.1 关键参数max_features

Auto/None:使用所有特征。
sqrt:每棵子树使用总特征数的平方根个特征
log2max_features=log2(n_features)max\_features = log2(n\_features)max_features=log2(n_features)
0.2:子树使用20%的特征,也可采用0.x格式来考察不同特征占比的作用。
增加max_features理论上可能因为节点选择更多样而提升模型性能,这是随机森林的优势之一,但会降低单树的多样性,并且会使算法速度下降,因此需要平衡选择。

4.6.2 核心参数解析

n_estimators
  • 含义:子树的数量。
  • 影响:数量越多,模型性能通常更好,但代码运行速度会变慢。需要选择处理器能够承受的高值,默认值为10,一般至少设置为100,以让预测更优更稳定。
max_depth
  • 设置树的最大深度,默认值为None,此时叶节点要么是单一类别,要么达到min_samples_split条件。
min_samples_split
  • 分割内部节点所需的最少样本数量,默认值为2。
min_samples_leaf
  • 叶子节点包含的最少样本数,默认值为1。
bootstrap
  • 控制是否进行有放回抽样,默认值为True
min_impurity_decrease
  • 规则:只有当分裂后杂质度的减少效果高于该值(默认值为0)时,节点才会分裂。
min_weight_fraction_leaf
  • 条件:节点对应的实例数与总样本数的比值≥该值(默认值为0)时,才能成为叶子节点。
max_leaf_nodes
  • 默认值为None,此时会以最优优先方式生成树,优先选择杂质少(纯度高)的叶子节点。
min_impurity_split
  • 阈值:当节点的杂质度高于此值时则进行分裂,低于此值则成为叶子节点,用于控制树的增长。
criterion
  • "gini"(默认值,用于计算基尼不纯度)或"entropy"(用于计算信息增益),用于选择最优节点。
splitter
  • "best"(默认值,选择不纯度最大的属性)或"random"(随机选择属性),建议使用默认值。
n_jobs
  • 指定引擎可用的处理器数量,-1表示无限制,1表示使用1个,输入数字n则使用n个,这对于并行的Bagging等集成算法很重要。
random_state
  • 使结果可复现,当确定该值后,在参数和训练数据不变的情况下,结果相同。

4.6 程序示例

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 加载数据集
data = load_iris()
X = data.data
y = data.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建随机森林分类器
rf = RandomForestClassifier(n_estimators=100, max_features='sqrt', random_state=42)# 训练模型
rf.fit(X_train, y_train)# 预测
y_pred = rf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率:{accuracy}")

5 小结

本文先介绍了BaggingBoosting两种集成学习方法的算法过程及主要区别,我们可以了解到它们在样本选择、权重处理等方面的不同。随后重点讲解了随机森林,包括其基本概念、随机的两层含义、算法步骤、优点以及sklearn中相关参数的解析,并给出了程序示例。

通过学习,我们能清楚随机森林是如何结合Bagging和决策树的优势,以及如何根据实际需求调整参数来构建模型,为解决分类等问题提供了有效的方法和思路。

下文我们将具体通过一个项目来将这些原理应用进去。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入 Go 底层原理(十二):map 的实现与哈希冲突

1. 引言map 是 Go 语言中使用频率极高的数据结构,它提供了快速的键值对存取能力。虽然 map 的使用非常简单,但其底层的实现却是一个精心设计的哈希表,它需要高效地处理哈希计算、数据存储、扩容以及最关键的——哈希冲突。本文将解剖 map 的底…

Reinforcing General Reasoning without Verifiers

1.概述 DeepSeek-R1-Zero [10] 最近展示了使用可验证奖励的强化学习(RL)训练大型语言模型(LLMs)可以极大地提高推理能力。在这个可验证奖励的强化学习(RLVR)框架 [17] 中,LLM 生成一个推理过程(即,思维链,CoT),然后给出最终答案。一个基于规则的程序随后提取并评估…

Hyperbrowser MCP:重新定义网页抓取与浏览器自动化的AI驱动工具

在数据驱动的时代,网页内容的高效处理和自动化操作成为开发者和企业关注的焦点。Hyperbrowser MCP(Model Context Protocol Server)作为一款革命性的工具,通过AI与浏览器技术的深度融合,为网页抓取、结构化数据提取和浏览器自动化提供了全新的解决方案。无论你是需要从复杂…

关于Web前端安全防御XSS攻防的几点考虑

作为一位前端老鸟,总结一下web前端安全领域基础概念、防御策略、框架实践及新兴技术等几个维度的考虑。一、基础概念与核心漏洞1.XSS 攻击XSS(跨站脚本攻击)是 Web 前端安全中最常见的威胁之一,其核心是攻击者将恶意脚本注入到网页…

eSIM技术深度解析:从物理芯片到数字革命

当苹果公司在2018年首次在iPhone XS系列中引入eSIM技术时,许多用户可能并未意识到这个看似微小的改变将带来怎样的技术革命。从1991年第一张信用卡大小的SIM卡,到今天仅有5mm x 5mm的eSIM芯片,这不仅仅是尺寸的缩小,更是移动通信技…

通俗易懂解释Java8 HashMap

我们来用通俗易懂的方式解释一下 Java 8 中 HashMap 的原理,让你对它的结构、运行机制有清晰的理解。🌳 什么是 HashMap? HashMap 是 Java 中非常常用的数据结构,用于存储键值对(key-value)。你可以把它理解…

macOS安装配置Unbound DNS完整指南

文章目录macOS安装配置Unbound DNS完整指南🎯 为什么选择Unbound?📋 系统要求🚀 安装步骤1. 使用Homebrew安装2. 查看安装信息⚙️ 基础配置1. 备份默认配置2. 创建基础配置文件3. 基础配置内容配置53端口版本(高级用户…

学习模板元编程(2)std::true_type/false_type

目录 实现原理 应用场景 条件编译 通过特化和继承,实现std::is_xxx系列 思路 举例 例子1,is_bool 例子2,is_ptr 实现原理 std::true_type/false_type是模板intergral_constant的两种实现: using true_type integral_co…

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models论文阅读笔记

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 摘要 本文探索了思维链(chain of thought),即一系列中间推理过程,可以有效地增强大语言模型的复杂推理能力。 在三个大型语言模型上的实验表明&#xff0…

华为核心交换机S7700的内存OID

华为S7700系列交换机 SNMP内存相关OID说明 以下列出了华为S7700核心交换机在SNMP v2c下可用的内存相关OID,包括CPU内存利用率、物理内存总量、已用内存和空闲内存,并给出每个OID的功能描述、数据类型、单位、使用说明等信息。 1. CPU内存利用率(处理器内存占用百分比) OID名…

中州养老Day02:服务管理护理计划模块

本日任务:服务管理的后端开发 1.学习:护理项目 (1)评估开发工期的思路和注意事项 全面熟悉项目,了解项目重点,设置开发优先级 比如,在下面图片的接口文档中版本有1.0,2.0,3.0也就是功能的初代,二代,三代,所以我们在大致浏览所有功能后,要优先关注初代功能的实现 开发计划 …

JavaScript:Ajax(异步通信技术)

一、Ajax 核心概念Ajax(Asynchronous JavaScript and XML)是一种异步通信技术,核心特点:无刷新更新:无需重新加载整个页面异步处理:后台发送/接收数据不阻塞用户数据格式:支持 XML/JSON/HTML/纯…

leetcode 118. 杨辉三角 简单

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。示例 1:输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows 1 输出: [[1]]提示:1 < numRows…

jmeter--While控制器--循环直到接口响应符合条件

场景描述业务场景&#xff1a;单据计算接口情况&#xff1a;单据计算&#xff0c;调用接口1发起计算&#xff0c;接口2查询计算执行结果jmeter脚本&#xff1a;把接口1和接口2&#xff08;接口2循环调用&#xff0c;直到返回执行完成状态&#xff09;添加到一个事务&#xff0c…

组播 | 不同 VLAN 间数据转发实现逻辑 / 实验

注&#xff1a;本文为 “不同 vlan 间组播数据转发” 相关合辑。 图片清晰度受引文原图所限。 略作重排&#xff0c;如有内容异常&#xff0c;请看原文。 组播 VLAN&#xff1a;解决路由器为不同 VLAN 用户复制多份流量问题 aiaiai010101 于 2018-11-16 22:42:06 发布 一、组…

渗透测试常用指令

互联网设备的开放信息查询网站&#xff1a; https://fofa.info/ https://www.zoomeye.org/ https://quake.360.net/quake/#/index https://x.threatbook.com/v5/mapping https://hunter.qianxin.com/ 目录 一、网络探测与扫描 traceroute whatweb ping fping nc n…

51单片机串行通信的设计原理有哪些?

51单片机是指由美国INTEL公司生产的一系列单片机的总称&#xff0c;这一系列单片机包括了许多品种&#xff0c;如8031&#xff0c;8051&#xff0c;8751&#xff0c;8032&#xff0c;8052&#xff0c;8752等&#xff0c;其中8051是最早最典型的产品&#xff0c;该系列其它单片机…

设计模式十四:适配器模式(Adapter Pattern)

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;用于将一个类的接口转换成客户端期望的另一个接口&#xff0c;使原本不兼容的类可以一起工作。适配器模式的类型类适配器&#xff08;通过多重继承实现&#xff09;对象适配器&#xff08;通…

力扣经典算法篇-38-组合(回溯算法)

1、题干 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例 2&#xff1a; 输入&#xff1a;…

多人命题系统

目 录 摘 要 Abstract 1 系统概述 1.1 概述 1.2课题意义 1.3 主要内容 2 系统开发环境 2. 1 JAVA简介 2. .2 B/S架构 2.3 SSM三大框架 2.4访问数据库实现方法 2.5 系统对MySQL数据库的两种连接方式 3 需求分析 3.1技术可行性&#xff1a;技术背景…