iPAS AI 應用規劃師 初級 科目一 人工智慧基礎概論

電信用戶「費率方案」這種類別特徵,怎麼讓模型看懂?

原題 07

某電信公司建立機器學習模型預測用戶流失風險。資料中包含多個類別型特徵(Categorical Features),例如「費率方案類型」與「客戶地區」。為使模型能有效使用這些特徵,下列何者最直接用於將類別型特徵轉換為模型可處理的數值格式?

白話

某電信公司要建機器學習模型預測用戶流失風險,資料裡有「費率方案類型」和「客戶地區」這類類別型特徵(Categorical Features)。為了讓模型能使用這些特徵,需要先把它們轉換成數值格式。

問你:下列哪種方法最直接用於將類別型特徵轉換為模型可處理的數值格式?

點選你的答案。

01 總結

一句話總結

把類別型特徵(費率方案、地區)轉成模型可讀的數值,直接使用的方法是 One-hot 編碼(One-hot Encoding):每個類別變成一個獨立的 0/1 欄位,不帶任何順序關係。

02 情境

先感受問題:模型看到「台北」這兩個字,它看得懂嗎?

假設你是「通達電信」的資料工程師,正在建立用戶流失預測模型。你的資料集長這樣:

  • 用戶 A:費率方案「企業型」、地區「台北」、月費 2000 元、使用年資 3 年
  • 用戶 B:費率方案「學生型」、地區「台中」、月費 699 元、使用年資 1 年

月費和使用年資是數字,模型可以直接用。但「企業型」「學生型」「台北」「台中」是文字,機器學習模型根本看不懂文字,無法做加減乘除、無法計算距離、無法找規律。

你必須先把這些類別文字轉成數字,模型才能開始學習。這個轉換步驟,就是 One-hot 編碼在做的事。

03 對照

直接把類別編號,會出什麼問題?

在「通達電信」了解 One-hot 編碼前,工程師嘗試過更簡單的做法:

  1. 直接給編號(Label Encoding):「台北=1, 台中=2, 高雄=3」。問題:模型會以為台中(2)比台北(1)大一倍,高雄(3)比台北(1)大三倍,但地區之間根本沒有這種數量關係
  2. 忽略類別特徵:只用數值特徵,把費率方案、地區都丟掉。這些特徵可能對流失預測很重要,直接丟掉會讓模型效果大打折扣
  3. 手動編排邏輯:「企業型=3, 一般型=2, 學生型=1」,假裝有順序關係。這是人為製造假的順序,會誤導模型學習錯誤規律
  4. 把類別全部轉成字串特徵:有些模型框架強行把文字當特徵,但這樣每個字元都被單獨處理,失去類別的語意
  5. 等待「更好的方法」:拖著不處理,讓資料科學家在無法用類別特徵的情況下建模,效果先天不足
04 解法

One-hot 編碼:每個類別變成一個 0/1 開關

「通達電信」導入 One-hot 編碼後,資料變成這樣:

原本的「費率方案」欄(企業型/一般型/學生型),變成三個欄位:

  • 費率方案_企業型:1 或 0
  • 費率方案_一般型:1 或 0
  • 費率方案_學生型:1 或 0

用戶 A 是企業型,所以「費率方案_企業型=1,費率方案_一般型=0,費率方案_學生型=0」。

每一筆資料在這三個欄位裡只有一個是 1(one-hot = 只有一個熱點),其他都是 0。

這樣做的好處:台北和台中之間沒有「台北 < 台中」這樣的大小關係,每個類別對應的 0/1 欄位之間也沒有數值大小關係,模型可以正確學習每個類別的獨立影響。

這就是選項 C 為什麼正確:One-hot 編碼(One-hot Encoding)直接把類別型特徵轉換成模型可處理的數值格式

技術版:類別特徵編碼方法的對比

類別型特徵的處理是特徵工程中的核心課題,不同的編碼方式適用不同情境:

One-hot 編碼(本題考點):把每個類別值轉成獨立的 0/1 欄位。適用於「名義型」類別(沒有順序關係),例如地區、費率方案類型、品牌名稱。缺點:類別數量多時欄位數量爆炸(高基數問題)。

標籤編碼(Label Encoding):把類別直接對應整數(如台北=0, 台中=1, 高雄=2)。適用於「序數型」類別(有順序關係),例如評分等級(差=0, 普=1, 好=2, 優=3)。NEVER 用於沒有順序關係的名義型類別。

目標編碼(Target Encoding):用類別對應的目標值(如流失率)替換類別名稱。效果好但容易過擬合,需要配合交叉驗證謹慎使用。

Embedding:把類別映射到低維向量,適合高基數類別(如用戶 ID、商品 ID)。常在深度學習模型中使用。

