機器學習04——決策樹(信息增益、信息增益率、ID3、C4.5、CART、剪枝、連續值缺失值處理)

上一章:機器學習03——線性模型
下一章:機器學習05——多分類學習與類別不平衡
機器學習實戰項目:【從 0 到 1 落地】機器學習實操項目目錄:覆蓋入門到進階,大學生就業 / 競賽必備

文章目錄

      • 一、決策樹的基本流程
        • (一)核心原理
        • (二)生成算法
      • 二、劃分選擇(最優屬性的判定)
        • (一)信息增益(ID3算法)
        • (二)增益率(C4.5算法)
        • (三)基尼指數(CART算法)
      • 三、剪枝處理(避免過擬合)
        • (一)預剪枝
        • (二)后剪枝
      • 四、連續值與缺失值的處理
        • (一)連續值處理(二分法)
        • (二)缺失值處理
      • 五、多變量決策樹
        • (一)核心特點
      • 六、經典決策樹算法與工具

一、決策樹的基本流程

決策樹是一種基于“分而治之”思想的監督學習模型,通過遞歸劃分樣本構建樹狀結構,每個節點對應一個屬性測試,葉節點對應決策結果。
在這里插入圖片描述

(一)核心原理
  • 決策過程:從根節點開始,對樣本的某個屬性進行測試,根據測試結果進入相應子節點,重復此過程直至葉節點,得到決策結果。從根節點到葉節點的路徑對應一個判定規則序列。
  • 終止條件:當滿足以下任一條件時,停止劃分并將當前節點標記為葉節點:
    1. 當前節點的所有樣本屬于同一類別;
    2. 屬性集為空,或所有樣本在剩余屬性上取值相同(此時標記為樣本數最多的類別);
    3. 當前節點包含的樣本集為空(此時標記為父節點樣本數最多的類別)。
      在這里插入圖片描述
(二)生成算法
  1. 輸入:訓練集D={(x1,y1),...,(xm,ym)}D=\{(x_1,y_1),..., (x_m,y_m)\}D={(x1?,y1?),...,(xm?,ym?)}和屬性集A={a1,...,ad}A=\{a_1,...,a_d\}A={a1?,...,ad?}
  2. 遞歸過程(函數TreeGenerate(D,A)):
    • 生成當前節點,檢查是否滿足終止條件,若滿足則標記為葉節點并返回;
    • 否則從屬性集A中選擇最優劃分屬性a?a^*a?
    • a?a^*a?的每個取值av?a^*_vav??,生成子節點,將D中取值為av?a^*_vav??的樣本子集DvD_vDv?傳入子節點,遞歸調用TreeGenerate(Dv,A?{a?})(D_v, A-\{a^*\})(Dv?,A?{a?})

二、劃分選擇(最優屬性的判定)

決策樹學習的關鍵是選擇最優劃分屬性,目標是使劃分后各子節點的樣本純度盡可能高。經典方法包括信息增益、增益率和基尼指數。

(一)信息增益(ID3算法)
  • 信息熵:衡量樣本集純度的指標,對于包含∣Y∣|\mathcal{Y}|Y類樣本的集合D,第k類樣本占比為pkp_kpk?,則信息熵為:
    Ent(D)=?∑k=1∣Y∣pklog?2pkEnt(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_k \log_2 p_kEnt(D)=?k=1Y?pk?log2?pk?
    Ent(D)值越小,樣本集純度越高(如全為同一類時Ent(D)=0)。
  • 信息增益:屬性a對D的劃分所帶來的信息熵減少量,計算公式為:
    Gain(D,a)=Ent(D)?∑v=1V∣Dv∣∣D∣Ent(Dv)Gain(D,a)=Ent(D)-\sum_{v=1}^V \frac{|D^v|}{|D|}Ent(D^v)Gain(D,a)=Ent(D)?v=1V?DDv?Ent(Dv)
    其中DvD^vDv是D中在屬性a上取值為ava^vav的樣本子集,V是屬性a的取值數。信息增益越大,說明該屬性劃分后樣本純度提升越明顯。
  • 示例:在“好瓜”識別中,屬性“紋理”的信息增益(0.381)高于其他屬性,因此被選為根節點的劃分屬性。
  • 局限:對取值數目多的屬性有偏好(如“編號”這類唯一標識屬性,信息增益通常極高,但無泛化意義)。
    在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

(二)增益率(C4.5算法)

為修正信息增益的偏好,引入增益率,定義為:
Gain_ratio(D,a)=Gain(D,a)IV(a)Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}Gain_ratio(D,a)=IV(a)Gain(D,a)?
其中IV(a)=?∑v=1V∣Dv∣∣D∣log?2∣Dv∣∣D∣IV(a)=-\sum_{v=1}^V \frac{|D^v|}{|D|}\log_2 \frac{|D^v|}{|D|}IV(a)=?v=1V?DDv?log2?DDv?為屬性a的“固有值”,取值越多的屬性,IV(a)越大,從而抑制高取值屬性的優勢。

  • 啟發式策略:C4.5算法先篩選出信息增益高于平均水平的屬性,再從中選擇增益率最高的,平衡偏好問題。
