今天我們要來深入學習在機器學習建模前,如何對數據進行「整形手術」的幾個關鍵技術:標籤編碼、目標編碼,以及分箱!
這些技術都屬於特徵轉換的範疇,目的是將原始數據(特別是文字或連續數值)轉換成模型能理解、能計算的格式,從而提高模型的學習效率與預測性能。
專業名詞解釋 (知識點)
1. 標籤編碼 (Label Encoding)
標籤編碼是用於處理類別變數(Categorical Variables)的方法之一。- 底層邏輯: 它將每個不同的類別對應到一個單獨的整數編號。
- 適用情境: 主要適用於有序類別變數(Ordinal Variables),即類別之間存在明確順序關係的數據,例如教育程度(小學、高中、大學) 或服務等級(Basic, Premium, VIP)。
- 範例: 將「小學」→ 0、「高中」→ 1、「大學」→ 2。
- 風險: 如果將無序類別(例如顏色:紅、藍、綠)誤用標籤編碼,模型可能會錯誤地解讀這些數字之間的數學意義(例如認為「紅色 1」比「藍色 0」更高),進而影響模型表現。
2. 目標編碼 (Target Encoding) / 平均編碼 (Average Encoding)
目標編碼是一種進階的類別編碼技術。
- 底層邏輯: 它不直接賦予整數或創建新欄位,而是利用該類別在目標變數(Target Variable)上的統計量(例如平均值、中位數或轉換率)來取代原始的類別值。
- 應用優勢: 當類別變數的種類非常多(即高基數 High Cardinality)時,如果使用獨熱編碼(One-hot Encoding)會導致特徵維度爆炸,造成運算負擔。目標編碼則能避免這個問題,同時保留類別與目標變數之間的關聯性。
- 範例: 針對每個「廣告來源」類別,用該來源的平均轉換率來作為新的數值特徵。
3. 分箱 (Binning) / 數據離散化 (Data Discretization)
分箱是將連續型數值變數轉換成離散區間或類別的常用方法。
- 底層邏輯: 模型有時難以捕捉連續數據的細微變化,但將數據分到幾個大區間(或稱「桶」)後,可以讓模型更穩定地學習趨勢,例如將年齡從連續數值轉為「青年」、「中年」、「老年」等區間。分箱有助於視覺化、提升模型穩定性,或加入語意層級。
- 常見方法: 等寬分箱 (Equal-width): 將數值範圍平均劃分成等距的區間。 等頻分箱 (Equal-frequency / Quantile): 確保每個區間內的樣本數量大致相同(例如四分位數分箱)。 K-Means分箱: 使用 K-means 聚類技術來劃分連續變數的區間。
一句話總結
簡單來說,標籤編碼是給「有順序的類別」編號,分箱是把「連續的數字」切成幾塊,而目標編碼則是讓「類別直接用預測結果的平均值」來說話,這三招都是為了讓模型吃進去的數據更營養!
表格比較:數據轉換技術
為了讓大家加強記憶,我們來比較一下這三種技術,同時加上最常用來對比的獨熱編碼 (One-hot Encoding),讓大家一次搞懂類別變數的處理方式!
- 標籤編碼 (Label Encoding)有序類別轉整數有序類別變數(Ordinal)轉換快速、節省空間。
- 獨熱編碼 (One-hot Encoding)無序類別轉向量無序類別變數(Nominal)不引入錯誤的數值順序假設。
- 目標編碼 (Target Encoding)高基數類別轉數值高基數類別變數不造成維度爆炸,且保留與目標變數的關聯性。
- 分箱 (Binning / 離散化)連續數值轉區間連續型數值變數提升模型穩定性,降低極端值影響。
案例應用:電商行銷數據的預處理
假設你是電商的 AI 應用規劃師,正在建立一個模型來預測顧客是否會購買某項新產品(目標變數 Y=1/0)。你收集到三組原始數據:
- 會員等級 (V1): 銅級、銀級、金級 (有序類別)。
- 居住城市 (V2): 台北市、新北市、台中市... (高基數無序類別,共 22 個縣市)。
- 年齡 (V3): 連續數值 18, 25, 42... (連續數值)。
你的任務: 將這三組數據轉換為模型能處理的格式。
- 會員等級 (V1) (有序類別)標籤編碼銅級 → 0;銀級 → 1;金級 → 2讓模型理解 2 > 1 > 0 的順序關係。
- 居住城市 (V2) (高基數類別)目標編碼計算每個城市過去的平均購買轉換率,用轉換率數值取代城市名稱。降低特徵維度,且數值直接反映該城市的購買力。
- 年齡 (V3) (連續數值)分箱劃分為「18–29 歲(青年)」、「30–49 歲(中年)」、「50 歲以上(老年)」等區間。降低極端年齡的影響,使模型學習穩定的年齡群體趨勢。
這就是我們在實務中,如何靈活運用這些轉換技術,讓原始、複雜的數據,變成模型可以直接吸收的高效特徵!










