---
title: "序數編碼（Ordinal Encoding）"
slug: ordinal-encoding
language: zh-TW
source: https://aiterms.tw/terms/ordinal-encoding
updated_at: 2026-06-22
tags: [特徵工程, 類別編碼, 資料預處理, 機器學習, 序數資料]
ipas_term: false
---

# 序數編碼（Ordinal Encoding）

將類別型特徵依照其固有順序轉換為整數的編碼方式，保留類別間的大小關係。

## 完整說明

序數編碼（Ordinal Encoding）是一種類別特徵編碼方法，將具有內在順序關係的類別值（如教育程度「高中 < 大學 < 碩士」或滿意度「低 < 中 < 高」）映射為遞增整數，讓模型能夠利用類別間的排序資訊進行學習，是處理序數型資料（Ordinal Data）的適當預處理手段。

## 常見問題

### 什麼時候應該用序數編碼，什麼時候用獨熱編碼？

選擇編碼方式的關鍵在於判斷特徵值之間是否存在固有的順序關係。如果特徵是序數型的（Ordinal），也就是類別之間有明確的大小或等級關係（如教育程度、產品評級、溫度等級），應優先考慮序數編碼，它能保留這種排序資訊，且不增加特徵維度。如果特徵是名義型的（Nominal），類別之間只有區別而沒有大小關係（如城市名稱、顏色、職業類別），則應使用獨熱編碼，避免模型誤解數值大小代表某種優劣。對於高基數（High Cardinality）的名義型特徵（如有數百種類別的地區代碼），獨熱編碼會大幅增加維度，此時可考慮目標編碼（Target Encoding）或雜湊編碼（Hashing）。

### 序數編碼是否保證每個等級之間的差距相等？

序數編碼在數學表示上預設了等距假設，也就是將類別映射為 0、1、2、3 時，暗示了相鄰等級之間的差距相同。然而在現實中，這個假設未必成立。以客戶滿意度為例，從「非常不滿意」到「不滿意」的改善幅度，與從「滿意」到「非常滿意」的改善幅度在業務意義上可能並不相等。這種等距假設的問題在線性模型中尤為明顯，可能影響模型的學習效果。基於樹的模型（如決策樹、隨機森林）對此不敏感，因為它們只關注相對大小而非絕對差距。如果序數特徵的等級間距不均勻，可以考慮根據業務知識手動指定更合適的數值映射，而非一律使用連續整數。

### 若測試集出現訓練集中未見過的類別值，序數編碼該如何處理？

這是類別編碼在生產環境中常見的挑戰，被稱為「未知類別問題（Unseen Category Problem）」。序數編碼在遇到未知類別時，通常有幾種處理策略。第一是設定一個預設的「未知」整數值（如 -1 或其他超出已知範圍的值），讓模型知道這是一個不在訓練範圍內的新類別。第二是在資料收集和特徵設計階段預先加入「其他」這個類別，讓所有未知值都對應到這個已定義的編碼。第三是使用 scikit-learn OrdinalEncoder 的 handle_unknown 參數，設定為 'use_encoded_value' 並指定 unknown_value 來統一處理未知值。最佳做法是在特徵設計初期就考慮這個問題，而非等到部署後才被動應對。

---

來源：https://aiterms.tw/terms/ordinal-encoding
快查頁：https://aiterms.tw/terms/ordinal-encoding
最後更新：2026/06/22
深度解說：https://aiterms.tw/learning/what-is-ordinal-encoding