穩健縮放 是什麼?

Robust Scaling:穩健縮放 的完整解釋

使用中位數與四分位距進行特徵縮放的預處理方法,對離群值不敏感,適合含極端值的資料集。

穩健縮放(Robust Scaling)是機器學習資料預處理流程中的一種特徵縮放技術,設計動機源於傳統縮放方法(如 Min-Max 縮放和 Z-score 標準化)對離群值(outliers)高度敏感的問題。理解穩健縮放,需先認識它所解決的問題以及它背後的統計基礎。

傳統的 Min-Max 縮放將特徵值線性映射到 [0, 1] 區間,但最小值與最大值都可能是極端離群點,導致絕大多數正常值被壓縮到一個很窄的子區間內,損失了大量資訊差異。Z-score 標準化(零均值、單位方差)以平均數與標準差為基準,但平均數和標準差都是對離群值非常敏感的統計量:一個距離均值 10 個標準差的離群點會使整個特徵的平均數偏移、標準差膨脹,進而讓所有正常樣本的縮放結果都受到影響。

穩健縮放採用的統計量對離群值具有本質抵抗力:中位數(median)是排序後位於正中央的值,不受極端值大小影響;四分位距(IQR = 第 75 百分位數 - 第 25 百分位數)描述中段 50% 資料的散布程度,對極端值同樣不敏感。穩健縮放的公式為:縮放後的值 = (原始值 - 中位數) / IQR。透過這個公式,中位數對應的值縮放後為 0,第 25 百分位數縮放後為 -0.5,第 75 百分位數縮放後為 0.5,而離群值雖然不會被消除,但它們縮放後的數值也不會對其他正常樣本的縮放結果產生影響。

從統計穩健性(robustness)的角度看,穩健縮放對應的是高分解點(breakdown point)。平均數的分解點為 0,意思是只要有一個觀測值趨向無窮大,平均數就會失效;中位數的分解點為 0.5,意思是即使有接近 50% 的資料是離群值,中位數仍能正確反映資料的中心趨勢。這正是「穩健(robust)」一詞的統計含義。

在 scikit-learn 中,穩健縮放透過 RobustScaler 類別實現。預設情況下它使用第 25 到 75 百分位數(即 IQR),但使用者可以透過 quantile_range 參數調整分位數範圍,例如設為 (10, 90) 以獲得更寬的參考範圍。與其他縮放器相同,RobustScaler 遵循 fit-transform 模式:在訓練集上 fit(計算中位數與 IQR),再用相同的參數 transform 測試集,確保資料洩漏(data leakage)不會發生。

穩健縮放適用的場景主要有三類。第一是金融與經濟資料,交易量、股價波動率等指標常有極端異常值(如市場崩潰日的交易量是平日的數十倍);第二是醫療健康資料,部分生理指標(如血壓、血糖)在特定患者中可能出現極端測量值;第三是感測器資料,感測器故障或干擾可能引入短暫的極大值,穩健縮放能防止這些雜訊主導特徵尺度。相對地,若資料已確認無異常值、或離群值本身具有重要的分類意義(如詐欺偵測中的異常交易),則不一定需要穩健縮放。

在 iPAS AI 應用規劃師中級考試中,穩健縮放出現在資料預處理與特徵工程相關題目。114-2-mid-2 的兩道題目同時考查了穩健縮放與其他縮放方法的比較,考生需要能在給定資料描述(如「資料含有許多離群值」)的情境下,選出最適合的縮放策略,並說明中位數與 IQR 作為縮放基準的統計意義。了解穩健縮放與標準化(StandardScaler)、歸一化(MinMaxScaler)、最大絕對值縮放(MaxAbsScaler)的差異與適用條件,是這類題目的核心考點。 強健縮放(Robust Scaling)是一種針對含有異常值(Outliers)的資料集設計的特徵縮放方法,使用資料的中位數(Median)和四分位距(IQR, Interquartile Range)代替均值和標準差進行標準化,從而降低極端值對縮放結果的影響。

標準縮放(StandardScaler)使用均值和標準差,當資料含有異常值時,這兩個統計量會被嚴重拉偏,導致大部分「正常」資料被壓縮到很窄的範圍,而異常值依然突出。Robust Scaling 的公式為:(x - median) / IQR,其中 IQR = Q3(第75百分位)- Q1(第25百分位),這兩個統計量對異常值不敏感,因為它們基於排序統計量而非算術運算。

在實際資料中,異常值極為普遍。房價資料中偶有豪宅價格;收入資料中有少數超高收入者;感測器資料中有偶發的讀值異常。若不處理,這些異常值會嚴重影響基於歐氏距離的算法(如 K-means、KNN)和線性模型(如線性迴歸、SVM),因為這些算法的損失函數對大數值很敏感。

Robust Scaling 的局限性在於縮放後的資料範圍不固定(不像 Min-Max Scaling 必然落在 [0,1]),不適合神經網路(通常需要較固定的輸入範圍)或需要有界輸入的算法。此外,它保留了資料的相對順序,但不會將資料映射到特定範圍。

Scikit-learn 的 RobustScaler 實作提供了 quantile_range 參數,允許用戶調整用於縮放的百分位範圍(預設 25-75,可調整為更寬的 10-90 以處理更多異常值)。在管道(Pipeline)設計中,RobustScaler 應在訓練集上 fit 後,再 transform 測試集,避免資料洩露。

常見問題