机器学习 - 随机森林降方差公式推导

背景

在随机森林算法中,我们通过对数据集进行多次采样(有放回地抽样)并训练多个决策树模型,然后将这些模型的预测结果进行平均来得到最终的预测结果。这样做的一个重要好处是能够降低模型的方差(Variance),从而提高模型的泛化能力。

公式推导

首先,我们定义:
F ( x ) = 1 m ∑ i = 1 m f i ( x ) F(x) = \frac{1}{m} \sum_{i=1}^{m} f_i(x) F(x)=m1i=1mfi(x)
这里, F ( x ) F(x) F(x) 是随机森林模型的预测结果, f i ( x ) f_i(x) fi(x) 是第 i i i 个基模型(决策树)的预测结果, m m m 是基模型的数量。

我们要推导的是 Var [ F ( x ) ] \text{Var}[F(x)] Var[F(x)] ,即随机森林模型的预测结果的方差。

第一步:方差公式展开

Var [ F ( x ) ] = 1 m 2 Var ( ∑ i = 1 m f i ( x ) ) \text{Var}[F(x)] = \frac{1}{m^2} \text{Var}\left(\sum_{i=1}^{m} f_i(x)\right) Var[F(x)]=m21Var(i=1mfi(x))

第二步:方差的基本性质

Var ( ∑ i = 1 m f i ( x ) ) = E [ ( ∑ i = 1 m f i ( x ) ) 2 ] − ( E [ ∑ i = 1 m f i ( x ) ] ) 2 \text{Var}\left(\sum_{i=1}^{m} f_i(x)\right) = \mathbb{E}\left[\left(\sum_{i=1}^{m} f_i(x)\right)^2\right] - \left(\mathbb{E}\left[\sum_{i=1}^{m} f_i(x)\right]\right)^2 Var(i=1mfi(x))=E (i=1mfi(x))2 (E[i=1mfi(x)])2

所以,

Var [ F ( x ) ] = 1 m 2 ( E [ ( ∑ i = 1 m f i ( x ) ) 2 ] − ( E [ ∑ i = 1 m f i ( x ) ] ) 2 ) \text{Var}[F(x)] = \frac{1}{m^2} \left(\mathbb{E}\left[\left(\sum_{i=1}^{m} f_i(x)\right)^2\right] - \left(\mathbb{E}\left[\sum_{i=1}^{m} f_i(x)\right]\right)^2\right) Var[F(x)]=m21 E (i=1mfi(x))2 (E[i=1mfi(x)])2

第三步:展开平方项

E [ ( ∑ i = 1 m f i ( x ) ) 2 ] = E [ ∑ i = 1 m f i ( x ) 2 + ∑ i ≠ j f i ( x ) f j ( x ) ] \mathbb{E}\left[\left(\sum_{i=1}^{m} f_i(x)\right)^2\right] = \mathbb{E}\left[\sum_{i=1}^{m} f_i(x)^2 + \sum_{i \neq j} f_i(x) f_j(x)\right] E (i=1mfi(x))2 =E i=1mfi(x)2+i=jfi(x)fj(x)

( E [ ∑ i = 1 m f i ( x ) ] ) 2 = ( ∑ i = 1 m E [ f i ( x ) ] ) 2 = m 2 ( E [ f 1 ( x ) ] ) 2 \left(\mathbb{E}\left[\sum_{i=1}^{m} f_i(x)\right]\right)^2 = \left(\sum_{i=1}^{m} \mathbb{E}[f_i(x)]\right)^2 = m^2 (\mathbb{E}[f_1(x)])^2 (E[i=1mfi(x)])2=(i=1mE[fi(x)])2=m2(E[f1(x)])2

代入上式,

Var [ F ( x ) ] = 1 m 2 ( m E [ f 1 ( x ) 2 ] + m ( m − 1 ) E [ f 1 ( x ) f 2 ( x ) ] − m 2 ( E [ f 1 ( x ) ] ) 2 ) \text{Var}[F(x)] = \frac{1}{m^2} \left(m \mathbb{E}[f_1(x)^2] + m(m-1) \mathbb{E}[f_1(x) f_2(x)] - m^2 (\mathbb{E}[f_1(x)])^2\right) Var[F(x)]=m21(mE[f1(x)2]+m(m1)E[f1(x)f2(x)]m2(E[f1(x)])2)

第四步:利用协方差

