【机器学习】7.随机森林之数学原理

随机森林(Random Forest)的数学原理核心是“决策树基学习器 + Bootstrap抽样 + 特征随机选择” 的集成框架,通过降低单棵决策树的方差、提升模型泛化能力来工作。以下分步骤解析其数学推导与核心逻辑:

一、 基学习器:决策树的节点分裂准则(以CART树为例)

随机森林的基学习器通常是CART树(分类与回归树),其核心是通过“节点不纯度”准则选择最优分裂特征与阈值。最常用的准则是Gini系数(分类任务)和平方误差(回归任务)。

1. 分类任务:Gini系数的推导与分裂逻辑

Gini系数衡量节点的“类别混乱度”(不纯度),值越小表示节点类别越集中(纯度越高)。

  • 定义1:节点样本分布
    设某节点包含的样本集为 D={(x1,y1),(x2,y2),...,(xn,yn)}D = \{ (x_1,y_1), (x_2,y_2), ..., (x_n,y_n) \}D={(x1,y1),(x2,y2),...,(xn,yn)},共 KKK 个类别,第 kkk 类样本的数量为 nkn_knk,则该类样本在节点中的比例为:
    pk=nkn,∑k=1Kpk=1p_k = \frac{n_k}{n}, \quad \sum_{k=1}^K p_k = 1pk=nnk,k=1Kpk=1

  • 定义2:Gini系数(节点不纯度)
    Gini系数表示“随机抽取两个样本,类别不同的概率”,数学表达式为:
    Gini(D)=1−∑k=1Kpk2\text{Gini}(D) = 1 - \sum_{k=1}^K p_k^2Gini(D)=1k=1Kpk2

    • 推导逻辑:两个样本类别相同的概率为 ∑k=1Kpk⋅pk=∑pk2\sum_{k=1}^K p_k \cdot p_k = \sum p_k^2k=1Kpkpk=pk2,因此类别不同的概率为 1−∑pk21 - \sum p_k^21pk2,值越小说明节点纯度越高。
  • 定义3:特征分裂后的加权Gini系数
    若用特征 AAA 的阈值 aaa 将节点 DDD 分裂为左子节点 D1D_1D1(满足 A≤aA \leq aAa)和右子节点 D2D_2D2(满足 A>aA > aA>a),则分裂后的总不纯度为加权平均
    Gini(D,A,a)=∣D1∣∣D∣⋅Gini(D1)+∣D2∣∣D∣⋅Gini(D2) \text{Gini}(D, A, a) = \frac{|D_1|}{|D|} \cdot \text{Gini}(D_1) + \frac{|D_2|}{|D|} \cdot \text{Gini}(D_2) Gini(D,A,a)=DD1Gini(D1)+DD2Gini(D2)
    其中 ∣D1∣、∣D2∣|D_1|、|D_2|D1D2 分别为 D1、D2D_1、D_2D1D2 的样本数。

  • 分裂规则:对所有候选特征 AAA 和所有可能阈值 aaa,选择使 Gini(D,A,a)\text{Gini}(D, A, a)Gini(D,A,a) 最小的 (A,a)(A, a)(A,a) 作为当前节点的分裂方式。

2. 回归任务:平方误差准则

回归任务中,节点不纯度用“样本标签与节点均值的平方误差”衡量,目标是最小化分裂后的误差。

  • 节点均值与平方误差
    节点 DDD 的标签均值为 yˉD=1n∑i=1nyi\bar{y}_D = \frac{1}{n} \sum_{i=1}^n y_iyˉD=n1i=1nyi,则节点的平方误差为:
    MSE(D)=1n∑i=1n(yi−yˉD)2 \text{MSE}(D) = \frac{1}{n} \sum_{i=1}^n (y_i - \bar{y}_D)^2 MSE(D)=n1i=1n(yiyˉD)2

  • 分裂后的加权MSE
    分裂为 D1、D2D_1、D_2D1D2 后,总误差为:
    MSE(D,A,a)=∣D1∣∣D∣⋅MSE(D1)+∣D2∣∣D∣⋅MSE(D2) \text{MSE}(D, A, a) = \frac{|D_1|}{|D|} \cdot \text{MSE}(D_1) + \frac{|D_2|}{|D|} \cdot \text{MSE}(D_2) MSE(D,A,a)=DD1MSE(D1)+DD2MSE(D2)
    选择使该值最小的 (A,a)(A, a)(A,a) 进行分裂。

二、随机森林的核心集成策略

单棵决策树易过拟合(方差大、偏差小),随机森林通过Bootstrap抽样(样本随机)特征随机选择降低树之间的相关性,从而降低集成模型的方差。

1. Bootstrap抽样(样本随机):构建多样化训练集

