🏷️ Categorical Encoding 類別編碼

互動式機器學習基礎教學

1

為什麼需要類別編碼?

🤖

電腦的困擾

機器學習模型只能處理數字,看不懂「紅色」、「男」、「晴天」這些文字。

所以我們需要一個「翻譯官」,把文字翻譯成數字!

📝 原始資料
🍎 蘋果 🍌 香蕉 🍇 葡萄
翻譯成數字 →
🔢 模型能理解
0 1 2
2

選擇資料集,看看我們的資料

📋 原始資料(文字)

👆 選擇資料集後點擊「開始編碼」
4

該選哪一種?速查表

🏷️

Label Encoding

✅ 適合使用:
  • 類別是目標變數(y 欄位)
  • 只有兩個類別(如:男/女、是/否)
❌ 避免使用:
  • 無序類別 + 線性模型(會誤解大小關係)
📊

One-Hot Encoding

✅ 適合使用:
  • 無序類別(顏色、血型、城市)
  • 使用線性模型、神經網路
  • 類別數量不多(< 10 個)
❌ 避免使用:
  • 類別數量很多(維度爆炸)
📏

Ordinal Encoding

✅ 適合使用:
  • 類別有自然順序(學歷、滿意度、成績等級)
  • 順序資訊對預測有意義
❌ 避免使用:
  • 類別沒有自然順序
📊

Frequency Encoding

✅ 適合使用:
  • 類別數量非常多(城市、郵遞區號、商品ID)
  • 不需要目標標籤 y (非監督式特徵工程)
  • 希望保留類別的個數資訊
❌ 避免使用:
  • 多個類別頻率相同(編碼後分辨不出)
🎯

Target Encoding

✅ 適合使用:
  • 類別數量非常多(城市、商品ID、郵遞區號)
  • 有明確的目標變數 y
  • 希望直接挖掘類別與目標的關聯性
❌ 避免使用:
  • 沒有目標值(非監督式學習)
  • 未做 K-Fold 處理(會資料洩漏)

🧭 快速判斷流程

你的類別有順序嗎?
✅ 有(如:大 > 中 > 小)
↓
用 Ordinal Encoding
❌ 沒有(如:紅、藍、綠)
↓
有目標值 y 嗎?
有 y → Target Encoding
沒有 y → 類別數量多嗎?
少(< 10) → One-Hot
多(≥ 10) → Frequency Encoding
5

常見陷阱與注意事項

⚠️

假的順序關係

對無序類別使用 Label Encoding,模型會誤以為有大小之分。
例如:紅=0, 藍=1, 綠=2 → 模型誤認「綠 > 紅」

💥

維度爆炸

One-Hot 的欄位數量 = 類別數量。
如果有 1000 個城市,就會產生 1000 個新欄位!

🕵️

未知類別

測試資料可能出現訓練時沒見過的類別。
需要設定預設值或使用特殊處理策略。

🔒

資料洩漏

編碼器必須只在訓練集上學習分類對照表,
不能使用全部資料,否則會洩露測試集資訊。