E [ f 1 ( x ) f 2 ( x ) ] = Cov ( f 1 ( x ) , f 2 ( x ) ) + E [ f 1 ( x ) ] E [ f 2 ( x ) ] \mathbb{E}[f_1(x) f_2(x)] = \text{Cov}(f_1(x), f_2(x)) + \mathbb{E}[f_1(x)] \mathbb{E}[f_2(x)] E[f1(x)f2(x)]=Cov(f1(x),f2(x))+E[f1(x)]E[f2(x)]

代入,

Var [ F ( x ) ] = 1 m 2 ( m E [ f 1 ( x ) 2 ] + m ( m − 1 ) ( Cov ( f 1 ( x ) , f 2 ( x ) ) + ( E [ f 1 ( x ) ] ) 2 ) − m 2 ( E [ f 1 ( x ) ] ) 2 ) \text{Var}[F(x)] = \frac{1}{m^2} \left(m \mathbb{E}[f_1(x)^2] + m(m-1) (\text{Cov}(f_1(x), f_2(x)) + (\mathbb{E}[f_1(x)])^2) - m^2 (\mathbb{E}[f_1(x)])^2\right) Var[F(x)]=m21(mE[f1(x)2]+m(m1)(Cov(f1(x),f2(x))+(E[f1(x)])2)m2(E[f1(x)])2)

展开并简化,

Var [ F ( x ) ] = 1 m Var ( f 1 ( x ) ) + m − 1 m Cov ( f 1 ( x ) , f 2 ( x ) ) \text{Var}[F(x)] = \frac{1}{m} \text{Var}(f_1(x)) + \frac{m-1}{m} \text{Cov}(f_1(x), f_2(x)) Var[F(x)]=m1Var(f1(x))+mm1Cov(f1(x),f2(x))

ρ = Cov ( f 1 ( x ) , f 2 ( x ) ) / Var ( f 1 ( x ) ) \rho = \text{Cov}(f_1(x), f_2(x)) / \text{Var}(f_1(x)) ρ=Cov(f1(x),f2(x))/Var(f1(x)),即基模型间的相关系数,则:

Var [ F ( x ) ] = ρ Var ( f 1 ( x ) ) + 1 − ρ m Var ( f 1 ( x ) ) \text{Var}[F(x)] = \rho \text{Var}(f_1(x)) + \frac{1-\rho}{m} \text{Var}(f_1(x)) Var[F(x)]=ρVar(f1(x))+m1ρVar(f1(x))

这样,我们就得到了随机森林模型的方差公式,它表示为基模型方差与基模型间协方差的组合。

解释

  • 降低方差:通过多个基模型的平均,可以有效降低单个模型的方差,这也是 Bagging 方法的核心优势之一。
  • 相关性影响:基模型间的相关性越低(即 $ \rho $ 越小),模型的方差降低得越明显。

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

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

相关文章

高级java每日一道面试题-2024年7月27日-并发篇-Thread类中的yield方法有什么作用?

面试官: Thread类中的yield方法有什么作用? 我回答: Java 的 Thread 类中的 yield 方法是一个线程调度相关的API,它的作用是让当前正在运行的线程放弃CPU时间片,使得其他具有相同优先级的线程有机会被执行。下面我们详细探讨一下 yield 方法的作用和使…

【笔记-软考】层次式架构-业务逻辑层架构设计

Author:赵志乾 Date:2024-07-28 Declaration:All Right Reserved!!! 1. 组件设计 业务逻辑组件包括两部分:接口和实现,其中接口用于定义组件必须实现的方法,其可以让控制…

2399. 检查相同字母间的距离(python3)