為什麼出題者要考這題:類別特徵處理不當是機器學習初學者最常犯的前處理錯誤。One-hot 編碼是最基礎也最常用的方法,是 AI 規劃師必須掌握的概念。

05 陷阱

為什麼其他選項是錯的

A資料分群(Data Clustering)

字面在說什麼

把相似的資料點歸為同一群,是非監督式學習的方法,用於探索數據結構。

為什麼不對

資料分群是「分析任務」,是用來發現數據中的群組結構的,不是「特徵前處理」工具。它不會把「費率方案」文字轉成數值,而是把整筆資料分成群。功能完全不同。

誰會選錯

看到「分類」就以為跟「類別特徵處理」有關的人。分群(Clustering)是非監督式分析,類別特徵編碼(Encoding)是資料前處理,完全是兩回事。

B特徵交叉(Feature Cross)

字面在說什麼

把兩個或多個特徵組合成一個新特徵,捕捉特徵之間的交互作用。例如:「費率方案_企業型」×「地區_台北」產生一個新特徵「企業型+台北」。

為什麼不對

特徵交叉是在「已有數值特徵」的基礎上做組合,它的前提是類別特徵已經轉成數值了。它是特徵工程的進階步驟,不是「把類別轉成數值」的基礎步驟。

誰會選錯

知道特徵交叉跟類別特徵有關,但沒弄清楚它的前提條件是「已有數值」的人。One-hot 在前,Feature Cross 在後,順序不能搞反。

D寬深模型(Wide and Deep)

字面在說什麼

一種神經網路架構,同時有「寬層」(Wide,用特徵交叉記憶特定規則)和「深層」(Deep,用 Embedding 泛化),適合同時含有類別特徵和數值特徵的推薦系統。

為什麼不對

Wide and Deep 是「模型架構」,不是「特徵前處理方法」。它雖然能處理類別特徵(內部可能用 Embedding),但模型架構和特徵編碼是兩個不同層次的概念。題目問「最直接用於轉換類別特徵格式」,這是前處理工具,不是模型架構。

誰會選錯

知道 Wide and Deep 模型「可以處理類別特徵」,但搞混了「模型能處理」和「特徵前處理工具」的差別。

06 變形

同個考點下次怎麼變形

變形 1

One-hot 編碼的缺點是什麼?

直覺

One-hot 這麼好,有沒有什麼缺點?

答案

高基數問題(High Cardinality):類別數量多時欄位爆炸。例如「用戶 ID」有 10 萬個不同值,One-hot 會產生 10 萬個 0/1 欄位,讓模型變得龐大且效率低。這種情況應改用目標編碼或 Embedding。

變形 2

「教育程度:國中/高中/大學/研究所」應該用 One-hot 還是標籤編碼?

直覺

教育程度感覺有順序,是不是可以直接 1/2/3/4?

答案

教育程度是「序數型(Ordinal)」類別,有明確順序關係(國中 < 高中 < 大學 < 研究所),可以用標籤編碼(1/2/3/4)。這樣做能讓模型學到「教育程度越高」的連續性。但如果用 One-hot 也不算錯,只是多用了 4 個欄位而已。判斷標準:類別之間有無自然順序。

變形 3

什麼是「虛擬變數陷阱(Dummy Variable Trap)」?

直覺

One-hot 有什麼要注意的細節?

答案

n 個類別用 One-hot 會產生 n 個欄位,但這 n 個欄位中任何一個都可以從其他 n-1 個推導出來(完美多重共線性)。解法是用 n-1 個欄位,丟掉一個作為基準(Drop First),避免線性迴歸等模型的數值不穩定問題。

變形 4

特徵交叉(Feature Cross)是在做什麼?

直覺

特徵交叉既然出現在選項裡,它到底是什麼?

答案

特徵交叉是把兩個或多個特徵組合成新特徵,捕捉它們之間的交互影響。例如「費率方案=企業型」和「地區=台北」兩個特徵單獨看可能都不強,但「企業型 + 台北用戶」這個組合對流失率有特殊影響,特徵交叉就能讓模型發現這個規律。它是特徵工程的進階技術,前提是類別特徵已完成編碼。

變形 5

決策樹模型需要對類別特徵做 One-hot 編碼嗎?

直覺

不是所有模型都需要 One-hot 嗎?

答案

部分決策樹實作(如 LightGBM、CatBoost)可以直接處理類別特徵,內部有對應的處理機制,不需要 One-hot。但傳統的 scikit-learn 決策樹仍需要數值輸入。一般原則:使用框架前確認它是否原生支援類別特徵,如果不支援就需要先做 One-hot 或標籤編碼。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 115 年第一次 iPAS AI 應用規劃師 初級 科目一 人工智慧基礎概論 第 7 題

查看官方原文 PDF