【機器學習-4】 | 集成學習 / 隨機森林篇

集成學習與隨機森林學習筆記

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;技術背景…