最小最大值縮放 是什麼?
Min-Max Scaling:最小最大值縮放 的完整解釋
將資料線性轉換到指定區間(通常為 [0, 1])的特徵縮放方法,透過減去最小值再除以值域來實現。
最小最大值縮放(Min-Max Scaling)是機器學習前處理流程中最基礎且廣泛使用的特徵縮放技術之一。其核心操作是線性變換,將原始資料的數值範圍壓縮或拉伸至一個固定的目標區間,通常是 [0, 1],也可以根據需求調整為 [-1, 1] 或其他區間。
標準的 Min-Max Scaling 公式為:x_scaled = (x - x_min) / (x_max - x_min)。其中 x_min 和 x_max 分別是訓練集中該特徵的最小值與最大值。轉換後,原始最小值映射到 0,原始最大值映射到 1,其他值依比例線性分佈在 [0, 1] 之間。若要映射到 [a, b] 區間,公式調整為:x_scaled = a + (x - x_min) / (x_max - x_min) × (b - a)。
在機器學習中,特徵縮放之所以重要,是因為許多演算法對特徵的數值尺度(scale)敏感。例如,在計算歐式距離的 K 近鄰演算法(KNN)中,若一個特徵的值域是 [0, 10000](如房價),另一個特徵的值域是 [0, 5](如房間數),前者因數值較大而在距離計算中佔據支配地位,導致後者幾乎沒有影響力,無論後者在區分相似度上有多大貢獻。Min-Max Scaling 將所有特徵統一到相同的尺度,確保每個特徵在距離計算或梯度更新中有公平的貢獻機會。
對梯度下降法而言,特徵縮放有助於損失函式的等高線從橢圓形(不同特徵尺度導致的不對稱)趨近圓形,使梯度方向更接近最優解的方向,加速收斂並減少震盪。這對於使用梯度下降的神經網路、邏輯回歸、支援向量機(SVM)等模型都有明顯幫助。
相較於另一種常見的縮放方法 Z-score 標準化(Standardization,公式為 (x - μ) / σ,結果均值為 0,標準差為 1),Min-Max Scaling 的主要特點是:結果的範圍明確且有界([0, 1]),適合需要明確輸入範圍的場景,例如神經網路中 Sigmoid 激活函式的輸入,或需要像素值歸一化到 [0, 1] 的影像資料。然而,Min-Max Scaling 對異常值(Outlier)極為敏感:若資料中存在一個極端大值,x_max 會被拉高,導致大部分正常資料被壓縮到 [0, 1] 區間的極小範圍內,嚴重影響模型效果。
為了應對異常值的問題,實務上有幾種改良策略。第一種是在套用 Min-Max Scaling 之前先做異常值處理(截斷、剔除或蓋帽法 Winsorization)。第二種是使用 Robust Scaler,以四分位距(IQR)代替值域進行縮放,對異常值更不敏感。第三種是對資料先取對數變換(Log Transform)拉縮長尾分佈,再做 Min-Max Scaling。
實作上有一個重要的細節需要注意:Min-Max Scaling 的 x_min 與 x_max 必須從訓練資料中計算,並固定儲存起來,在對驗證集、測試集或線上資料做預測時,必須使用同一組 x_min 與 x_max 進行轉換,而不是重新計算。若對測試集重新計算縮放參數,會導致資料洩漏(Data Leakage),使模型評估結果虛高,且線上推論時無法提前知道測試資料的範圍。在 scikit-learn 中,MinMaxScaler 物件的 fit() 方法記錄訓練集的 min/max,transform() 方法則使用記錄的值進行轉換,正確的做法是只對訓練集呼叫 fit_transform(),對其他資料集只呼叫 transform()。
IPAS 中級考試中,Min-Max Scaling 的考點通常包括:與 Z-score 標準化的比較(各自的適用情境與異常值敏感性差異)、縮放公式的計算、在 Pipeline 中正確放置縮放器(避免資料洩漏)、以及哪些演算法需要特徵縮放(距離型與梯度下降型需要;樹狀模型通常不需要)。