---
title: "獨熱編碼（One-hot Encoding）"
slug: one-hot-encoding
language: zh-TW
source: https://aiterms.tw/terms/one-hot-encoding
updated_at: 2026-07-29
tags: [資料處理, 特徵工程]
ipas_term: false
---

# 獨熱編碼（One-hot Encoding）

> **你有沒有把顏色、地區這種類別資料丟進模型後，才發現數字大小被誤會？**
>
> 你可以把 獨熱編碼 想成 把類別變成模型看得懂的表示。
>
> 避免模型把類別大小誤當成順序，沒有順序的類別，就給它們各自一個開關 這件事就特別重要。
>
> 你可以把它想成一個把抽象概念拉回日常判斷的提示，先知道它解決什麼問題，再看技術細節。

### 容易混淆
> **獨熱編碼 vs 標籤編碼**
>
> 標籤編碼像給類別編號（紅=0, 綠=1, 藍=2），獨熱編碼像給每個類別一個獨立的二元開關，獨熱編碼避免了模型誤認為數字大小有意義的問題，更適合沒有順序關係的類別。
>
> 最關鍵的區別：一個展開成多欄，一個只用單欄編號。
>
>
> **獨熱編碼 vs 標籤編碼**
>
> 獨熱編碼把每個類別拆成獨立開關，標籤編碼只是給一個編號
>
> 最關鍵的區別：有沒有把類別順序偷偷塞進去。

### 記住這句就好
> 沒有順序的類別，就給它們各自一個開關

### 實際案例
> **案例 1：把水果類別展開成蘋果、香蕉、橘子三個欄位**
>
> 這種情況下，獨熱編碼 會幫你把原本手工或靠直覺的步驟變得更穩。
>
>
> **案例 2：把城市名稱轉成獨立欄位，讓模型不把台北當成比台中更大**
>
> 另一個常見場景也能看出 獨熱編碼 的價值，因為它處理的是同一種核心問題。

### 算法與應用
> 核心意思就是：沒有順序的類別，就給它們各自一個開關。
>
> 類別少時很直觀，類別很多時向量會變得又寬又稀疏
>
> 遇到高基數類別時，常會改看 embedding 或其他編碼方式

### 怎麼做，以及維度會變多少

> 獨熱編碼把一個類別欄位展開成多個 0 與 1 的欄位，每一列只有一個位置是 1。

原始資料一欄「顏色」，有三種值：

| 原始值 | 顏色_紅 | 顏色_綠 | 顏色_藍 |
| --- | --- | --- | --- |
| 紅 | 1 | 0 | 0 |
| 綠 | 0 | 1 | 0 |
| 藍 | 0 | 0 | 1 |

> 一欄變三欄。規則很簡單：`新增欄位數 = 該欄位的相異值個數`。
>
> 這條規則就是它最大的限制。郵遞區號有幾千個值、商品編號有幾十萬個值，直接做獨熱編碼會產生一個極度稀疏的高維矩陣，記憶體吃不消，模型也學不動。

### 什麼時候該用，什麼時候不該用

> **該用：類別數少，而且類別之間沒有大小順序。** 顏色、性別、國家、支付方式都是典型例子。這時獨熱編碼是正確做法，因為它不會憑空製造出「紅 < 綠 < 藍」這種不存在的順序關係。
>
> **不該用，改用標籤編碼（label encoding）：類別本身有順序。** 例如「小、中、大」「國小、國中、高中、大學」，直接編成 1、2、3、4 反而保留了有意義的資訊。
>
> **不該用，改用嵌入（embedding）：類別數很多。** 使用者 ID、商品 ID、詞彙表都屬於這一類。嵌入把每個類別對到一個低維稠密向量，維度可控，而且相似的類別會學到相近的向量，這是獨熱編碼做不到的（獨熱向量之間的距離永遠相同）。
>
> **一個容易踩的坑：虛擬變數陷阱（dummy variable trap）。** 三種顏色其實只需要兩欄就能表達，因為兩欄都是 0 就代表第三種。全部展開會讓欄位之間完全共線，線性回歸會解不出唯一解。所以做線性模型時通常會丟掉一欄（`drop_first`），但樹模型與神經網路不受影響，不用丟。

### 情境判斷
> **Q1（直覺題）：** 把水果類別展開成蘋果、香蕉、橘子三個欄位 這種情況，會先想到 獨熱編碼 嗎？
>
> → 會，因為它正好在處理這件事的核心問題，只是還要看資料乾不乾淨、流程穩不穩。
>
>
> **Q2（判斷題）：** 類別數很多時，還適合直接用嗎？
>
> → 看情況，類別一多維度會爆，常改用 embedding 或其他壓縮表示

### 常見問題
> **Q：獨熱編碼後的向量長度是多少？**
> 獨熱編碼後的向量長度等於類別型特徵中不同類別的總數。
> 例如，如果一個特徵有 5 個不同的類別，那麼經過獨熱編碼後，每個類別都會被轉換成一個長度為 5 的向量。
>
> **Q：獨熱編碼會增加模型的複雜度嗎？**
> 是的，獨熱編碼會增加模型的複雜度，特別是在類別數量非常多的情況下。
> 維度增加會導致計算量增加，並可能導致過擬合。
> 因此，在使用獨熱編碼時，需要權衡其優缺點。
>
> **Q：除了獨熱編碼，還有哪些處理類別型資料的方法？**
> 除了獨熱編碼，還有標籤編碼、順序編碼、詞嵌入和目標編碼等方法。
> 選擇哪種方法取決於具體的應用場景和資料特性。
> 例如，詞嵌入通常用於自然語言處理，而目標編碼通常用於推薦系統。

### 相關術語
> - **標籤編碼**：看完這個再讀它，會更容易把概念串起來
> - **嵌入表示**：看完這個再讀它，會更容易把概念串起來
> - **特徵工程**：看完這個再讀它，會更容易把概念串起來
> - **Softmax 函數**：看完這個再讀它，會更容易把概念串起來
> - **分詞**：看完這個再讀它，會更容易把概念串起來

---

來源：https://aiterms.tw/terms/one-hot-encoding
快查頁：https://aiterms.tw/terms/one-hot-encoding
最後更新：2026/07/29
深度解說：https://aiterms.tw/learning/what-is-one-hot-encoding