機器學習(3)——決策樹

文章目錄

  • 1. 決策樹基本原理
    • 1.1. 什么是決策樹?
    • 1.2. 決策樹的基本構成:
    • 1.3. 核心思想
  • 2. 決策樹的構建過程
    • 2.1. 特征選擇
    • 2.1.1. 信息增益(ID3)
    • 2.1.2. 基尼不純度(CART)
    • 2.1.3. 均方誤差(MSE)
    • 2.2. 節點劃分
    • 2.3. 停止條件:
  • 3. 決策樹的剪枝(防止過擬合)
  • 4. 決策樹的優缺點
  • 5. 常見決策樹算法
  • 6. 樣例代碼:
  • 7. 歸納

1. 決策樹基本原理

1.1. 什么是決策樹?

決策樹(Decision Tree)是一種非參數的監督學習算法,適用于分類和回歸任務。其核心思想是通過一系列規則(if-then結構)對數據進行遞歸劃分,最終形成一棵樹形結構,實現預測或分類。

1.2. 決策樹的基本構成:

  • 根節點(Root Node):代表整個數據集,選擇第一個最優特征進行分裂。
  • 內部節點(Internal Nodes):代表對某個特征的判斷,用來決定如何分裂數據。
  • 葉子節點(Leaf Nodes):存放最終的預測結果,表示分類或回歸結果。

1.3. 核心思想

  • 目標:構建一棵樹,使得每個分支節點代表一個特征判斷,每個葉子節點代表一個預測結果。
  • 關鍵問題:
    • 如何選擇劃分特征?(特征選擇準則)
    • 何時停止劃分?(防止過擬合)

2. 決策樹的構建過程

決策樹的構建是一個遞歸分割(Recursive Partitioning)的過程

2.1. 特征選擇

選擇最佳特征:在每一步分裂中,算法會選擇一個最優的特征來進行數據劃分。

常用的準則

  • 信息增益(Information Gain, ID3算法)
  • 信息增益比(Gain Ratio, C4.5算法)
  • 基尼不純度(Gini Impurity, CART算法)
  • 均方誤差(MSE, 回歸樹)

2.1.1. 信息增益(ID3)

  • 衡量使用某特征劃分后信息不確定性減少的程度。

  • 計算公式: 信息增益 = H ( D ) ? H ( D ∣ A ) 信息增益=H(D)?H(D∣A) 信息增益=H(D)?H(DA)

    • H(D):數據集的熵(不確定性)。
    • H(D∣A):在特征 A劃分后的條件熵。

2.1.2. 基尼不純度(CART)

  • 衡量數據集的不純度,越小越好,表示數據集越純。

  • 計算公式:
    Gini ( D ) = 1 ? ∑ k = 1 K p k 2 \text{Gini}(D) = 1 - \sum_{k=1}^{K} p_k^2 Gini(D)=1?k=1K?pk2?

    • p k p_k pk? :數據集中第 k k k 類樣本的比例。

2.1.3. 均方誤差(MSE)

  • 用于回歸問題,計算預測值與真實值的差異。

  • 計算公式: M S E = 1 n ∑ ( y i ? y ^ i ) 2 MSE= \frac {1}{n}\sum(y_i ? \hat y_i) ^2 MSE=n1?(yi??y^?i?)2

    • y i y_i yi?是實際值, y ^ i \hat y_i y^?i? 是預測值。

2.2. 節點劃分

  • 分類任務:選擇使信息增益最大(或基尼不純度最小)的特征進行劃分。
  • 回歸任務:選擇使均方誤差(MSE)最小的特征進行劃分。

2.3. 停止條件:

  • 當前節點所有樣本屬于同一類別(純度100%)。
  • 所有特征已用完,或繼續劃分無法顯著降低不純度。
  • 達到預設的最大深度(max_depth)或最小樣本數(min_samples_split)。

3. 決策樹的剪枝(防止過擬合)

決策樹容易過擬合(訓練集表現好,測試集差)。為了防止過擬合,我們通常會使用剪枝技術。

  • 預剪枝(Pre-pruning):在訓練時提前停止(如限制樹深度)。

  • 后剪枝(Post-pruning):先訓練完整樹,再剪掉不重要的分支(如C4.5的REP方法)。

4. 決策樹的優缺點

  • ? 優點
    • 可解釋性強:規則清晰,易于可視化(if-then結構)。
    • 無需數據標準化:對數據分布無嚴格要求。
    • 可處理混合類型數據(數值型+類別型)。
    • 適用于小規模數據。
  • ? 缺點
    • 容易過擬合(需剪枝或限制樹深度)。
    • 對噪聲敏感(異常值可能導致樹結構不穩定)。
    • 不穩定性:數據微小變化可能導致完全不同的樹。
    • 不適合高維稀疏數據(如文本數據)。