从原始样本集 DDD有放回抽样,为每棵树生成独立的训练集 DtD_tDt(共 TTT 棵树,对应 TTT 个训练集 D1,D2,...,DTD_1, D_2, ..., D_TD1,D2,...,DT))。

  • 抽样概率推导
    对单个样本 xix_ixi,每次抽样未被选中的概率为 1−1n1 - \frac{1}{n}1n1nnn 为原始样本数)。经过 nnn 次有放回抽样后,该样本仍未被选中的概率为:
    (1−1n)n→n→∞1e≈0.368 \left(1 - \frac{1}{n}\right)^n \xrightarrow{n \to \infty} \frac{1}{e} \approx 0.368 (1n1)nne10.368
    因此,每个 DtD_tDt 约包含原始样本的 63.2%1−0.3681 - 0.36810.368),未被选中的样本称为“袋外样本(OOB)”,可用于无额外验证集的模型评估。

  • 核心作用:通过样本随机,使不同树的训练集存在差异,避免所有树拟合相同样本的噪声,降低树之间的相关性。

2. 特征随机选择:进一步提升树的多样性

构建每棵决策树的每个节点时,不使用全部 MMM 个特征,而是从 MMM 个特征中随机选择 mmm 个特征(通常取 m=Mm = \sqrt{M}m=Mm=log⁡2Mm = \log_2 Mm=log2M),仅在这 mmm 个特征中选择最优分裂特征。

  • 数学表达:对第 ttt 棵树的第 jjj 个节点,特征子集为 St,j⊂{1,2,...,M}S_{t,j} \subset \{1,2,...,M\}St,j{1,2,...,M},满足 ∣St,j∣=m|S_{t,j}| = mSt,j=m,且 St,jS_{t,j}St,j 是从全体特征中均匀随机抽取的。

  • 核心作用:若所有树使用全部特征,易导致树的分裂方式高度相似(相关性高),集成后无法有效降低方差;特征随机选择强制树依赖不同特征,进一步降低树的相关性。

三、随机森林的预测规则(集成输出)

完成 TTT 棵决策树的训练后,通过“多数投票”(分类)或“均值聚合”(回归)得到最终预测结果。

1. 分类任务:多数投票

