
- 機器學習基礎
- ML - 首頁
- ML - 簡介
- ML - 入門
- ML - 基本概念
- ML - 生態系統
- ML - Python 庫
- ML - 應用
- ML - 生命週期
- ML - 所需技能
- ML - 實現
- ML - 挑戰與常見問題
- ML - 限制
- ML - 真實案例
- ML - 資料結構
- ML - 數學基礎
- ML - 人工智慧
- ML - 神經網路
- ML - 深度學習
- ML - 獲取資料集
- ML - 類別資料
- ML - 資料載入
- ML - 資料理解
- ML - 資料準備
- ML - 模型
- ML - 監督學習
- ML - 無監督學習
- ML - 半監督學習
- ML - 強化學習
- ML - 監督學習 vs. 無監督學習
- 機器學習資料視覺化
- ML - 資料視覺化
- ML - 直方圖
- ML - 密度圖
- ML - 箱線圖
- ML - 相關矩陣圖
- ML - 散點矩陣圖
- 機器學習統計學
- ML - 統計學
- ML - 平均數、中位數、眾數
- ML - 標準差
- ML - 百分位數
- ML - 資料分佈
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假設
- 機器學習中的迴歸分析
- ML - 迴歸分析
- ML - 線性迴歸
- ML - 簡單線性迴歸
- ML - 多元線性迴歸
- ML - 多項式迴歸
- 機器學習中的分類演算法
- ML - 分類演算法
- ML - 邏輯迴歸
- ML - K近鄰演算法 (KNN)
- ML - 樸素貝葉斯演算法
- ML - 決策樹演算法
- ML - 支援向量機
- ML - 隨機森林
- ML - 混淆矩陣
- ML - 隨機梯度下降
- 機器學習中的聚類演算法
- ML - 聚類演算法
- ML - 基於中心的聚類
- ML - K均值聚類
- ML - K中心點聚類
- ML - 均值漂移聚類
- ML - 層次聚類
- ML - 基於密度的聚類
- ML - DBSCAN 聚類
- ML - OPTICS 聚類
- ML - HDBSCAN 聚類
- ML - BIRCH 聚類
- ML - 親和傳播
- ML - 基於分佈的聚類
- ML - 凝聚層次聚類
- 機器學習中的降維
- ML - 降維
- ML - 特徵選擇
- ML - 特徵提取
- ML - 向後剔除法
- ML - 前向特徵構建
- ML - 高相關性過濾器
- ML - 低方差過濾器
- ML - 缺失值比率
- ML - 主成分分析
- 強化學習
- ML - 強化學習演算法
- ML - 利用與探索
- ML - Q學習
- ML - REINFORCE 演算法
- ML - SARSA 強化學習
- ML - 演員-評論家方法
- 深度強化學習
- ML - 深度強化學習
- 量子機器學習
- ML - 量子機器學習
- ML - 使用 Python 的量子機器學習
- 機器學習雜項
- ML - 效能指標
- ML - 自動工作流
- ML - 提升模型效能
- ML - 梯度提升
- ML - 自舉匯聚 (Bagging)
- ML - 交叉驗證
- ML - AUC-ROC 曲線
- ML - 網格搜尋
- ML - 資料縮放
- ML - 訓練和測試
- ML - 關聯規則
- ML - Apriori 演算法
- ML - 高斯判別分析
- ML - 成本函式
- ML - 貝葉斯定理
- ML - 精確率和召回率
- ML - 對抗性
- ML - 堆疊
- ML - 輪次
- ML - 感知器
- ML - 正則化
- ML - 過擬合
- ML - P值
- ML - 資訊熵
- ML - MLOps
- ML - 資料洩露
- ML - 機器學習的貨幣化
- ML - 資料型別
- 機器學習 - 資源
- ML - 快速指南
- ML - 速查表
- ML - 面試問題
- ML - 有用資源
- ML - 討論
機器學習 - 資訊熵
資訊熵是一個起源於熱力學的概念,後來被應用於各個領域,包括資訊理論、統計學和機器學習。在機器學習中,資訊熵被用作衡量資料集純度或隨機性的指標。具體來說,資訊熵用於決策樹演算法中,以決定如何分割資料以建立更同質的子集。在本文中,我們將討論機器學習中的資訊熵、其屬性以及在 Python 中的實現。
資訊熵被定義為系統中無序或隨機性的度量。在決策樹的背景下,資訊熵被用作衡量節點純度的指標。如果節點中的所有示例都屬於同一類,則該節點被認為是純的。相反,如果節點包含來自多個類的示例,則該節點是不純的。
要計算資訊熵,我們首先需要定義資料集中每個類的機率。設 p(i) 為示例屬於類 i 的機率。如果我們有 k 個類,則系統的總資訊熵,表示為 H(S),計算如下:
$$H\left ( S \right )=-sum\left ( p\left ( i \right )\ast log_{2}\left ( p\left ( i \right ) \right ) \right )$$
其中,求和遍及所有 k 個類。此方程稱為夏農熵。
例如,假設我們有一個包含 100 個示例的資料集,其中 60 個屬於類 A,40 個屬於類 B。則類 A 的機率為 0.6,類 B 的機率為 0.4。然後資料集的資訊熵為:
$$H\left ( S \right )=-(0.6\times log_{2}(0.6)+ 0.4\times log_{2}(0.4)) = 0.971$$
如果資料集中所有示例都屬於同一類,則資訊熵為 0,表示純節點。另一方面,如果示例在所有類中均勻分佈,則資訊熵較高,表示不純節點。
在決策樹演算法中,資訊熵用於確定每個節點的最佳分割。目標是建立導致最同質子集的分割。這是透過計算每個可能分割的資訊熵並選擇導致最低總資訊熵的分割來完成的。
例如,假設我們有一個包含兩個特徵 X1 和 X2 的資料集,目標是預測類標籤 Y。我們首先計算整個資料集的資訊熵 H(S)。接下來,我們根據每個特徵計算每個可能分割的資訊熵。例如,我們可以根據 X1 的值或 X2 的值分割資料。每個分割的資訊熵計算如下:
$$H\left ( X_{1} \right )=p_{1}\times H\left ( S_{1} \right )+p_{2}\times H\left ( S_{2} \right )H\left ( X_{2} \right )=p_{3}\times H\left ( S_{3} \right )+p_{4}\times H\left ( S_{4} \right )$$
其中,p1、p2、p3 和 p4 是每個子集的機率;H(S1)、H(S2)、H(S3) 和 H(S4) 是每個子集的資訊熵。
然後我們選擇導致最低總資訊熵的分割,它由以下公式給出:
$$H_{split}=H\left ( X_{1} \right )\, if\, H\left ( X_{1} \right )\leq H\left ( X_{2} \right );\: else\: H\left ( X_{2} \right )$$
然後使用此分割來建立決策樹的子節點,並遞迴重複此過程,直到所有節點都變為純節點或滿足停止條件。
示例
讓我們舉一個例子來了解如何在 Python 中實現它。這裡我們將使用“鳶尾花”資料集:
from sklearn.datasets import load_iris import numpy as np # Load iris dataset iris = load_iris() # Extract features and target X = iris.data y = iris.target # Define a function to calculate entropy def entropy(y): n = len(y) _, counts = np.unique(y, return_counts=True) probs = counts / n return -np.sum(probs * np.log2(probs)) # Calculate the entropy of the target variable target_entropy = entropy(y) print(f"Target entropy: {target_entropy:.3f}")
以上程式碼載入鳶尾花資料集,提取特徵和目標,並定義一個用於計算資訊熵的函式。entropy() 函式接受目標值的向量並返回該集合的資訊熵。
該函式首先計算集合中的示例數量和每個類的計數。然後它計算每個類的比例,並使用這些比例根據資訊熵公式計算集合的資訊熵。最後,程式碼計算鳶尾花資料集中目標變數的資訊熵並將其列印到控制檯。
輸出
執行此程式碼時,它將生成以下輸出:
Target entropy: 1.585