跳轉到

2.2 數值資料正規化與標準化

範例程式:Open In Colab

神經網路通常對數值尺度敏感。如果某個特徵落在 0 到 1,另一個特徵落在 0 到 100000,模型訓練會比較不穩。本篇比較 min-max normalization、standardization 與 Keras Normalization layer,讓表格資料進入 DNN 前先有一致的尺度處理流程。

1. 學習目標

這篇說明數值資料進模型前為什麼需要調整尺度。尺度處理能讓 optimizer 更容易找到穩定更新方向,也能避免大尺度欄位主導模型學習。

2. Normalization 與 Standardization 的差異

方法 公式概念 常見範圍 適合情境
Min-max normalization 壓到固定範圍 0 到 1 有明確上下界的特徵
Standardization 減平均、除標準差 平均約 0、標準差約 1 多數表格數值特徵
Keras Normalization layer 在模型內保存平均與變異 平均約 0、標準差約 1 想把前處理包進模型

3. 前處理只能 fit 訓練集

所有需要估計統計量的前處理,都應該只在訓練集 fitadapt,再套用到 validation/test,避免資料洩漏。

4. 實作流程

Notebook 會建立一份尺度差異很大的二元分類表格資料,欄位包含類似 temperature、pressure、ratio 的數值特徵。接著比較原始資料、MinMaxScaler、StandardScaler 與 Keras Normalization layer 的輸出,並把 Normalization 直接放進模型訓練。

5. 如何套用自己的資料?

若使用 sklearn,常見流程是 scaler.fit(x_train) 後再 transform validation/test 或未來新資料。若使用 Keras preprocessing layer,則使用 normalizer.adapt(x_train),再把 normalizer 放進模型。重點不是選哪一個 API,而是統計量只能來自訓練集。

6. 小結

數值尺度處理是 DNN 表格資料任務的基本步驟。多數情況可先從 standardization 或 Keras Normalization layer 開始。