iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目一 AI 技術應用與規劃・114 年第二次・L21・第 28 題

連續型與類別型特徵混在一起,怎麼做特徵工程?

原題

在一個同時包含連續型特徵與類別型特徵的資料集中,若希望透過適當的特徵工程流程來提升模型整體表現,下列哪一種作法最為合適?

白話

有一個資料集,裡面有兩種特徵:「連續型特徵」(例如年齡、收入、購買金額,是數字)和「類別型特徵」(例如城市、性別、商品類別,是文字標籤)。

為了讓模型表現更好,要對這兩種特徵分別做適當的處理(特徵工程)。

問你:哪一種做法最為合適?

一句話總結

連續型和類別型特徵混合時,最好的做法是:連續特徵做標準化(Standardization)讓數值縮放一致,類別特徵用目標編碼(Target Encoding)轉成有意義的數值,再生成交互特徵捕捉兩種特徵的聯合效應,這樣每種特徵都被正確處理,模型整體表現最好。

情境

先感受問題:電商推薦系統怎麼混用兩種特徵

假設「台灣購物平台購易網」要預測使用者購買某商品的機率。資料集裡有:

連續型特徵(數字):

使用者年齡:35

過去 30 天消費金額:12,500 元

平均每次瀏覽時間:4.2 分鐘

會員天數:820 天

類別型特徵(文字標籤):

居住城市:台北

性別:女

最常購買類別:美妝

會員等級:黃金

機器學習模型只能吃數字,所以「台北」「女」「美妝」這些文字標籤要先轉成數字。但轉換方式不同,效果差很多。

同時,「年齡 35」跟「消費金額 12500」這兩個數字差了幾百倍,如果不縮放,模型會誤以為「消費金額」比「年齡」重要幾百倍,其實只是單位不同。

舊方法

錯誤處理方式的五個坑

  1. 對類別用標籤編碼(Label Encoding)產生假順序:把「台北=1、台中=2、高雄=3」,模型會以為高雄比台北「大」,城市之間其實沒有大小關係,這個數字順序是憑空捏造的,會誤導模型。
  2. 連續特徵不縮放,大數值吃掉小數值的影響力:「消費金額」範圍 0~50,000 元,「年齡」範圍 18~80 歲。不縮放的話,梯度下降時消費金額的步伐大得多,年齡的信號幾乎被淹沒。
  3. 把連續特徵全部離散化,丟失精度:把年齡 35 變成「青壯年」、消費 12500 元變成「中高消費」,喪失了 34 歲和 36 歲的差異、11000 元和 14000 元的差異,模型因此損失精確性。
  4. 類別特徵直接 One-Hot Encoding,維度爆炸:如果城市有 300 個、商品類別有 1000 個,One-Hot 後特徵維度暴增到幾千維,訓練慢、容易過擬合。
  5. 忽略交互特徵,錯過組合信號:「台北的女性黃金會員」的購買行為可能和「高雄的男性普通會員」完全不同,但只看單個特徵看不出來,需要生成交互特徵(如城市 × 性別 × 會員等級)才能捕捉。

新方法

標準化 + 目標編碼 + 交互特徵,怎麼解

回到購易網。正確的特徵工程流程:

連續特徵:標準化(Standardization)

把年齡、消費金額、瀏覽時間都轉成「平均值 0、標準差 1」的分佈。年齡 35 歲在所有使用者裡是什麼位置?比平均大還是小、大多少個標準差?這樣模型就能公平比較不同量級的特徵。

類別特徵:目標編碼(Target Encoding)

把「台北」替換成「住台北的使用者,平均購買機率是多少」(例如 0.34)。這樣編碼保留了類別和目標變數的統計關係,不會有假順序問題,也不會維度爆炸。

生成交互特徵

把「城市 × 會員等級」「年齡 × 消費金額」這類組合特徵加進來,捕捉兩個維度的聯合效應。

台北 × 黃金會員 → 目標購買率 0.51

年齡(標準化)× 消費金額(標準化)→ 新特徵

這就是選項 C 講的:對連續特徵做標準化,類別特徵採用目標編碼,並生成交互特徵提升模型表現。

錯選項

為什麼其他選項是錯的

A將類別型特徵使用標籤編碼(Label Encoding)轉換後,與連續特徵直接合併進行模型訓練

字面在說什麼

把城市、性別等類別特徵用標籤編碼(Label Encoding)轉成整數(台北=0、台中=1、高雄=2),然後直接跟連續特徵合在一起訓練。

為什麼不對

標籤編碼會為無序類別創造「假順序」。城市之間沒有大小關係,但 Label Encoding 之後模型會誤以為「高雄(2)比台北(0)大」,這個假序數關係會誤導線性模型、邏輯迴歸等對數值大小敏感的演算法。決策樹類模型雖然不受影響,但本題問的是「最合適」的做法,標籤編碼不是處理無序類別的最佳方式。

誰會選錯

知道「類別特徵要先編碼」但對 Label Encoding 的適用條件不熟的考生。Label Encoding 適合有序類別(小學 < 國中 < 高中 < 大學),不適合無序類別(城市、顏色、品牌)。

B將連續特徵進行離散化(Discretization)或分桶(Binning)轉為類別型特徵,統一以類別方式處理

字面在說什麼

把年齡、消費金額這類連續數字切成幾個區間(例如「18-30 歲」「31-45 歲」),變成類別,再統一用類別方式處理。

為什麼不對

離散化會損失資訊。34 歲和 36 歲被分到同一個桶就沒有區別了,29 歲和 31 歲明明只差 2 歲卻落在不同桶。這種人為的邊界讓模型看不到年齡的連續趨勢。此外,切分點的選擇本身就很主觀,不同切法結果差異很大,反而增加了設計複雜度而不是簡化。

誰會選錯

聽過「有時候離散化能提升模型表現」的考生,把這個技巧誤用在全部連續特徵上。離散化偶爾有用,但把所有連續特徵都強制轉成類別,丟失的資訊遠大於得到的好處。

D只保留連續特徵,忽略類別型變量以簡化模型

字面在說什麼

把城市、性別、商品類別、會員等級全部丟掉,只用年齡、消費金額等數字特徵訓練模型。

為什麼不對

類別特徵往往包含極高的預測力。「這個人是黃金會員」「她最常買美妝」這些資訊對預測購買行為非常重要,比年齡或消費金額更能代表行為偏好。把它們全部丟掉等於主動降低模型準確率。「簡化」不等於「更好」,如果簡化的代價是丟掉有用資訊,那就得不償失。

誰會選錯

被「類別特徵處理麻煩」嚇到,覺得乾脆不用的考生。或者聽過「Occam's Razor(奧卡姆剃刀)越簡單越好」就過度應用。記住:特徵工程的目標是保留有用資訊並排除雜訊,不是把所有麻煩的特徵都刪掉。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 28 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。