2.2 數值資料正規化與標準化
神經網路通常對數值尺度敏感。如果某個特徵落在 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 訓練集
所有需要估計統計量的前處理,都應該只在訓練集 fit 或 adapt,再套用到 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 開始。