(三)基尼指數(CART算法)

基尼指數衡量從樣本集中隨機抽取兩個樣本,其類別標記不同的概率,計算公式為:
Gini(D)=∑k=1∣Y∣∑k′≠kpkpk′=1?∑k=1∣Y∣pk2Gini(D)=\sum_{k=1}^{|\mathcal{Y}|}\sum_{k'\neq k} p_k p_{k'}=1-\sum_{k=1}^{|\mathcal{Y}|} p_k^2Gini(D)=k=1Y?k=k?pk?pk?=1?k=1Y?pk2?
Gini(D)越小,樣本集純度越高。屬性a的基尼指數為劃分后各子節點基尼指數的加權和,選擇基尼指數最小的屬性作為劃分屬性。

三、剪枝處理(避免過擬合)

剪枝是決策樹對抗過擬合的核心手段,通過移除冗余分支,提升模型泛化能力。分為預剪枝和后剪枝。

(一)預剪枝
  • 策略:在決策樹生成過程中,對每個節點先判斷劃分是否能提升泛化性能(通過驗證集精度評估),若不能則停止劃分,將當前節點標記為葉節點。
  • 示例:對“好瓜”數據集的根節點,若不劃分(標記為“好瓜”),驗證集精度為42.9%;若用“臍部”劃分,精度提升至71.4%,則進行劃分;后續子節點若劃分不能提升精度,則停止。
  • 優缺點
    • 優點:減少訓練和測試時間開銷;
    • 缺點:可能因“貪心”策略錯過后續有效劃分,導致欠擬合。

在這里插入圖片描述

(二)后剪枝
  • 策略:先生成完整決策樹,再自底向上考察非葉節點,若將其子樹替換為葉節點能提升泛化性能,則剪枝。
  • 示例:對完整決策樹的子節點,若替換為葉節點后驗證集精度從42.9%提升至更高,則剪枝;最終保留更多有效分支。
  • 優缺點
    • 優點:泛化性能通常優于預剪枝,保留更多有效分支;
    • 缺點:需生成完整樹后逐一考察,計算開銷大。

在這里插入圖片描述

四、連續值與缺失值的處理

實際數據中常包含連續屬性(如“密度”“含糖率”)或缺失值,需特殊處理。

(一)連續值處理(二分法)
  1. 候選劃分點:將連續屬性a的取值從小到大排序為a1,...,ana^1,...,a^na1,...,an,取相鄰值的中位點作為候選劃分點:
    Ta={ai+ai+12∣1≤i≤n?1}T_a=\left\{\frac{a^i+a^{i+1}}{2} \mid 1\leq i \leq n-1\right\}Ta?={2ai+ai+1?1in?1}
  2. 最優劃分點:計算每個候選點的信息增益,選擇增益最大的點作為劃分點,將樣本分為“≤t”和“>t”兩類。
  • 示例:屬性“密度”的候選劃分點包括0.244、0.294等,通過計算信息增益選擇最優劃分點。
    在這里插入圖片描述
(二)缺失值處理

需解決兩個問題:如何選擇劃分屬性,以及如何劃分含缺失值的樣本。

  1. 劃分屬性選擇

    • 定義無缺失值樣本子集D~\tilde{D}D~,計算其占總樣本的比例ρ\rhoρ、各類別占比p~k\tilde{p}_kp~?k?、屬性a各取值占比r~v\tilde{r}_vr~v?
    • 信息增益修正為:Gain(D,a)=ρ×[Ent(D~)?∑v=1Vr~vEnt(D~v)]Gain(D,a)=\rho \times [Ent(\tilde{D})-\sum_{v=1}^V \tilde{r}_v Ent(\tilde{D}^v)]Gain(D,a)=ρ×[Ent(D~)?v=1V?r~v?Ent(D~v)],其中Ent(D~)=?∑kp~klog?2p~kEnt(\tilde{D})=-\sum_k \tilde{p}_k \log_2 \tilde{p}_kEnt(D~)=?k?p~?k?log2?p~?k?
  2. 樣本劃分

    • 若樣本在屬性a上取值已知,劃入對應子節點,權重不變;
    • 若取值缺失,按r~v\tilde{r}_vr~v?(屬性a取值ava^vav的比例)將樣本權重分配到各子節點(即wx×r~vw_x \times \tilde{r}_vwx?×r~v?)。

