【漫話機器學習系列】274.基尼指數(Gini Index)

決策樹中的基尼指數(Gini Index)詳解 —— 從公式理解到實際應用

在構建決策樹模型時,一個核心問題是:如何選擇最優的特征來進行節點劃分?
這就涉及到了“劃分準則”的問題。常見的準則有信息增益、信息增益率以及本文的主角:基尼指數(Gini Index)

在這篇文章中,我們將借助一張手繪風圖解,深入淺出地理解基尼指數的含義、公式構成、應用場景及其在構建決策樹過程中的作用。


一、什么是基尼指數?

基尼指數(Gini Index)是一種用于衡量一個數據集合“純度”的指標,主要用于分類問題中的決策樹構建,尤其是 CART(Classification and Regression Tree)算法。

通俗理解:

基尼指數越小,說明這個集合中樣本類別越“集中”,即越“純”;反之,值越大,說明類別混雜,純度低。


二、基尼指數的數學定義

參考圖中的公式:

公式如下:

G = \sum_{k=1}^{K} \hat{p}_{mk} (1 - \hat{p}_{mk})

各符號說明如下:

  • G:某個節點的基尼指數

  • K:類別的總數(比如二分類問題中 K = 2)

  • \hat{p}_{mk}:在第 m 個節點中,屬于第 k 類的樣本比例

舉例說明:

假設我們有一個節點,其中 70% 是正類(positive),30% 是負類(negative),那么:

G = 0.7(1-0.7) + 0.3(1-0.3) = 0.21 + 0.21 = 0.42

如果節點中全部為正類,即 \hat{p}_{mk}=1,那么:

G = 1(1 - 1) = 0

也就是說,這個節點是完全純的(只含一個類別),基尼指數為 0。


三、基尼指數的直覺理解

圖中給出了簡潔直觀的解釋:

G 的值越小,節點中的分布就越平均(即越純)
G 的值越大,說明分布越分散(即越雜亂)

這是決策樹在每一個節點要選擇分裂的依據:選擇使得 G 值最小的特征和分裂方式,從而得到更“純”的子集。


四、基尼指數的應用場景

  • 在 CART 決策樹中,基尼指數是默認的分裂指標。

  • 對于分類任務,尤其是二分類問題,基尼指數表現良好,計算速度快。

  • 相比信息增益(用于 ID3),它對多分類特征不太偏倚,因此廣泛應用。


五、與其他指標的對比

指標定義方式偏好特性應用模型
信息增益熵的減少偏向類別多的特征ID3
增益率信息增益/特征熵對類別數較多的懲罰C4.5
基尼指數p(1-p)偏向二元分裂,計算快速CART 分類樹

六、圖解亮點總結

圖中總結如下重點:

  • 每個節點使用基尼指數,決定最佳的劃分特征;

  • 公式中每一項代表某一類別的“混亂度”;

  • 基尼指數是衡量隨機方法中分類純度的一種工具。


七、總結與建議

  • 什么時候用基尼指數?
    當你使用的是 CART 決策樹時,或者在意分類速度、效率優先時。

  • 為什么選擇基尼指數?
    相比熵的計算(涉及對數),Gini 指數更易實現、速度更快,且在許多實際場景下效果相當。

  • 下一步建議

    • 實現一個基于 Gini 指數的二分類決策樹;

    • 用 sklearn 決策樹時,設置 criterion='gini' 來啟用它。


參考資料

  • Chris Albon 的手繪教程;

  • 《統計學習方法》第九章;

  • sklearn 官方文檔。


如果你覺得這篇文章對你有幫助,歡迎點贊 + 收藏 + 關注!后續我會繼續發布更多圖解機器學習的內容!

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

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

相關文章

R語言學習--Day07--T分布與T檢驗