两种解法: 第一种,暴力解法,采用双重循环,解决问题(时间复杂度较高) class Solution:def checkDistances(self, s: str, distance: List[int]) -> bool:n len(s)for i in range(n):for j in range(i …

Hive3:Hive初体验

1、创建表 CREATE TABLE test(id INT, name STRING, gender STRING);2、新增数据 INSERT INTO test VALUES(1, 王力红, 男); INSERT INTO test VALUES(2, 钉钉盯, 女); INSERT INTO test VALUES(3, 咔咔咔, 女);3、查询数据 简单查询 select * from test;带聚合函数的查询 …

论文写作之latex配置(VSCODE+TEXT LIVE)

1.overleaf 初学者学习latex可以用这个练习,可以在线编辑十分方便,但是编译时间受限制 网站:https://www.overleaf.com/project 2.Tex live 选择一个.iso文件下载 网站:Index of /CTAN/systems/texlive/Images/ 下载成功&am…

exuberant ctags 支持 typescript 解析

exuberant ctags 支持 typescript 解析 exuberant ctags 是 GNU ctags 的替代品。 最近在看 nodejs 的项目代码,老规矩用它生成 tags 文件在 vim 中看。 可惜对于项目中的 typescript 文件,无法识别及解析。 查了下是否能让 ctags 支持 typescript 分析…

2024第三届钉钉杯大学生大数据挑战赛【A题】完整分享

2024第三届钉钉杯大学生大数据挑战赛已经开赛,小编给大家带来非常实用的助力【A题】完整,(看图片下方的说明),资料预览: 微信公众号

MongoDB流量分析

MongoDB流量分析通常指的是对MongoDB数据库的网络通信量、操作频率、性能指标和资源利用情况进行监控和分析的过程。这有助于理解数据库的负载、性能、潜在的瓶颈和安全状况,以便进行优化和维护。MongoDB流量分析可以涵盖以下几个方面: 网络流量监控&…

react Vant中如何获取步进器的值

在React中使用Vant(一个轻量、可靠的移动端Vue组件库,虽然原生是为Vue设计的,但如果你在使用的是React版本的Vant,比如通过某些库或框架桥接Vue组件到React,或者是一个类似命名的React UI库),获…

进阶篇,内附代码:锂电池二阶模型-离线与在线参数辨识

锂电池二阶模型-在线参数辨识 背景二阶等效电路模型介绍二阶模型的离线参数辨识二阶模型的RLS表达式递推代码已知问题背景 锂电池一阶戴维南等效模型的参数辨识方法,已经在前面两期详细地讲解了一轮。 一阶模型-离线参数辨识一阶模型-在线参数辨识本期继续讲解一下如何进行二…

多线程初阶(三)- 线程案例

目录 1.单例模式 (1)饿汉模式 (2)懒汉模式 前言 懒汉式1-synchronized加锁 懒汉式2-双重if保障 懒汉式3-volatile防止误判 2.生产者消费者模型 (1)阻塞队列 (2)优点 解耦…

@InitBinder 注解

InitBinder 注解 介绍 InitBinder注解可以作用在被Controller注解的类的方法上,表示为当前控制器注册一个属性编辑器,用于对WebDataBinder进行初始化,且只对当前的Controller有效。InitBinder标注的方法会被多次执行的,也就是说…

5万字长文吃透快手大数据面试题及参考答案(持续更新)

目录 Flink为什么用aggregate()不用process() 为什么使用aggregate() 为什么不用process() 自定义UDF, UDTF实现步骤,有哪些方法?UDTF中的ObjectInspector了解吗? 自定义UDF实现步骤 自定义UDTF实现步骤 UDTF中的ObjectInspector Spark Streaming和Flink的区别 Flu…

后端返回列表中包含图片id,如何将列表中的图片id转化成url

问题描述 如果我有一个列表数据,列表中每个对象都包含一个图片id,现在我需要将列表中的图片id转化成图片,然后再页面上显示出来 如果你有一个列表数据,列表中每个对象都包含一个图片 ID,并且你想将这些图片 ID 转化为…

鸿蒙OpenHarmony Native API【结构体】 头文件

OH_Drawing_BitmapFormat Overview Related Modules: [Drawing] Description: 结构体用于描述位图像素的格式,包括颜色类型和透明度类型 Since: 8 Version: 1.0 Summary Public Attributes Public Attribute NameDescriptioncolorFormatalphaFormat De…

在Spring Boot中实现异步处理与并发控制

在Spring Boot中实现异步处理与并发控制 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入探讨如何在Spring Boot中实现异步处理与并发控制。这一过程涉及到异步任务的执行、…

QT:控件样式设置误区

当我设置不同控件格式样式,原先的代码如下 //设置MainWindow的背景R颜色this->setStyleSheet("QMainWindow{background-color:#F5F8FD;}");//设置菜单栏字体和背景颜色this->setStyleSheet("QMenuBar{color:#FFFFFF;background-color:#2A579A;…

PlantUML学习笔记-嵌入式系统设计常用图例

在嵌入式系统设计过程中,需要使用一些图例对系统框架及业务流程进行说明,以便于多人协同开发及后期的系统维护,提高团队开发效率。 1. 嵌入式设计开发常使用的图例: 1.1 用例图(Use Case Diagram) 用例图…

KamaCoder 99. 岛屿数量 + Leetcode 200. Number of Islands

99. 岛屿数量 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输…

【LeetCode】栈 - 20.有效的括号、150.逆波兰表达式求值、155.最小栈、栈的压入、弹出序列

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构 📚本系列文章为个人学…