1. 程式人生 > >LSTM時序預測時歸一化問題

LSTM時序預測時歸一化問題

LSTM時序預測時歸一化問題

在做專案時,發現數據歸一化對模型訓練結果影響很大,其中還涉及到很多細節問題。以下通過空氣汙染預測的例子來進行說明。(資料和程式碼網上都有提供)

描述:在空氣汙染預測例子中,共有8個屬性,利用過去24小時的汙染資料和天氣條件預測下一個時刻(t+1)可能的汙染值

問題:

不對資料進行歸一化處理時,loss(mae)將會很大,lstm模型也訓練不好,如下圖所示:

預測出的結果是相等的常量,如下圖所示:,顯然,這不是我想要的結果

解決:

對輸入資料進行歸一化,使用sklearn.preporcessing

scaler = MinMaxScaler(feature_range=(0, 1))
scaled = scaler.fit_transform(values)

原始資料的shape是(n,dim),其中n為樣本數目,dim為維度(屬性個數),對每個維度進行歸一化,使得資料範圍都在(0,1)之間。

在獲取預測結果的時候,需要反歸一化。注意反歸一化時需要與歸一化時的資料shape相同。

最終的預測結果如下圖: