【機器學習】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=1K?pk?=1

  • 定義2:Gini系數(節點不純度)
    Gini系數表示“隨機抽取兩個樣本,類別不同的概率”,數學表達式為:
    Gini(D)=1?∑k=1Kpk2\text{Gini}(D) = 1 - \sum_{k=1}^K p_k^2Gini(D)=1?k=1K?pk2?

    • 推導邏輯:兩個樣本類別相同的概率為 ∑k=1Kpk?pk=∑pk2\sum_{k=1}^K p_k \cdot p_k = \sum p_k^2k=1K?pk??pk?=pk2?,因此類別不同的概率為 1?∑pk21 - \sum p_k^21?pk2?,值越小說明節點純度越高。
  • 定義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)=DD1???Gini(D1?)+DD2???Gini(D2?)
    其中 ∣D1∣、∣D2∣|D_1|、|D_2|D1?D2? 分別為 D1、D2D_1、D_2D1?D2? 的樣本數。

  • 分裂規則:對所有候選特征 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?=n1?i=1n?yi?,則節點的平方誤差為:
    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)=n1?i=1n?(yi??yˉ?D?)2

  • 分裂后的加權MSE
    分裂為 D1、D2D_1、D_2D1?D2? 后,總誤差為:
    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)=DD1???MSE(D1?)+DD2???MSE(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}1?n1?nnn 為原始樣本數)。經過 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 (1?n1?)nn?e1?0.368
    因此,每個 DtD_tDt? 約包含原始樣本的 63.2%1?0.3681 - 0.3681?0.368),未被選中的樣本稱為“袋外樣本(OOB)”,可用于無額外驗證集的模型評估。

  • 核心作用:通過樣本隨機,使不同樹的訓練集存在差異,避免所有樹擬合相同樣本的噪聲,降低樹之間的相關性。

2. 特征隨機選擇:進一步提升樹的多樣性

構建每棵決策樹的每個節點時,不使用全部 MMM 個特征,而是從 MMM 個特征中隨機選擇 mmm 個特征(通常取 m=Mm = \sqrt{M}m=M?m=log?2Mm = \log_2 Mm=log2?M),僅在這 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=1T?I(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)=T1?t=1T?ht?(x)

四、隨機森林有效性的數學解釋(方差降低)

隨機森林的核心優勢是降低方差(避免過擬合),其數學邏輯可通過“集成模型的方差分解”說明:

設集成模型的預測為 H(x)=1T∑t=1Tht(x)H(x) = \frac{1}{T} \sum_{t=1}^T h_t(x)H(x)=T1?t=1T?ht?(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?[T?Var(ht?(x))+T(T?1)?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))?+(1?T1?)?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
英文地址,請注明出處:http://en.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 數據可視化與分析平臺代碼,包含所有必要的組件和功能。這個平臺允許用戶上傳數據文件、進行基本的數據清洗、生成各種可視化圖表以及查看基礎統計分析結果。 產品設計 核心功能 數據上傳與管理(支…