關於資料格式處理,哪個敘述不正確?
在進行資料分析時,會遇到類別型(Categorical)與數值型(Numerical)資料格式。關於這兩種資料格式的處理,下列敘述何者不正確?
資料分析時會碰到兩種資料格式:類別型(如顏色、性別)和數值型(如身高、銷售額)。題目給出四個關於這兩種格式的處理方式敘述,其中有一個說法有錯。
問你:四個敘述中,哪一個說法是不正確的?
一句話總結
選項 C 不正確:標準化(Standardization)確實讓平均值為 0、標準差為 1,但不會把資料壓縮到 0 至 1 之間。把資料壓縮到 [0,1] 的是 Min-Max 正規化,不是標準化。
先感受問題:標準化跟正規化,差在哪
嘉誠科技的數據工程師阿仁,在處理員工績效資料:
年資(年):1, 3, 5, 8, 15
兩個特徵的量綱差很多,直接拿去跑 KNN 模型,「業績差 220 萬」的影響會遠大於「年資差 14 年」。
他需要縮放這兩個特徵。有兩種主要方法:
- Min-Max 正規化(Min-Max Scaling):把所有值壓縮到 [0, 1] 範圍內。結果保證在 0 到 1 之間。
- Z-score 標準化(Standardization):把所有值轉成均值 0、標準差 1 的分佈。結果可以是負數、可以超過 1,沒有固定範圍。
這兩種方法的結果差很多,不能搞混。
混淆標準化與 Min-Max 正規化時會遇到的問題
- 誤以為標準化結果在 [0,1]:Z-score 標準化的結果可以是任意實數(負無窮到正無窮),沒有固定範圍上限。如果期待結果在 [0,1],應該用 Min-Max Scaling。
- 在有離群值時用錯方法:Min-Max Scaling 對離群值極度敏感,一個極端值會把所有其他值壓縮到接近 0。Z-score 標準化對離群值更穩健,但更穩健的是 Robust Scaling(用中位數和 IQR)。
- 誤解「標準差為 1」就等於「範圍在 1 以內」:標準差 = 1 代表「一個標準差的寬度是 1」,但正常資料通常有 Z 值超過 1 的點,絕對不是全部在 [0,1]。
- 不知道各方法適合的場合:深度學習常用 Min-Max;統計迴歸、SVM 常用 Standardization;有離群值時用 Robust Scaling。用錯方法效果會差很多。
- 忽略標準化要在訓練集 fit,測試集 transform:必須用訓練集的均值和標準差來縮放測試集,否則會有資料洩漏問題。
找出 C 選項錯在哪裡:多了「壓縮至 0 至 1」這個錯誤說法
逐句拆解選項 C:
- 「透過將資料平移與縮放」:正確,標準化確實做平移(減均值)和縮放(除標準差)。
- 「使其平均值為 0、標準差為 1」:正確,這是 Z-score 標準化的定義。
- 「可在多數距離型演算法中改善收斂速度」:正確,KNN、SVM 等距離型演算法受益於標準化。
- 「並同時將數值範圍壓縮至 0 至 1 之間」:這句話是錯的!
把資料壓縮到 [0, 1] 範圍的是 Min-Max 正規化,公式是:(x - min) / (max - min)。
Z-score 標準化的結果沒有固定範圍。業績 300 萬的 Z 值可能是 +1.8,業績 80 萬的 Z 值可能是 -1.2,都不在 [0, 1] 內。
這就是為什麼選項 C 不對:標準化(Standardization)透過將資料平移與縮放,使其平均值為 0、標準差為 1,可在多數距離型演算法中改善收斂速度,並同時將數值範圍壓縮至 0 至 1 之間,後半句「壓縮至 0 至 1」的說法是 Min-Max 的特性,不是 Standardization 的特性。
技術版:三種縮放方法的公式與使用時機
三種主要縮放方法的比較:
| 方法 | 公式 | 輸出範圍 | 適用場景 |
|---|---|---|---|
| Z-score 標準化 | (x - μ) / σ | (-∞, +∞),通常 [-3, 3] | SVM、迴歸、PCA |
| Min-Max 正規化 | (x - min) / (max - min) | [0, 1] | 深度學習、圖像 |
| 穩健縮放(Robust Scaling) | (x - Q2) / IQR | 無固定範圍 | 有離群值時 |
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler
X = [[80], [100], [150], [200], [300]] # 業績萬元
# Z-score 標準化
std = StandardScaler().fit_transform(X)
# [[-1.26], [-0.84], [-0.0], [0.84], [1.26]] → 不在 [0,1]!
# Min-Max 正規化
mm = MinMaxScaler().fit_transform(X)
# [[0.0], [0.09], [0.32], [0.55], [1.0]] → 確實在 [0,1]
# Robust Scaling
rb = RobustScaler().fit_transform(X)
# [[-0.7], [-0.5], [0.0], [0.5], [1.5]] → 不在 [0,1]
注意:MUST 先 fit 訓練集,再 transform 測試集。絕不能在測試集上重新 fit(會用到測試集的均值/標準差,造成資料洩漏)。
為什麼 A、B、D 是正確的(不是答案)
AOne-Hot Encoding 適合無序類別,但高基數會造成維度爆炸
One-Hot Encoding 會把每個類別變成一個新欄位(二元向量),類別越多、欄位越多。
這個說法完全正確。One-Hot 確實適合無序類別(Nominal),也確實在高基數(High Cardinality,例如城市有 1000 個)時會造成維度爆炸(1000 個新欄位),所以是正確的敘述,不是答案。
忘了題目問「不正確」而選了 A 的人。A 描述完全準確,在反向題要特別注意避開「感覺對」的選項。
BLabel Encoding 用於無序資料,會引入虛假大小關係
標籤編碼把無序類別換成整數,模型可能把整數的大小關係誤解為類別之間的順序。
這也是完全正確的描述(這正是 q05 考的考點)。Label Encoding 用在無序類別上確實會引入虛假順序關係,所以 B 是正確敘述,不是答案。
對 Label Encoding 記憶模糊、以為「把類別編成整數沒問題」的人,反而會以為 B 是錯的而選它。
D分箱提升可解釋性,但設計不當會有資訊損失或邊界偏誤
把連續變數(如年齡)分成幾個區間(20-30歲、30-40歲),讓模型更好解釋,但如果區間劃法不對,可能丟失資訊或在邊界附近的資料被錯誤歸類。
分箱(Binning)確實能提升可解釋性(例如「高收入組」「中收入組」);但如果區間劃分不依據資料分佈(例如不看分位數,隨意每 10 萬一個區間),確實會有資訊損失和邊界敏感性問題。所以 D 是正確的,不是答案。
不熟悉分箱方法、以為「分箱只有好處沒有壞處」的人。分箱是 trade-off,說它「可能有問題」是正確的。
同個考點下次怎麼變形
Z-score 標準化後,資料的最大值是多少?
標準化後最大值一定是 1 嗎?
不一定是 1,也不一定在 [0,1]。標準化後的值是 Z-score,取決於每個資料點距離均值幾個標準差。如果有資料點的 Z 值是 +2.5,最大值就是 2.5。Z-score 沒有固定的上下界。
Min-Max 正規化對離群值為什麼特別敏感?
說 Min-Max 對離群值敏感,但為什麼?
公式是 (x - min) / (max - min),分母就是「最大值 - 最小值」。如果有一個極端離群值讓 max 變得很大,整個分母就會很大,把所有正常值都壓縮到接近 0 的極小範圍內。一個離群值就能毀掉整組資料的縮放效果。
什麼時候用 Robust Scaling 最合適?
有了 Z-score 和 Min-Max,為什麼還需要 Robust Scaling?
資料有明顯離群值時。Robust Scaling 用中位數(Q2)和四分位距(IQR = Q3 - Q1)來縮放,這兩個指標對離群值不敏感。即使有極端值,中位數和 IQR 幾乎不受影響,縮放結果更穩健。
分箱時,等寬分箱和等頻分箱有什麼差別?
把連續值分成幾個箱子,怎麼決定箱子的範圍?
等寬分箱(Equal-Width Binning):每個箱子的數值範圍一樣寬,例如 [0-100], [100-200]。等頻分箱(Equal-Frequency/Quantile Binning):每個箱子的資料筆數一樣多,依分位數分割。偏態分佈資料用等頻分箱比較合理,避免等寬分箱時某個箱子裡幾乎沒資料。
使用縮放方法時,為什麼要先 fit 訓練集,再 transform 測試集?
測試集可以直接用自己的均值標準差做 Z-score 嗎?
不行,這會造成資料洩漏(Data Leakage)。正確做法是:用訓練集計算均值和標準差(fit),再用這個「訓練集的均值和標準差」來轉換測試集(transform)。這樣模型才是用訓練集的尺度來看測試集,模擬真實部署環境。如果測試集用自己的均值縮放,等於模型看到了測試集的統計特性,是作弊。
想再往下看,這 5 個
- 正規化(Normalization)涵蓋 Min-Max、Z-score、Robust 等各種縮放方法,理解它們的差異是資料前處理的關鍵。
- 特徵縮放(Feature Scaling)縮放特徵是機器學習前處理的必要步驟,影響距離型模型和梯度型模型的收斂速度。
- 獨熱編碼(One-Hot Encoding)無序類別的標準編碼方法,與 Label Encoding 的使用時機是高頻考點。
- 標籤編碼(Label Encoding)有序類別的編碼方法,用在無序類別上會產生虛假順序問題。
- 資料前處理(Data Preprocessing)縮放、編碼、缺值填補都是資料前處理的環節,完整前處理流程是模型成功的基礎。