資料有極端值時,哪種標準化最適合?
在進行數值特徵的標準化(Normalization)時,若資料中存在極端值(Outliers),下列哪一種方法最適合使用?
資料裡有一些跟大多數不一樣的極端值(Outliers,例如大多數人月薪 3-5 萬,但有一筆是 500 萬)。要對這組有極端值的資料做數值縮放,有四種方法可以選。
問你:有極端值的資料要做數值縮放,下列哪一種方法最適合?
一句話總結
資料有極端值時,用穩健縮放(Robust Scaling)——它用中位數和四分位距(IQR)來縮放,這兩個統計量不受極端值影響,讓縮放結果更穩健。
先感受問題:一個富翁毀掉整組薪資縮放
嘉誠科技 HR 部門有一份員工薪資資料(月薪,萬元):
董事長:500(這就是極端值)
如果用 Min-Max Scaling(把所有值壓縮到 [0,1]):
阿美:(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)的公式:
其中: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)
把連續數值切成等寬的幾個區間,轉成類別特徵。
分箱是把連續特徵轉成離散類別,改變的是資料的型態(連續→類別),不是在做「標準化/縮放」。題目問的是數值縮放方法,分箱根本不是縮放方法,用途完全不同。
想說「分箱可以讓極端值跟其他值落在同一個箱子,所以能處理極端值」的人。分箱確實「降低」了極端值的影響,但它改變了特徵的性質,是不同問題的解法,不是縮放方法。
同個考點下次怎麼變形
Robust Scaling 之後,資料的中位數是多少?
用中位數和 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) 醫療異常:異常檢測值可能是疾病的早期信號。這些場景應該保留並用穩健縮放方法。
Robust Scaling 後的資料範圍是多少?
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 的對比,理解均值對離群值的敏感性。