设第 ttt 棵树对样本 xxx 的预测类别为 ht(x)h_t(x)ht(x)ht(x)∈{1,2,...,K}h_t(x) \in \{1,2,...,K\}ht(x){1,2,...,K}),定义指示函数
I(ht(x)=c)={1若第 t 棵树预测 x 为类别 c0否则 I(h_t(x) = c) = \begin{cases} 1 & \text{若第 } t \text{ 棵树预测 } x \text{ 为类别 } c \\ 0 & \text{否则} \end{cases} I(ht(x)=c)={10若第 t 棵树预测 x 为类别 c否则
随机森林的最终预测类别为“得票最多的类别”: H(x)=arg⁡max⁡c∈{1,...,K}∑t=1TI(ht(x)=c)H(x) = \arg\max_{c \in \{1,...,K\}} \sum_{t=1}^T I(h_t(x) = c)H(x)=argmaxc{1,...,K}t=1TI(ht(x)=c)

2. 回归任务:均值聚合

ttt 棵树对样本 xxx 的预测值为 ht(x)h_t(x)ht(x)(连续值),最终预测为所有树预测值的均值:
H(x)=1T∑t=1Tht(x) H(x) = \frac{1}{T} \sum_{t=1}^T h_t(x) H(x)=T1t=1Tht(x)

四、随机森林有效性的数学解释(方差降低)

随机森林的核心优势是降低方差(避免过拟合),其数学逻辑可通过“集成模型的方差分解”说明:

设集成模型的预测为 H(x)=1T∑t=1Tht(x)H(x) = \frac{1}{T} \sum_{t=1}^T h_t(x)H(x)=T1t=1Tht(x),单棵树的期望预测为 hˉ(x)=E[ht(x)]\bar{h}(x) = \mathbb{E}[h_t(x)]hˉ(x)=E[ht(x)],则:

  • 单棵树的方差:Var(ht(x))=E[(ht(x)−hˉ(x))2]\text{Var}(h_t(x)) = \mathbb{E}[(h_t(x) - \bar{h}(x))^2]Var(ht(x))=E[(ht(x)hˉ(x))2]
  • 树之间的协方差:Cov(ht(x),hs(x))=E[(ht(x)−hˉ(x))(hs(x)−hˉ(x))]\text{Cov}(h_t(x), h_s(x)) = \mathbb{E}[(h_t(x) - \bar{h}(x))(h_s(x) - \bar{h}(x))]Cov(ht(x),hs(x))=E[(ht(x)hˉ(x))(hs(x)hˉ(x))]t≠st \neq st=s

集成模型的方差为:
Var(H(x))=1T2[T⋅Var(ht(x))+T(T−1)⋅Cov(ht(x),hs(x))] \text{Var}(H(x)) = \frac{1}{T^2} \left[ T \cdot \text{Var}(h_t(x)) + T(T-1) \cdot \text{Cov}(h_t(x), h_s(x)) \right] Var(H(x))=T21[TVar(ht(x))+T(T1)Cov(ht(x),hs(x))]
=Var(ht(x))T+(1−1T)⋅Cov(ht(x),hs(x)) = \frac{\text{Var}(h_t(x))}{T} + \left(1 - \frac{1}{T}\right) \cdot \text{Cov}(h_t(x), h_s(x)) =TVar(ht(x))+(1T1)Cov(ht(x),hs(x))

  • T→∞T \to \inftyT 时,第一项 Var(ht(x))T→0\frac{\text{Var}(h_t(x))}{T} \to 0TVar(ht(x))0
  • 第二项由“树的相关性”决定:Bootstrap抽样和特征随机选择降低了 Cov(ht(x),hs(x))\text{Cov}(h_t(x), h_s(x))Cov(ht(x),hs(x)),因此集成方差显著低于单棵树的方差。

五、总结

随机森林的数学逻辑可概括为:

  1. CART树作为基学习器,通过Gini系数/MSE实现节点最优分裂;
  2. Bootstrap抽样特征随机选择构建多样化的树,降低树的相关性;
  3. 多数投票/均值聚合集成多棵树的预测,最终实现“低方差、强泛化”的模型效果。

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

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

相关文章

大模型微调面试题全解析:从概念到实战

大模型微调面试题全解析&#xff1a;从概念到实战 微调基础概念 本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型开发 学习视频/籽料/面试题 都在这>>Github<< >>gitee<< &#xff08;一&#xff09;什么是微调 微调&#xf…

Linux: network: arp: arp_accept

文章目录 接收 linux 代码 arp协议的处理 接收 arp_accept - BOOLEAN Define behavior for gratuitous ARP frames who’s IP is not already present in the ARP table: 0 - don’t create new entries in the ARP table 1 - create new entries in the ARP table Both repli…

SpringBoot 整合 Langchain4j RAG 技术深度使用解析

目录 一、前言 二、Langchain4j RAG介绍 2.1 什么是LangChain4j 2.2 LangChain4j RAG技术介绍 2.2.1 RAG技术原理 2.2.2 LangChain4j中的RAG实现 2.2.3 LangChain4j RAG技术优势 2.2.4 LangChain4j RAG技术应用场景 三、LangChain4j RAG 技术深度使用 3.1 文档加载与解…

百度深度学习面试:batch_size的选择问题

题目在深度学习中&#xff0c;为什么batch_size设置为1不好&#xff1f;为什么batch_size设为整个数据集的大小也不好&#xff1f;&#xff08;假设服务器显存足够&#xff09;解答这是一个非常核心的深度学习超参数问题。即使显存足够&#xff0c;选择极端的 batch_size 也通常…

AWS Fargate 完全指南:在无服务器容器中释放应用潜能

容器化技术带来了应用交付的革命,但管理运行容器的底层服务器集群却带来了新的复杂性。如何在不牺牲容器灵活性的前提下,摆脱服务器的运维重负? AWS Fargate 应运而生。它是一款为容器打造的无服务器计算引擎,让您能够专注于构建应用程序,而无需管理服务器。本文将带您深…

WSL Ubuntu数据迁移

将 WSL 中的 Ubuntu 迁移到其他磁盘可有效释放 C 盘空间并优化系统性能。以下是详细步骤及注意事项&#xff1a;&#x1f4cd; ​​迁移步骤​​​​备份 WSL 数据&#xff08;防止意外丢失&#xff09;​​以管理员身份打开 PowerShell 或命令提示符。导出 Ubuntu 实例为压缩包…

基于STM32的病房监测系统/环境监测系统/人体健康监测系统

基于STM32的病房监测系统/环境监测系统/人体健康监测系统 持续更新&#xff0c;欢迎关注!!! 基于STM32的病房监测系统/环境监测系统/人体健康监测系统 随着科技的进步与人们健康意识的提升&#xff0c;环境与人体健康监测的需求日益增长。在医疗、居住和工作环境中&#xff0c…

【适合中小企业应用的Flask网站部署指南】【小白指南系列】如何在Windows Server服务器上部署Flask网站和SSL证书开启HTTPS

【适合中小企业应用的Flask网站部署指南】【小白指南系列】如何在Windows Server服务器上部署Flask网站和SSL证书开启HTTPS 前言&#xff1a; 上一篇文章已经配置好Redis数据库和网站雏形建立了。现在完善了一个比较重大的功能和进度之后&#xff0c;我们尝试初步将Flask项目网…

std::exchange详解

一、基本概念与函数原型 std::exchange 是 C++14 引入的标准库函数,定义于 <utility> 头文件。其核心功能是原子性地替换对象的值并返回旧值,适用于资源管理、状态机更新等场景。 函数原型: template <class T, class U = T> T exchange(T& obj,

kubernetes-dashboard使用http不登录

安装了k8s v1.28&#xff0c;想要安装kubernetes-dashboard以便可视化管理平台&#xff0c;网上很多资料都是版本比较低的&#xff0c;自己摸索了很久&#xff0c;终于搞定了。直接上配置文件&#xff0c;拿去kubectl apply -f k8s-dashb.yml就行了。 # Copyright 2017 The Kub…

道路车道线分割数据集左车道右车道中线labelme格式3494张4类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数)&#xff1a;3494标注数量(json文件个数)&#xff1a;3494标注类别数&#xff1a;4标注类别名称:["center_lane","right_lane","…

12.Shell脚本修炼手册--函数的基础认知与实战演练(fock炸弹!!)

Shell 函数的知识与实践 文章目录Shell 函数的知识与实践Shell 函数介绍Shell 函数的语法Shell 函数的执行1. 不带参数的函数执行2. 带参数的函数执行Shell 函数的基础实践示例 1&#xff1a;简单的 hello 函数&#xff08;验证 “先定义后调用”&#xff09;示例 2&#xff1a…

微信小程序设计的请求封装方案(request.js)

以下是为微信小程序设计的请求封装方案&#xff0c;包含代码示例和最佳实践建议&#xff1a; 基础请求封装&#xff08;request.js&#xff09; // 基础配置 const BASE_URL https://api.yourdomain.com; const TIMEOUT 10000;// 请求封装函数 const request (options) >…

【Linux系统】进程信号:信号的处理

上一篇文章在介绍完信号的产生和保存后&#xff0c;我们现在对信号有了一个基本的认识&#xff0c;信号由键盘、系统调用、硬件异常、软件条件等方式产生&#xff0c;然后被保存在三张表中&#xff0c;再将信号递达&#xff0c;操作系统有三种处理方式&#xff1a;默认处理、忽…

权限管理模块

登录相关权限管理模块(基础版)模块设计与实现优化点&#xff1a;前后端用户验证实现方式常见的攻击手段及防御手段权限管理模块(基础版) RBAC(Role-Base Access Control&#xff0c;基于角色的访问控制)&#xff1a;是权限管理的常用方案。 核心&#xff1a;通过用户 - 角色 -…

征服与守护:从拉里·埃里森看八号人格的职场王者之道

真正的强者&#xff0c;从不遵守别人的规则2010年&#xff0c;加利福尼亚州的圣何塞机场迎来了一架不速之客——一架意大利产的马基战斗机以一种极其霸道的姿态降落在跑道上。舱盖打开&#xff0c;走下来的不是空军飞行员&#xff0c;而是一位身穿飞行员服、戴着墨镜的企业家&a…

【Linux系统】命名管道与共享内存

前言&#xff1a; 上文我们讲到了匿名管道【Linux系统】匿名管道以及进程池的简单实现-CSDN博客 本文我们来讲一讲命名管道与共享内存 命名管道 上面我们讲到&#xff0c;匿名管道只能用于有血缘关系&#xff08;尤其父子&#xff09;的进程进行通信&#xff01;但如果…

搜索体验优化:ABP vNext 的查询改写(Query Rewrite)与同义词治理

&#x1f50e; 搜索体验优化&#xff1a;ABP vNext 的查询改写&#xff08;Query Rewrite&#xff09;与同义词治理 &#x1f4da; 目录&#x1f50e; 搜索体验优化&#xff1a;ABP vNext 的查询改写&#xff08;Query Rewrite&#xff09;与同义词治理1. 背景与问题界定 &…

Text2API与Text2SQL深度对比:自然语言驱动的数据交互革命

在数字化浪潮中&#xff0c;如何让人机交互更加自然流畅&#xff1f;Text2API与Text2SQL技术应运而生&#xff0c;它们如同魔法般将自然语言转化为机器可执行的指令&#xff0c;让数据交互不再高不可攀。本文将深入剖析这两项技术的原理、优劣势及应用场景&#xff0c;带您领略…

数据可视化与分析平台设计与实现案例

数据可视化与分析平台设计与实现案例(python) 下面分享一个完整的 Flask 数据可视化与分析平台代码,包含所有必要的组件和功能。这个平台允许用户上传数据文件、进行基本的数据清洗、生成各种可视化图表以及查看基础统计分析结果。 产品设计 核心功能 数据上传与管理(支…