5. 常見決策樹算法

算法適用任務特征選擇準則特點
ID3分類信息增益只能處理離散特征,容易過擬合
C4.5分類信息增益比可處理連續特征,支持剪枝
CART分類/回歸基尼不純度(分類) 均方誤差(回歸)二叉樹結構,Scikit-learn默認實現
CHAID分類卡方檢驗適用于類別型數據

6. 樣例代碼:

# 導入必要的庫
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree# 加載鳶尾花數據集
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)# 創建決策樹分類器
clf = DecisionTreeClassifier(criterion='gini', max_depth=3, random_state=42)# 訓練決策樹
clf.fit(X_train, y_train)# 預測測試集
y_pred = clf.predict(X_test)# 輸出準確率
print(f"Accuracy: {accuracy_score(y_test, y_pred):.4f}")# 可視化決策樹
plt.figure(figsize=(12, 8))
plot_tree(clf, filled=True, feature_names=data.feature_names, class_names=data.target_names)
plt.show()

7. 歸納

決策樹的核心:遞歸劃分數據,選擇最優特征,構建樹結構。

  • 關鍵問題:

    • 如何選擇劃分特征?(信息增益、基尼不純度)
    • 如何防止過擬合?(剪枝、限制樹深度)
  • 適用場景:

    • 需要可解釋性的任務(如金融風控)。

    • 小規模、低維數據分類/回歸

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77126.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77126.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77126.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

充電樁領域垂直行業大模型分布式推理與訓練平臺建設方案 - 慧知開源充電樁平臺

沒有任何廣告! 充電樁領域垂直行業大模型分布式推理與訓練平臺建設方案 一、平臺定位與核心價值 行業首個垂直化AI平臺 專為充電樁運營場景設計的分布式大模型訓練與推理基礎設施,實現"算力-算法-場景"三位一體閉環管理。 核心價值主張&am…

NLP高頻面試題(四十五)——PPO 算法在 RLHF 中的原理與實現詳解

近端策略優化(Proximal Policy Optimization, PPO)算法是強化學習領域的一種新穎且高效的策略優化方法,在近年大規模語言模型的人類反饋強化學習(Reinforcement Learning with Human Feedback, RLHF)中發揮了關鍵作用。本文將以學術嚴謹的風格,詳細闡述 PPO 算法的原理及…

C++指針和引用之區別(The Difference between C++Pointers and References)

面試題:C指針和引用有什么區 C指針和引用有什么區別? 在 C 中,指針和引用都是用來訪問其他變量的值的方式,但它們之間存在一些重要的區別。了解這些區別有助于更好地理解和使用這兩種工具。 01 指針 指針(Pointer…

LWIP學習筆記

TCP/ip協議結構分層 傳輸層簡記 TCP:可靠性強,有重傳機制 UDP:單傳機制,不可靠 UDP在ip層分片 TCP在傳輸層分包 應用層傳輸層網絡層,構成LWIP內核程序: 鏈路層;由mac內核STM芯片的片上外設…

【經驗記錄貼】活用shell,提高工作效率

背景 最近在做測試的時候,需要手動kill服務的進程,然后通過命令重啟服務,再進行測試。每次重啟都會涉及到下面三個命令的執行: 1)檢索進程ID $ ps -eLf | grep programname root 1123 112 1234 0 0 0 0:00…

MacOS 系統下 Git 的詳細安裝步驟與基礎設置指南

MacOS 系統下 Git 的詳細安裝步驟與基礎設置指南—目錄 一、安裝 Git方法 1:通過 Homebrew 安裝(推薦)方法 2:通過 Xcode Command Line Tools 安裝方法 3:手動下載安裝包 二、基礎配置1. 設置全局用戶名和郵箱2. 配置 …

一文讀懂 AI

2022年11月30日,OpenAI發布了ChatGPT,2023年3月15日,GPT-4引發全球轟動,讓世界上很多人認識了ai這個詞。如今已過去快兩年半,AI產品層出不窮,如GPT-4、DeepSeek、Cursor、自動駕駛等,但很多人仍…

【教程】檢查RDMA網卡狀態和測試帶寬 | 附測試腳本

轉載請注明出處:小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你,歡迎[點贊、收藏、關注]哦~ 目錄 檢查硬件和驅動狀態 測試RDMA通信 報錯修復 對于交換機的配置,可以看這篇: 【教程】詳解配置多臺主機通過交換機實現互…

