Encoding · One-hot vs Label

類別編碼

文字類別,翻成模型懂的數字

模型看不懂文字,類別要先編碼。無序類別(顏色、城市)用 One-hot,
有序類別(尺寸、學歷)用 Label——選錯會讓模型誤判大小關係。

無序 → One-hot | 有序 → Label
01 — 白話直覺

模型看不懂文字,要先翻成數字

「紅、綠、藍」、「台北、台中、高雄」這種類別文字,模型無法直接運算,要先編碼成數字。兩大主流:One-hot(每個類別開一欄,是1否0)適合無序類別Label(直接編號 0,1,2)適合有序類別。選錯會誤導模型。

One-hot 編碼

每個類別一欄。紅=[1,0,0]、綠=[0,1,0]、藍=[0,0,1]。適合無序(顏色、城市),不會讓模型誤以為有大小關係。缺點:類別多時欄位爆炸。

Label 編碼

直接編號:小=0、中=1、大=2。適合有序(尺寸、學歷)。缺點:用在無序類別會讓模型誤以為「藍(2) > 紅(0)」。

關鍵判斷:類別之間「有沒有大小順序」?有→Label;沒有→One-hot。把「城市」做 Label 編碼是經典錯誤。

02 — 核心互動

看同一欄用兩種編碼的差別

有一欄「顏色:紅/綠/藍」。切換編碼方式,看它變成什麼數字,以及為什麼無序類別該用 One-hot

03 — 選擇

編碼方法

優點

  • One-hot:無序類別的安全選擇
  • Label:有序類別簡潔有效
  • Target/Embedding:高基數類別的進階解

缺點 / 限制

  • 無序類別用 Label → 模型誤判大小
  • One-hot 遇高基數 → 維度爆炸
  • 測試集出現新類別 → 編碼出錯

方法一覽

🔢
One-hot
無序類別,開多欄
🔡
Label
有序類別,編號
🎯
Target
用目標均值編碼
🧬
Embedding
高基數,學向量
04 — 速記與對照

類別編碼方法

方法怎麼做注意
One-Hot每類別一個 0/1 欄類別多會維度爆炸
Label Encoding類別轉整數會植入假順序,適序位或樹模型
Target Encoding用目標均值編碼強但易洩漏,需交叉擬合
Frequency/Hashing用頻率或雜湊處理高基數

自我檢測

One-Hot 和 Label Encoding 差在哪?
One-Hot 每類別一欄(無序、維度大);Label 轉整數(省空間但引入假順序,只適序位或樹模型)。
高基數(類別很多)怎麼辦?
One-Hot 會維度爆炸;可用目標編碼、頻率編碼、雜湊技巧或嵌入(embedding)壓縮。
目標編碼的風險?
用到目標值,容易資料洩漏與過擬合;要在交叉驗證內對每折分別擬合、加平滑,別用全資料算。

🎯 重點整理

  1. 名目類別多用 One-Hot(無序)。
  2. Label 只適序位或樹模型(避免假順序)。
  3. 高基數用目標/頻率/雜湊/嵌入。
  4. 目標編碼易洩漏,要交叉擬合+平滑。
  5. 編碼器只 fit 訓練資料。

📝 iPAS 考點提醒

類別特徵須編碼成數值模型才能用,iPAS 特徵工程考點(初級科目一、中級科目三)。重點:無序類別用 One-Hot(不引入假大小)、有序用序數編碼、高基數用目標編碼或嵌入。易混點:別用 Label 編碼(0、1、2)處理無序類別——會引入不存在的順序、害了線性模型;目標編碼要小心資料洩漏、須在交叉驗證折內計算。情境:把資費方案、地區、職業等轉成數值。

想練情境題與詳解 → AI 學習與考證地圖

❓ 常見問題

為什麼類別特徵要編碼?

多數模型只吃數值,需把文字類別轉成數值;不同編碼方式會影響表現與是否引入錯誤的順序關係。

One-Hot 和 Label Encoding 差在哪?

One-Hot 每類別一個 0/1 欄(無順序、適合名目類別但維度大);Label 給整數(省維度但引入假的大小順序,適合有序類別或樹模型)。

高基數(類別很多)怎麼辦?

One-Hot 會爆維度;可用目標編碼(target encoding)、頻率編碼、雜湊編碼(hashing)或嵌入(embedding)。

目標編碼的風險?

用該類別的目標平均值編碼,容易資料洩漏與過擬合;要用交叉折或留一方式計算、加平滑,且只用訓練資料。

樹模型需要 One-Hot 嗎?

不一定;樹能處理整數編碼的類別,One-Hot 反而可能讓分裂變差。LightGBM 與 CatBoost 對類別有原生處理。

🧭 相關主題

← 返回 AI 學習與考證地圖