資料有極端值時,哪種標準化最適合?
原題
在進行數值特徵的標準化(Normalization)時,若資料中存在極端值(Outliers),下列哪一種方法最適合使用?
白話
資料裡有一些跟大多數不一樣的極端值(Outliers,例如大多數人月薪 3-5 萬,但有一筆是 500 萬)。要對這組有極端值的資料做數值縮放,有四種方法可以選。
問你:有極端值的資料要做數值縮放,下列哪一種方法最適合?
先自己選一個答案,再看完整解析。
一句話總結
資料有極端值時,用穩健縮放(Robust Scaling):它用中位數和四分位距(IQR)來縮放,這兩個統計量不受極端值影響,讓縮放結果更穩健。
情境
先感受問題:一個富翁毀掉整組薪資縮放
嘉誠科技 HR 部門有一份員工薪資資料(月薪,萬元):
阿明:3.5、阿美:4.2、阿強:3.8、阿薇:4.0
董事長:500(這就是極端值)
如果用 Min-Max Scaling(把所有值壓縮到 [0,1]):
阿明:(3.5 - 3.5) / (500 - 3.5) ≈ 0.000
阿美:(4.2 - 3.5) / (500 - 3.5) ≈ 0.001
董事長:(500 - 3.5) / (500 - 3.5) = 1.000
四個普通員工的縮放值都擠在 [0, 0.002] 這個極小的範圍內!一個極端值把所有人都「壓扁了」。
Robust Scaling 不受這個影響,因為它用的是中位數,而中位數不管 500 萬有多大,算法都一樣。
舊方法
Min-Max 和 Z-score 碰到極端值的五個問題
- Min-Max 被極端值拉壞比例:公式分母是 max - min,只要有一個超大值,分母就超大,所有正常值都被壓縮到接近 0 的極小範圍。
- Z-score 均值被極端值拉偏:均值(mean)對極端值敏感,一個 500 萬把均值從 3.875 拉到 103。標準差也會隨之暴增,讓正常值的 Z 分數都擠在 -0.1 附近。
- 模型看不出正常值之間的差異:因為正常值的縮放結果都太接近,模型無法從特徵值區分不同的員工。
- 極端值控制了整個尺度:整個縮放空間被極端值「佔據」,正常值的資訊量被稀釋。
- 不知道有極端值時難以發現:縮放完的資料看起來「正常」,但分佈已經被破壞,模型訓練結果可能很差卻找不到原因。
新方法
Robust Scaling 用中位數和 IQR,不理會極端值
穩健縮放(Robust Scaling)的公式:
X' = (X - Q2) / IQR
其中:Q2 = 中位數,IQR = Q3 - Q1(四分位距)
回到薪資例子(不含董事長計算中位數/IQR):
- Q1(第 25 百分位)≈ 3.65 萬、Q3(第 75 百分位)≈ 4.1 萬
- IQR = 4.1 - 3.65 = 0.45 萬
- Q2(中位數)≈ 3.9 萬
縮放後:
- 阿明:(3.5 - 3.9) / 0.45 ≈ -0.89
- 阿美:(4.2 - 3.9) / 0.45 ≈ 0.67
- 董事長:(500 - 3.9) / 0.45 ≈ 1102(很大,但不會壓壞其他人)
普通員工的縮放值分散在 [-1, 1] 附近,正常值之間的差異被保留了。
這就是選項 C 講的:穩健縮放(Robust Scaling)。
為什麼 Robust Scaling 對極端值不敏感?
中位數(Q2)和 IQR 都是「順序統計量(Order Statistics)」,它們的值只取決於資料的排列順序,不受數值大小影響。500 和 4.5 的「排名」都是最後一名,不管值是多少,中位數和 IQR 的計算結果一樣。
相比之下,均值和標準差是「矩統計量」,每個值都計算在內,極端值的影響直接乘進去。
from sklearn.preprocessing import RobustScaler, StandardScaler, MinMaxScaler import numpy as np X = np.array([[3.5], [4.2], [3.8], [4.0], [500]]) # 最後一個是極端值 # Robust Scaling rb = RobustScaler().fit_transform(X) # [[-0.89], [0.67], [-0.22], [0.22], [1102.0]] # 普通值在 [-1, 1] 附近,極端值很大但不影響其他人 # Min-Max mm = MinMaxScaler().fit_transform(X) # [[0.0], [0.001], [0.001], [0.001], [1.0]] # 普通值全擠在 [0, 0.001],資訊損失嚴重 # Z-score zs = StandardScaler().fit_transform(X) # [[-0.44], [-0.43], [-0.44], [-0.43], [1.74]] # 普通值都在 -0.44 附近,區分不了
選擇指引:
- 無離群值:Min-Max(需要 [0,1] 範圍)或 Z-score(統計假設)
- 有離群值:Robust Scaling
- 不確定:先做 EDA(explore data analysis)檢查資料分佈再決定
錯選項
為什麼其他選項是錯的
AMin-Max 正規化(Min-Max Scaling)
字面在說什麼
把所有值線性縮放到 [0, 1] 範圍內。
為什麼不對
Min-Max 公式是 (X - min) / (max - min),分母是最大值和最小值的差。有極端值時,max 會非常大,分母暴增,把所有正常值都壓縮到接近 0 的極小範圍。這是極端值敏感性最高的縮放方法,不適合有離群值的資料。
誰會選錯
記得「Min-Max 是最常用的縮放方法」就選它的人。Min-Max 適合無離群值且需要固定範圍的場景(如圖像像素),不適合有離群值的資料。
BZ-score 標準化(Z-score Normalization)
字面在說什麼
把資料轉成均值 0、標準差 1 的標準分佈。
為什麼不對
Z-score 用均值和標準差,這兩個統計量都對極端值敏感。一個極端值會把均值往極端方向拉,同時讓標準差暴增,結果所有正常值的 Z 分數都擠在一個很小的範圍內。Z-score 比 Min-Max 稍好,但仍不如 Robust Scaling 對離群值穩健。
誰會選錯
記得「Z-score 對離群值比 Min-Max 更穩健」的人。這話沒錯,Z-score 確實比 Min-Max 好一些,但在三個方法中,Robust Scaling 才是「最適合」有極端值的場景。
D標準分箱(Standard Binning)
字面在說什麼
把連續數值切成等寬的幾個區間,轉成類別特徵。
為什麼不對
分箱是把連續特徵轉成離散類別,改變的是資料的型態(連續→類別),不是在做「標準化/縮放」。題目問的是數值縮放方法,分箱根本不是縮放方法,用途完全不同。
誰會選錯
想說「分箱可以讓極端值跟其他值落在同一個箱子,所以能處理極端值」的人。分箱確實「降低」了極端值的影響,但它改變了特徵的性質,是不同問題的解法,不是縮放方法。
變形題
同個考點下次怎麼變形
用中位數和 IQR 縮放後,中位數會等於幾?
答案
縮放後的中位數等於 0。公式是 (X - Q2) / IQR,把中位數本身代入:(Q2 - Q2) / IQR = 0。類似地,Z-score 標準化後的均值等於 0,Robust Scaling 後的中位數等於 0。
要選縮放方法之前,怎麼先確認資料有沒有極端值?
答案
常見方法:(1) 箱型圖(Box Plot):箱型圖的「鬍鬚」外的點就是疑似離群值;(2) Z-score 法:|Z| > 3 的點;(3) IQR 法:值小於 Q1 - 1.5×IQR 或大於 Q3 + 1.5×IQR 的點。先做視覺化再選縮放方法。
碰到極端值,除了用 Robust Scaling,還能怎麼處理?
答案
四種策略:(1) 刪除:若確認是錯誤資料就刪;(2) 封頂(Capping/Winsorization):把超過門檻的值替換成門檻值(如第 95 百分位);(3) 對數轉換:壓縮右偏分佈,降低極端值相對影響;(4) 保留並用穩健方法:若極端值是真實的(如董事長薪資確實存在),用 Robust Scaling 讓縮放不受影響。
極端值是不是都應該刪掉或處理掉?
答案
不一定。如果極端值是真實存在且重要的,刪掉會損失資訊。例如:(1) 詐欺偵測:異常交易就是你要找的目標,刪掉等於刪掉答案;(2) 金融風險分析:極端損失事件恰恰是模型需要學習的;(3) 醫療異常:異常檢測值可能是疾病的早期信號。這些場景應該保留並用穩健縮放方法。
Z-score 後的範圍大約是 [-3, 3],Robust Scaling 後呢?
答案
沒有固定範圍。Robust Scaling 後,「中間 50% 的資料(Q1 到 Q3)」縮放到 [-0.5, 0.5],中間 80% 縮放範圍取決於分佈形狀。極端值會產生很大的縮放後值(如 ±5、±100),但這不影響正常值的縮放結果。這跟 Z-score 一樣是「無固定範圍」的縮放方法。
延伸
想再往下看,這 5 個
- 正規化(Normalization)
核心考點,涵蓋 Min-Max、Z-score、Robust 等縮放方法,理解各自的適用場景。 - 特徵縮放(Feature Scaling)
縮放特徵的完整概念,包含為什麼需要縮放、什麼模型受縮放影響最大。 - 異常偵測(Anomaly Detection)
極端值(Outliers)與異常偵測密切相關,某些極端值本身就是模型要找的異常事件。 - 資料前處理(Data Preprocessing)
縮放方法的選擇是資料前處理的重要決策,影響後續所有模型的表現。 - Z-score(Z 分數)
Z-score 標準化與 Robust Scaling 的對比,理解均值對離群值的敏感性。