Time Series Prediction
目錄
問題
在這次的作業中,我們會被給予第一部份的序列 .
目標是設計一個循環神經網路(Recurrent Neural Network, RNN)來預測第二部分的序列
而第二部分的序列將由老師自行測試,這部分的數據不會空開。
方法
以下方法將供你們參考
你可以用任何RNN的模型(Simple RNN, LSTM, GRU)來做預測,請注意,其他種類的類神經網路將不被允許。
在時間 , 訓練後的RNN可以使用過去一連串的時間向量M步來預測出 ,舉例,
當是一個向量 包含了N個連續資料點
為了可以有好的預測準確率,你可以隨意地去測定M和N的值
使用老師的隱藏測試資料時,為了避免過度擬合,同學們最好在訓練中使用cross validatioin。
解決
使用keras來建立RNN的模型,使用老師給予的數據訓練,並探討Simple RNN LSTM、GLU的使用與輸入資料長短(n_steps)的調整
繼HW1的jupyter notebook、HW2的Colab,這次使用PyCharm來見建構RNN
import 我們需要的Library
sequence為我們待會要餵進RNN的資料,n_steps為我們預計要多少長度為一個單位
sequence = [1,2,3,4,5,6], n_steps = 3
output 為 [1,2,3] = 4, [2,3,4] = 5, [3,4,5] = 6
讀取我們要的資料(我預先將老師的資料存進txt)
load data
設定長度
Model_build: 本次作業,所以驅動函數(activation function) 都使用relu function,因為sigmoid function本身特性(0~1)與實際測試效果均不佳(會使預設值收斂),所以後面幾種Model都是使用ReLu Function
Predict
save as txt
結果
基本上我都是透過try and error來測試出好的n_steps(輸入model的資料長度) 一開始都是由50開始切入,然後看預測出來的圖形往上或往下做調整
一開始會先使用epoch = 100來抓同一model中不同n_steps的大致效果
然後跟其他n_steps來做比較,最後取出比較好的n_steps做epoch = 2000的訓練
就目前有的訓練模型,從n_steps=10 ~ 200的測試結果,epoch=100或200的效果測試,到最後
特定n_steps和epochs=2000的訓練後。Bidirectional LSTM可以有比較好的預測
Bidirectional GRU Model
With Bidirectional = True
這個model可以看出來n_step=50 和 60 效果都不好
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
所以最後我拿n_steps=30 做大量epochs的訓練
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
GRU Model
With Bidirectional = False
這個model可以看出來n_step=40 和 50 效果都不好

所以最後我拿n_steps=20 做大量epochs的訓練

Bidirectional LSTM Model
With Bidirectional = True
這個model可以看出來 不管n_steps為多少效果都很好

所以最後我拿n_steps=50 做大量epochs的訓練,最後也是上傳這個model預測的值

LSTM Model
With Bidirectional = False
這個model可以看出來n_step=95 的效果不好
n_step = 87 的效果已經還不錯,但是相較於n_step=50還是可惜一些

所以最後我拿n_steps=50 做大量epochs的訓練

Bidirectional Simple RNN Model
With Bidirectional = True
這個model可以看出來n_step=80 和 90 效果都不好

所以最後我拿n_steps=50 做大量epochs的訓練,但是效果有限

Simple RNN Model
With Bidirectional = False
這個model可以看出來n_step=50 的效果不好
而n_step=80 和 n_step=95 的效果 也不是很完美

所以最後我拿n_steps=87 做大量epochs的訓練
