---
title: "二進位編碼（Binary Encoding）"
slug: binary-encoding
language: zh-TW
source: https://aiterms.tw/learning/what-is-binary-encoding
updated_at: 2026-07-04
tags: [機器學習, 資料處理, 特徵工程, 模型訓練, source:ipas]
ipas_term: true
type: deep-dive
---

# 二進位編碼 是什麼？

> 將類別特徵映射為整數，再將這些整數轉換為其二進位表示的特徵工程方法。

## 核心概念
二進位編碼（Binary Encoding）是一種用於處理類別型特徵的特徵工程技術。其主要目的是在處理高基數（High Cardinality）類別特徵時，有效降低維度，同時盡量保留原始類別資訊。傳統的獨熱編碼（One-Hot Encoding）在面對具有大量唯一值的類別特徵時，會產生大量的稀疏特徵列，導致維度災難，增加模型訓練的複雜度、記憶體消耗和計算時間。二進位編碼通過將類別值轉換為其二進位表示，並將每個二進位位作為一個新的特徵列，從而實現維度削減。它在維度削減和資訊保留之間提供了一個折衷方案，通常比獨熱編碼更緊湊，同時避免了標籤編碼引入的直接序數關係問題。

## 運作原理
二進位編碼的運作原理可以分為兩個主要步驟：
1.  **類別到整數映射 (Categorical to Integer Mapping)**：
    首先，對原始類別特徵中的每個唯一類別值賦予一個唯一的整數ID。這個過程類似於標籤編碼（Label Encoding）。例如，如果一個特徵有「紅」、「綠」、「藍」三個類別，它們可能被映射為1、2、3。如果類別數量為 N，則整數ID的範圍通常是從 0 到 N-1 或從 1 到 N。這個映射必須是唯一的，確保每個原始類別都有一個獨特的整數表示。
2.  **整數到二進位轉換及特徵生成 (Integer to Binary Conversion and Feature Generation)**：
    接下來，將這些整數ID轉換為它們的二進位表示。例如，如果整數ID是3，其二進位表示是「011」。然後，將這個二進位數的每個位（bit）作為一個獨立的二進位特徵列。例如，「011」會產生三個新的特徵列，分別為0、1、1。對於整數ID為1，二進位為「001」；ID為2，二進位為「010」。
    所需的二進位特徵列數量取決於最大整數ID的二進位表示長度。如果最大的整數ID是 `max_id`，那麼所需的二進位特徵列數量為 `ceil(log2(max_id + 1))`。例如，如果有10個類別，最大ID是9。`log2(9+1) = log2(10) ≈ 3.32`，所以需要 `ceil(3.32) = 4` 個二進位特徵列。這遠少於獨熱編碼所需的10個特徵列。
    透過這種方式，原本一個高基數的類別特徵被轉換為少數幾個二進位特徵列，顯著減少了維度，同時每個原始類別仍然可以通過這些二進位特徵的組合被唯一識別。

## 實際應用
二進位編碼在許多需要處理高基數類別特徵的機器學習任務中都有實際應用：
*   **地理資訊系統 (GIS) 資料**：例如，郵遞區號、城市ID、國家代碼等，這些特徵的唯一值數量可能非常龐大。使用二進位編碼可以有效降低這些特徵的維度，同時保留其區分度，避免地理資訊的過度稀疏表示。
*   **電子商務平台**：產品ID、商家ID、品牌ID等，這些ID通常數量巨大。二進位編碼可以將它們轉換為更緊湊的數值表示，便於模型處理，例如在商品推薦或庫存管理系統中。
*   **推薦系統**：用戶ID、物品ID等，這些特徵的基數極高。二進位編碼可以作為一種替代獨熱編碼的方案，減少特徵空間的維度，使得模型訓練更有效率，尤其是在處理大規模用戶行為數據時。
*   **日誌分析與安全領域**：IP地址、事件類型代碼等，這些特徵可能具有大量的唯一值。二進位編碼有助於在不引入過多維度的情況下納入這些資訊，例如在入侵檢測系統中分析異常日誌模式。
*   **任何具有大量類別的資料集**：當獨熱編碼導致記憶體不足或訓練時間過長時，二進位編碼提供了一個有效的折衷方案，它在維度削減和資訊保留之間取得了平衡，使得模型能夠更高效地學習。

## 常見誤區
使用二進位編碼時，需要注意以下幾個常見誤區：
1.  **引入虛假的序數關係 (Spurious Ordinality)**：儘管二進位編碼旨在避免獨熱編碼的維度問題，但它在內部將類別映射到整數，然後再轉換為二進位。這個整數映射本身可能會在類別之間引入一種任意的序數關係。例如，如果「紅」被映射為1，「綠」為2，「藍」為3，那麼二進位編碼會基於這些整數的二進位表示來創建特徵。這對於不具備序數關係的類別來說，可能會誤導某些對距離敏感的模型（如K近鄰、支持向量機），使其錯誤地解釋類別之間的「距離」或「相似性」。
2.  **資訊損失 (Information Loss)**：與獨熱編碼相比，二進位編碼會壓縮資訊，因此可能會損失一些原始類別的細微區分度。雖然它保留了足夠的資訊來唯一識別每個類別，但它並沒有像獨熱編碼那樣為每個類別提供一個獨立的維度。這意味著模型可能需要學習這些二進位特徵的組合來重建原始類別的意義。
3.  **對稀有類別的處理**：對於在訓練集中出現次數非常少的稀有類別，二進位編碼仍然會為其生成一組二進位特徵。如果這些稀有類別在測試集中出現，且在訓練集中未見過，則需要一個穩健的策略來處理，例如將其映射到一個預設值（如0）或一個「未知」類別的二進位表示，以避免錯誤。這通常需要在訓練階段就定義好所有可能的類別。
4.  **可解釋性降低 (Reduced Interpretability)**：獨熱編碼的結果是每個類別對應一個明確的特徵，因此模型對特定類別的依賴性很容易解釋。而二進位編碼生成的特徵是原始類別的二進位位組合，這使得直接解釋模型對原始類別的學習變得更加困難。例如，很難直接判斷模型為何偏好某個二進位特徵組合，因為它不直接對應一個有意義的類別。