昨天我們介紹了R中用于對數據進行分類的聚類分析的方法,接下來我們來看T分布。 T分布 T分布適用于幫我們估計整組數據(較小的數據量,一般小于30)的真實值在哪一個區間,具體是計算置信區間(一般為95%&#…

數據結構與算法-線性表-雙向鏈表(Double Linked List)

1 線性表 1.4 雙向鏈表(Double Linked List) 雙向鏈表的結點中有兩個指針域,一個指向直接后繼,另一個指向直接前驅,主要是為了解決前向查找的問題。 雙向鏈表結構: 書籍和視頻教程都只講解了插入和刪除的…

甘特圖實例 dhtmlxGantt.js

本文介紹了如何使用dhtmlxGantt庫創建一個基礎的甘特圖示例,并對其進行漢化和自定義配置。首先,通過引入dhtmlxgantt.css和dhtmlxgantt.js文件初始化甘特圖。接著,通過設置gantt.i18n.setLocale("cn")實現核心文本的漢化&#xff0…

C++23 新增扁平化關聯容器詳解

文章目錄 一、引言已有關聯容器回顧新容器的引入原因 二、std::flat_set定義與特性代碼示例適用場景 三、std::flat_multiset定義與特性代碼示例適用場景 四、std::flat_map定義與特性代碼示例適用場景 五、std::flat_multimap定義與特性代碼示例適用場景 六、與其他容器的比較…

使用zap,對web應用/API接口 做安全檢測

https://www.zaproxy.org/getting-started/ 檢測方法 docker pull ghcr.io/zaproxy/zaproxy:stable# 執行baseline測試 docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \ -t https://baseline.yeshen.org# 執行api測試 docker run -t ghcr.io/zaproxy/zaproxy…

Qt—模態與非模態對話框

Qt—模態與非模態對話框 核心概念 ?模態對話框??:強制用戶優先處理當前窗口,阻塞指定范圍的用戶交互。?非模態對話框??:允許用戶自由切換窗口,無交互限制。 一、模態對話框類型與行為 1. 應用級模態(Applica…

Axure高保真CRM客戶關系管理系統原型

一套出色的CRM(客戶關系管理)系統,無疑是企業管理者掌控客戶動態、提升銷售業績的得力助手。今天,就為大家介紹一款精心打造的Axure高保真CRM客戶關系管理系統原型模板,助你輕松開啟高效客戶管理之旅。 這款CRM原型模…

【羊圈——狀壓 + DP / 記憶化搜索DP】

題目 一般DP代碼&#xff08;注意&#xff0c;這里只能向外推(起始狀態是f(1,0)&#xff0c;不能向內推&#xff08;不然會導致之前的羊圈被割裂&#xff09;&#xff09; #include <bits/stdc.h> using namespace std;const int MAX_N 210; const int MAX_M 16;int n…

講解Mysql InnoDB的MVCC

1. 定義 MVCC是多版本并發控制&#xff08;Multi - Version Concurrency Control&#xff09;的縮寫。它是InnoDB存儲引擎實現高并發控制的一種機制。在數據庫系統中&#xff0c;多個事務可能會同時對數據進行讀寫操作&#xff0c;而MVCC通過為數據行保存多個版本來解決并發事務…

ZeroMQ Sockets介紹及應用示例

1. 概念解釋 ZeroMQ Sockets提供了一種類標準套接字&#xff08;socket-like&#xff09;的 API&#xff0c;是消息導向的通信機制&#xff0c;基于 TCP/UDP 等傳輸層協議&#xff0c;但封裝了底層細節&#xff08;如連接管理、消息路由、緩沖區等&#xff09;&#xff0c;提供…

語音合成之十五 語音合成(TTS)分句生成拼接時的響度一致性問題:現狀、成因與對策

語音合成&#xff08;TTS&#xff09;分句生成拼接時的響度一致性問題&#xff1a;現狀、成因與對策 引言&#xff1a;分段式文本轉語音中的響度一致性挑戰業界對響度差異問題的認知拼接語音片段中響度變化的根本原因分段拼接的固有挑戰各片段預測韻律特征的差異文本特征和模型…

Android中Binder驅動作用?

Binder驅動的作用與核心功能 Binder驅動是Android系統中實現進程間通信&#xff08;IPC&#xff09;的核心底層組件&#xff0c;它工作于Linux內核層&#xff0c;負責管理跨進程通信的建立、數據傳輸、資源同步等關鍵任務。以下是其核心作用及實現細節&#xff1a; 1. ??進程…

網絡學習-TCP協議(七)

一、TCP協議 TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。 1、三次握手 客戶端&#xff1a; 1、先發起連接&#xff0c;發送SYN置1&#xff0c;seqnum12345(隨機值)----半連接…

【Python 基礎與實戰】從基礎語法到項目應用的全流程解析

&#xff08;1&#xff09;列表和元組的區別是什么?如何從列表創建元組?如何從元組創建列表? 列表和元組的區別&#xff1a; 可變性&#xff1a;列表是可變的&#xff0c;即可以對列表進行元素的增、刪、改操作。例如&#xff0c;可以使用append()方法添加元素&#xff0c;r…

Docker部署Zookeeper集群

簡介 ZooKeeper 是一個開源的分布式協調服務&#xff0c;由 Apache 軟件基金會開發和維護。它主要用于管理和協調分布式系統中的多個節點&#xff0c;以解決分布式環境下的常見問題&#xff0c;如配置管理、服務發現、分布式鎖等。ZooKeeper 提供了一種可靠的機制&#xff0c;…

【學習筆記】Sophus (Python) 使用文檔

以下是一份針對 Sophus 庫的 Python 使用文檔&#xff0c;涵蓋基礎概念、安裝方法、核心功能及代碼示例。內容圍繞 SO3&#xff08;3D旋轉群&#xff09;和 SE3&#xff08;3D剛體變換群&#xff09;展開&#xff0c;適合機器人學、SLAM、三維幾何等領域。 Sophus (Python) 使用…

計算機圖形學:(三)MVP變換擴展

Three.js WebGL允許把JavaScript和OpenGL 結合在一起運用&#xff0c;但使用WebGL原生的API來寫3D程序非常的復雜&#xff0c;同時需要相對較多的數學知識&#xff0c;對于前端開發者來說學習成本非常高。 Three.js是基于webGL的封裝的一個易于使用且輕量級的3D庫&#xff0c;T…

MySQL數據庫操作合集

一、SQL通用語法 ①SQL語句可以單行或多行書寫&#xff0c;以分號結尾。 ②SQL語句可以使用空格/縮進來增強語句可讀性。 ③MySQL數據庫的SQL語句不區分大小寫&#xff0c;關鍵字建議使用大寫。 ④注釋&#xff1a; 單行注釋&#xff1a; -- 注釋內容 或 # 注釋內容&#…

傳統工程項目管理與業財一體化管理的區別?

在工程項目管理領域&#xff0c;傳統管理模式與新興的業財一體化管理模式正在形成鮮明對比。隨著數字化轉型的加速&#xff0c;工程行業對高效、透明、協同的管理需求日益迫切。傳統工程項目管理依賴人工操作、分散系統和分模塊管理&#xff0c;難以應對復雜項目的全生命周期需…

敦煌網測評從環境搭建到風控應對,精細化運營打造安全測評體系

自養號測評&#xff0c;搶占流量為快速提升產品權重和銷量&#xff0c;很多賣家常采用自己養號補單測評的方式&#xff0c;技術搭建需要很多要素 一、硬件參數的關聯性 在我們使用設備進行注冊或操作賬號的過程中&#xff0c;系統會記錄下大量的系統與網絡參數&#xff0c;其中…