五、多變量決策樹

傳統決策樹(單變量)的非葉節點僅測試單個屬性,分類邊界與坐標軸平行;多變量決策樹的非葉節點是多個屬性的線性組合,分類邊界更靈活。

(一)核心特點
  • 每個非葉節點對應一個線性分類器:∑i=1dwiai=t\sum_{i=1}^d w_i a_i = ti=1d?wi?ai?=t,其中wiw_iwi?是屬性aia_iai?的權重,t是閾值,兩者通過樣本集學習得到。
  • 優勢:能擬合復雜的分類邊界,減少決策樹深度,提升泛化能力。
  • 示例:通過“-0.800×密度 -0.044×含糖量 < -0.313”這樣的線性組合劃分樣本,比單屬性劃分更精準。
    在這里插入圖片描述

六、經典決策樹算法與工具

  • 算法:ID3(信息增益)、C4.5(增益率,支持連續值和缺失值)、C5.0(C4.5的改進版,效率更高)、CART(基尼指數,可用于分類和回歸);
  • 工具:J48(WEKA中C4.5的實現)等。

上一章:機器學習03——線性模型
下一章:機器學習05——多分類學習與類別不平衡
機器學習實戰項目:【從 0 到 1 落地】機器學習實操項目目錄:覆蓋入門到進階,大學生就業 / 競賽必備

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

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

相關文章

(論文速讀)從語言模型到通用智能體

論文題目&#xff1a;From Multimodal LLMs to Generalist Embodied Agents: Methods and Lessons&#xff08;從多模式大型語言模型到多面手具身代理:方法和教訓&#xff09;會議&#xff1a;CVPR2025摘要&#xff1a;我們研究了多模態大型語言模型(Multimodal Large Language…

【Epiq Solutions】Matchstiq? G20 和 Matchstiq? G40 AI SDR

Matchstiq? G20 和 Matchstiq? G40 產品簡介 Matchstiq? G20 和 Matchstiq? G40 是 Epiq Solutions 推出的 緊湊型、高性能軟件定義無線電&#xff08;SDR&#xff09;平臺&#xff0c;專為滿足 嚴苛 SWaP-C&#xff08;體積、重量、功耗受限&#xff09;場景下的戰術與移動…

基于Echarts+HTML5可視化數據大屏展示-旅游智慧中心

效果展示&#xff1a; 代碼結構&#xff1a;主要代碼實現 index.html布局 <!DOCTYPE html> <html lang"en" style"font-size: 97.5px;"> <head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"…

Docker 鏡像的使用

