iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用

資料有極端值時,哪種標準化最適合?

原題 09

在進行數值特徵的標準化(Normalization)時,若資料中存在極端值(Outliers),下列哪一種方法最適合使用?

白話

資料裡有一些跟大多數不一樣的極端值(Outliers,例如大多數人月薪 3-5 萬,但有一筆是 500 萬)。要對這組有極端值的資料做數值縮放,有四種方法可以選。

問你:有極端值的資料要做數值縮放,下列哪一種方法最適合?

點選你的答案。

01 總結

一句話總結

資料有極端值時,用穩健縮放(Robust Scaling)——它用中位數和四分位距(IQR)來縮放,這兩個統計量不受極端值影響,讓縮放結果更穩健。

02 情境

先感受問題:一個富翁毀掉整組薪資縮放

嘉誠科技 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 萬有多大,算法都一樣。

03 對照

Min-Max 和 Z-score 碰到極端值的五個問題

  1. Min-Max 被極端值拉壞比例:公式分母是 max - min,只要有一個超大值,分母就超大,所有正常值都被壓縮到接近 0 的極小範圍。
  2. Z-score 均值被極端值拉偏:均值(mean)對極端值敏感,一個 500 萬把均值從 3.875 拉到 103。標準差也會隨之暴增,讓正常值的 Z 分數都擠在 -0.1 附近。
  3. 模型看不出正常值之間的差異:因為正常值的縮放結果都太接近,模型無法從特徵值區分不同的員工。
  4. 極端值控制了整個尺度:整個縮放空間被極端值「佔據」,正常值的資訊量被稀釋。
  5. 不知道有極端值時難以發現:縮放完的資料看起來「正常」,但分佈已經被破壞,模型訓練結果可能很差卻找不到原因。
04 解法

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)檢查資料分佈再決定
05 陷阱

為什麼其他選項是錯的

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)

字面在說什麼

把連續數值切成等寬的幾個區間,轉成類別特徵。

為什麼不對

分箱是把連續特徵轉成離散類別,改變的是資料的型態(連續→類別),不是在做「標準化/縮放」。題目問的是數值縮放方法,分箱根本不是縮放方法,用途完全不同。

誰會選錯

想說「分箱可以讓極端值跟其他值落在同一個箱子,所以能處理極端值」的人。分箱確實「降低」了極端值的影響,但它改變了特徵的性質,是不同問題的解法,不是縮放方法。

06 變形

同個考點下次怎麼變形

變形 1

Robust Scaling 之後,資料的中位數是多少?

直覺

用中位數和 IQR 縮放後,中位數會等於幾?

答案

縮放後的中位數等於 0。公式是 (X - Q2) / IQR,把中位數本身代入:(Q2 - Q2) / IQR = 0。類似地,Z-score 標準化後的均值等於 0,Robust Scaling 後的中位數等於 0。

變形 2

如何判斷資料是否有需要處理的極端值?

直覺

要選縮放方法之前,怎麼先確認資料有沒有極端值?

答案

常見方法:(1) 箱型圖(Box Plot):箱型圖的「鬍鬚」外的點就是疑似離群值;(2) Z-score 法:|Z| > 3 的點;(3) IQR 法:值小於 Q1 - 1.5×IQR 或大於 Q3 + 1.5×IQR 的點。先做視覺化再選縮放方法。

變形 3

除了縮放,處理極端值還有哪些方法?

直覺

碰到極端值,除了用 Robust Scaling,還能怎麼處理?

答案

四種策略:(1) 刪除:若確認是錯誤資料就刪;(2) 封頂(Capping/Winsorization):把超過門檻的值替換成門檻值(如第 95 百分位);(3) 對數轉換:壓縮右偏分佈,降低極端值相對影響;(4) 保留並用穩健方法:若極端值是真實的(如董事長薪資確實存在),用 Robust Scaling 讓縮放不受影響。

變形 4

什麼時候極端值不應該被移除?

直覺

極端值是不是都應該刪掉或處理掉?

答案

不一定。如果極端值是真實存在且重要的,刪掉會損失資訊。例如:(1) 詐欺偵測:異常交易就是你要找的目標,刪掉等於刪掉答案;(2) 金融風險分析:極端損失事件恰恰是模型需要學習的;(3) 醫療異常:異常檢測值可能是疾病的早期信號。這些場景應該保留並用穩健縮放方法。

變形 5

Robust Scaling 後的資料範圍是多少?

直覺

Z-score 後的範圍大約是 [-3, 3],Robust Scaling 後呢?

答案

沒有固定範圍。Robust Scaling 後,「中間 50% 的資料(Q1 到 Q3)」縮放到 [-0.5, 0.5],中間 80% 縮放範圍取決於分佈形狀。極端值會產生很大的縮放後值(如 ±5、±100),但這不影響正常值的縮放結果。這跟 Z-score 一樣是「無固定範圍」的縮放方法。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用 第 9 題

查看官方原文 PDF