計算機網絡 - TCP協議

通過一些問題來討論 TCP 協議 什么是 TCP ?舉幾個應用了 TCP 協議的例子TCP協議如何保證可靠性?tcp如何保證不會接受重復的報文?Tcp粘包拆包問題了解嗎?介紹一下,如何解決?TCP擁塞控制與流量控制區別&…

Fiddler 進行斷點測試:調試網絡請求

目錄 一、什么是斷點測試? 二、Fiddler 的斷點功能 三、如何在 Fiddler 中設置斷點? 步驟 1:啟動 Fiddler 步驟 2:啟用斷點 步驟 3:捕獲請求 步驟 4:修改請求或響應 四、案例:模擬登錄失…

OpenCv高階(三)——圖像的直方圖、圖像直方圖的均衡化

目錄 一、直方圖 1、計算并顯示直方圖 2、使用matplotlib方法繪制直方圖(不劃分小的子區間) 3、使用opencv的方法繪制直方圖 (劃分16個小的子亮度區間) 4、繪制彩色圖像的直方圖,將各個通道的直方圖值都畫出來 二、…

Flutter 與原生通信

Flutter 與原生之間的通信主要基于通道機制,包括 MethodChannel、EventChannel 和 BasicMessageChannel。 MethodChannel:用于 Flutter 與原生之間的方法調用,實現雙向通信,適合一次性的方法調用并獲取返回值,如 Flut…

前端面試-Vue篇

核心概念 Vue 3的響應式原理與Vue 2有何本質區別?Vue中虛擬DOM的diff算法優化策略有哪些?Vue組件間通信方式有哪些?適用場景分別是什么?Vue的生命周期鉤子在Composition API中如何替代?Vue的模板編譯過程是怎樣的&…

光刻機研發與市場現狀分析報告

1. 引言 光刻機(Lithography Machine)是半導體制造的核心設備,其技術水平和市場供應能力直接影響全球芯片產業的發展。隨著人工智能(AI)、5G、高性能計算(HPC)和自動駕駛等技術的興起&#xff0…

Missashe考研日記-day21

Missashe考研日記-day21 1 專業課408 學習時間:4h學習內容: 今天先把昨天學的內容的課后習題做了,整整75道啊,然后學了OS第二章關于CPU調度部分的內容,這第二章太重要了,以至于每一小節的內容都比較多&am…

【玩轉全棧】—— Django+vue3+訊飛星火API 實現前端頁面實時AI答復

技術棧:vue3 element-plus axios pinia router Django5 websocket 訊飛星火API 本文將實現一個 AI 聊天對話功能,將前端用戶輸入問題以及之前對話發送給后端,通過 api 訪問大模型,返回前端實時對話數據。 調用 訊飛星火API…

廣東廣州一家IPO資產重組疑點重重,信息披露真實性存疑

作者:Eric 來源:IPO魔女 4月18日,廣州瑞立科密汽車電子股份有限公司(簡稱“瑞立科密”)將接受深交所主板IPO上會審核。公司保薦機構為中信證券,擬募集資金為15.2162億元。 瑞立科密過往資產重組疑點重重&a…

銀河麒麟(Kylin) - V10 SP1桌面操作系統ARM64編譯QT-5.15.12版本

銀河麒麟(Kylin) - V10 SP1桌面操作系統ARM64編譯QT-5.15.12版本 原因 測試Kylin-Desktop-V10-SP1-General-Release-2303-arm64系統下,編譯QT-5.15.12版本已做測試。 測試環境 測試板配置 型號:LM-D2000-NONE-1w-V01-pc_A2150 CPU:飛騰D20…

查看前端項目依賴樹型結構關系圖的詳細方法,涵蓋 命令行工具 和 可視化工

以下是查看前端項目依賴樹型結構關系圖的詳細方法&#xff0c;涵蓋 命令行工具 和 可視化工具&#xff1a; 一、命令行工具生成依賴樹 1. npm # 查看項目依賴樹&#xff08;文本形式&#xff09; npm ls# 查看指定包的依賴樹 npm ls <package-name># 生成JSON格式的依…

Ollama高并發測試

本文主要來測試一下ollama的高并發能力。 具體配置如下&#xff1a; 一、Ollama默認參數執行 我們打開4個窗口&#xff0c;然后分別讓DeepSeek “給我講一個笑話” &#xff0c;看下不同窗口的答題順序。 通過答題順序可以看到&#xff0c;在不進行參數設置時&#xff0c;模…