1.鏡像的基本信息[roothost1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 802541663949 2 weeks ago 78.1MB hello-world latest 1b44b5a3e06a 4 weeks ago 10.1kB執行 docker images 命令時加上 --no…

網絡編程;套接字;TCP通訊;UDP通訊;0909

思維導圖TCP服務器端和客戶端通訊服務器端 代碼#include<myhead.h> #define SER_IP "192.168.109.12"//我的虛擬機的ip #define SER_PORT 8888 int main() {//1.創建一個用于連接的套接字文件描述符int sfd socket(AF_INET,SOCK_STREAM,0);if(sfd-1){perror(&…

貪心算法應用:柔性制造系統(FMS)刀具分配問題詳解

Java中的貪心算法應用&#xff1a;柔性制造系統(FMS)刀具分配問題詳解 1. 問題背景與定義 柔性制造系統(Flexible Manufacturing System, FMS)是現代智能制造中的關鍵組成部分&#xff0c;它能夠靈活地適應不同產品的生產需求。在FMS中&#xff0c;刀具分配是一個核心優化問題&…

不止是DELETE:MySQL多表關聯刪除的JOIN語法實戰詳解

MySQL 的 ??DELETE?? 語句用于從數據庫表中刪除記錄。這是一項非常強大且危險的操作&#xff0c;因為一旦執行&#xff0c;數據通常無法恢復。理解其語法和安全實踐至關重要。以下是 MySQL 刪除語句的詳細指南。一、 核心語法&#xff1a;DELETE??DELETE?? 語句用于刪除…

ubuntu 系統使用過程中黑屏問題分析

背景&#xff1a; 工欲善其事&#xff0c;必先利其器。作為程序員&#xff0c;想要得到更好的發展&#xff0c;遇到問題直接baidu, google 雖然可以得到一些參考或者答案&#xff0c;但是也會降低自己的思考能力&#xff0c;本文以ubuntu 使用過程中黑屏這一問題為背景&#x…

Redis(45)哨兵模式與集群模式有何區別?

Redis 提供了兩種高可用性解決方案&#xff1a;哨兵模式和集群模式。它們各自有不同的特點和適用場景。以下是詳細的對比和結合代碼的示例&#xff1a; 哨兵模式&#xff08;Sentinel&#xff09; 特點高可用性&#xff1a; Sentinel 通過監控、通知、故障轉移等功能&#xff0…

微信小程序如何進行分包處理?

目錄 分包是什么&#xff1f; 為什么要分包&#xff1f; 分包前后結構對比 具體操作步驟 第 1 步&#xff1a;規劃分包結構 第 2 步&#xff1a;修改 app.json 進行配置 第 3 步&#xff1a;創建分包目錄并移動文件 第 4 步&#xff1a;處理組件和工具函數的引用 第 5…

Go語言極速入門與精要指南從零到精通的系統化學習路徑

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 持續學習&#xff0c;不斷…

git 切換倉庫后清理分支緩存

我明白了&#xff0c;從您的截圖可以看到遠程倉庫中有 feature/v1.4_20250903 分支&#xff0c;但本地 git branch -r 看不到&#xff0c;這是因為之前更換過倉庫地址后需要重新獲取遠程倉庫的所有信息。讓我們執行以下步驟來解決這個問題&#xff1a; 首先執行 git fetch --al…

考研倒計時101天---路由選擇協議

路由選擇協議&#xff1a;RIP 與 OSPFRIP 協議&#xff08;基于距離向量算法&#xff09;RIP&#xff08;Routing Information Protocol&#xff09;是一種內部網關協議&#xff08;IGP&#xff09;&#xff0c;采用距離向量算法進行路由選擇。其主要特點如下&#xff1a;工作機…

「類 vs 實例」對比 ,「類 - 原型 - 實例」的關系

堅持的本身就是意義 目錄直觀類比類 (Class) vs 實例 (Instance)對比表示例代碼類 - 原型 - 實例關系圖解釋&#xff1a;類 (class Person)原型 (Person.prototype)實例 (new Person(...))總結&#xff1a;直觀類比 類&#xff08;Class&#xff09; 圖紙 / 模板實例&#xf…

第一課、Cocos Creator 3.8 安裝與配置

介紹說明 本文主要介紹在windows系統中&#xff0c;安裝開發Cocos使用的軟件工具&#xff0c;主要包含&#xff1a;安裝CocosDashboard控制面板、CocosCreator3.8編輯器和腳本編輯器 VS Code 。 一、Cocos Dashboard 的安裝 說明&#xff1a;Cocos Dashboard 主要作用是能夠同…

從航空FACE的一個落地方案漫談汽車HPC軟件架構的思維轉變(2/3)FACE的“段”同Autosar的“層”概念區別探索

文章目錄PART THREE&#xff1a;段和層的概念比較一、“段”更強調“功能閉環責任歸屬”&#xff0c;而非“單純的層級堆疊”二、“段”規避“層”的“剛性依賴陷阱”&#xff0c;適配航空系統的“靈活組合需求”三、“段”貼合航空工業的“工程化語言習慣”&#xff0c;降低跨…

金融量化指標--6InformationRatio信息比率

InformationRatio信息比率計算公式添加圖片注釋&#xff0c;不超過 140 字&#xff08;可選&#xff09;一、信息比率&#xff08;IR&#xff09;是什么&#xff1f;核心概念&#xff1a;信息比率衡量的是投資組合經理相對于某個基準指數&#xff08;Benchmark&#xff09;&…

Java全棧開發面試實錄:從基礎到微服務的實戰經驗分享

Java全棧開發面試實錄&#xff1a;從基礎到微服務的實戰經驗分享 一、初識面試場景 我叫李明&#xff0c;28歲&#xff0c;畢業于復旦大學計算機科學與技術專業&#xff0c;碩士學歷。在互聯網行業已經有5年的工作經驗&#xff0c;先后在兩家中型互聯網公司擔任Java全棧開發工程…

【51單片機】【protues仿真】基于51單片機公交報站系統

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 一、主要功能 主要功能如下&#xff1a; 1、LCD12864顯示時間、日期、公交車車站、溫度等 2、按鍵設置時間&#xff0c;顯示公交車信息 3、串口播報相應站點信息 4、按鍵控制上行、下行、手動播…

第1節-PostgreSQL入門-從表中查詢數據

摘要&#xff1a;在本教程中,你將學習如何使用 PostgreSQL 的 SELECT 語句從表中檢索數據。 SELECT 語句 要從表中查詢數據,需使用 PostgreSQL 的 SELECT 語句。 以下是 SELECT 語句的基本語法: SELECT column1, column2, ... FROM table_name;在這種語法中: 首先,在 SELECT 關…