2017-11-11 115 views
0

我想預測利率,並且我有一些相關因素,例如股票指數和貨幣供應量等。因子數可能高達200.用於使用Tensorflow/tflearn預測財務數據的圖層

例如,訓練數據如X包含因子,y是我想要訓練和預測的利率。

 factor1  factor2  factor3   factor176 factor177 factor178 
X= [[ 2.1428  6.1557  5.4101  ..., 5.86  6.0735  6.191 ] 
    [ 2.168  6.1533  5.2315  ..., 5.8185  6.0591  6.189 ] 
    [ 2.125  4.7965  3.9443  ..., 5.7845  5.9873  6.1283]...] 

y= [[ 3.5593] 
    [ 3.014 ] 
    [ 2.7125]...] 

所以我想用tensorflow/tflearn訓練這個模型,但我真的不知道到底我應該選擇做迴歸什麼方法。我曾經從tflearn嘗試過LinearRegression,但結果並不是那麼好。

現在,我只是使用我在網上找到的代碼。

net = tflearn.input_data([None, 178]) 
net = tflearn.fully_connected(net, 64, activation='linear', 
           weight_decay=0.0005) 
net = tflearn.fully_connected(net, 1, activation='linear') 
net = tflearn.regression(net, optimizer= 
tflearn.optimizers.AdaGrad(learning_rate=0.01, initial_accumulator_value=0.01), 
loss='mean_square', learning_rate=0.05) 
model = tflearn.DNN(net, tensorboard_verbose=0, checkpoint_path='tmp/') 
model.fit(X, y, show_metric=True, 
      batch_size=1, n_epoch=100) 

當誤差範圍爲±10%時,結果大致爲50%的準確度。 我試圖讓窗口達到7天,但結果仍然不好。所以我想知道我可以使用哪些額外的層來使這個網絡更好。

回答

0

首先,這個網絡沒有任何意義。如果你的隱藏單元沒有任何激活,你的網絡是相當於線性迴歸

所以首先改變

net = tflearn.fully_connected(net, 64, activation='linear', 
           weight_decay=0.0005) 

net = tflearn.fully_connected(net, 64, activation='relu', 
           weight_decay=0.0005) 

另一個普遍的事情是總是正常化您的數據。你的X很大,Y也很大 - 確保它們不是,例如通過增白(讓它們爲0和1)。

找到正確的架構是一個難題,你不會找到任何「神奇的接受」。從理解你在做什麼開始。記錄你的訓練,看看訓練損失是否收斂到較小的值,如果不是這樣 - 你的訓練時間不夠長,網絡太小,或者訓練超參數是關閉的(比如太大的學習權限,太高的正則化等等)

+0

我當前的版本:[code&dataset](https://www.floydhub.com/asdasdad/projects/a/4/code)我試過relu,但測試數據的結果看起來很奇怪。輸出:[輸出](https://www.floydhub.com/viewer/data/TXCRxgLTngd788FeLA4YQU/) – user6456568

+0

正如答案中所說 - 線性激活是一個**錯誤**,但使事情工作需要真正理解數據和模型;線性的東西是唯一的實際「錯誤」,其他所有事情都是一步一步分析的問題,並查看事情出錯的地方 - 再次 - 看着**培訓**是至關重要的,而不是測試在這一點上 – lejlot

+0

我的意思是如果我將所有'線性'變爲'relu',那麼y的輸出大部分仍然是相同的,我真的很困惑,因爲我使用相同的數據使用線性預測股票指數的準確性是相當不錯的,我不明白爲什麼利率如此不同。 – user6456568