## 與相關技術的比較
二進位編碼與其他類別特徵編碼方法各有其適用場景和優缺點：
*   **與獨熱編碼 (One-Hot Encoding) 比較**：
    *   **優勢**：二進位編碼在高基數特徵上能顯著減少維度，避免維度災難，降低模型複雜度和記憶體消耗。它在維度削減方面優於獨熱編碼。
    *   **劣勢**：獨熱編碼能完全保留原始類別資訊，不會引入任何序數關係，且每個類別都有獨立的特徵列，可解釋性強。但對於高基數特徵，獨熱編碼會產生大量稀疏特徵，導致計算效率低下。
    *   **適用場景**：低基數特徵或需要保留完整類別區分度且可解釋性至關重要時，獨熱編碼較優；高基數特徵且維度削減是首要考量時，二進位編碼較優。
*   **與標籤編碼 (Label Encoding) 比較**：
    *   **優勢**：二進位編碼比標籤編碼更好地避免了直接引入單一的、可能誤導模型的序數關係。標籤編碼只產生一個數值特徵，維度最低。
    *   **劣勢**：標籤編碼會直接將類別映射為單一整數，強制引入了隨機的序數關係，這對許多對距離敏感的模型來說是誤導性的，除非類別本身就具有序數關係。二進位編碼雖然也基於整數映射，但通過二進位位分散了這種關係，使其影響相對較小。
    *   **適用場景**：標籤編碼僅適用於具有內在序數關係的類別，或用於樹模型（它們對序數關係不敏感）。二進位編碼適用於需要維度削減但又不想引入強烈單一序數關係的場景。
*   **與頻率編碼 (Frequency Encoding) 比較**：
    *   **優勢**：頻率編碼捕捉了類別的流行度資訊，這本身可能就是一個強大的預測因子。二進位編碼不直接捕捉頻率資訊，而是專注於唯一識別和維度削減。
    *   **劣勢**：頻率編碼可能導致不同類別具有相同頻率而無法區分，且對稀有類別的處理可能不穩定。二進位編碼能唯一識別每個類別，不會有頻率衝突的問題。
    *   **適用場景**：當類別的流行度或稀有度是重要特徵時，頻率編碼較優。當需要唯一識別每個類別並有效削減維度時，二進位編碼較優。兩者也可以結合使用，以利用各自的優勢。
總之，二進位編碼是處理高基數類別特徵的一個實用工具，它在維度削減和資訊保留之間提供了一個良好的平衡點，尤其適用於當獨熱編碼不可行時的替代方案。

## iPAS 考試出題分析

屬於未分類考範圍。

## 常見問題

### 二進位編碼的主要優勢是什麼？

二進位編碼的主要優勢在於其高效的維度削減能力。對於具有大量唯一值的類別特徵，獨熱編碼會產生與類別數量相同的特徵列，導致維度災難和記憶體消耗過大。二進位編碼則將每個類別轉換為其整數表示的二進位形式，並將每個二進位位作為一個新特徵。這使得所需的特徵列數量大大減少，通常為 log2(N) 的數量級（N為類別數），從而有效降低了模型的複雜度和訓練成本，同時仍能唯一識別每個原始類別。

### 二進位編碼會引入序數關係嗎？

二進位編碼在概念上確實會引入一定程度的序數關係，儘管不如標籤編碼那樣直接。它首先將類別映射到整數，這個整數映射本身就帶有順序。雖然最終的二進位特徵是多個二進位位的組合，但這些位仍然是基於原始整數順序生成的。對於對距離敏感的模型（如線性模型、支持向量機），這種隱含的序數關係可能會誤導模型，使其錯誤地解釋類別之間的相似性或差異。因此，在使用二進位編碼時，應評估其對特定模型性能的影響。

### 如何選擇二進位編碼與獨熱編碼？

選擇二進位編碼或獨熱編碼主要取決於類別特徵的基數和模型的類型。如果類別特徵的基數較低（例如少於10-20個唯一值），獨熱編碼通常是更好的選擇，因為它完全保留了類別的獨立性且可解釋性強。然而，如果類別特徵的基數非常高，獨熱編碼會導致維度爆炸，此時二進位編碼是更優的選擇，因為它能顯著減少維度。對於樹型模型（如決策樹、隨機森林、XGBoost），它們對特徵之間的序數關係不敏感，因此獨熱編碼和二進位編碼可能表現相似，但二進位編碼仍能提供維度優勢。

---

深度解說頁：https://aiterms.tw/learning/what-is-binary-encoding
快查頁：https://aiterms.tw/terms/binary-encoding
最後更新：2026/07/04