iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0
Google Developers Machine Learning

AI可以分析股票嗎?系列 第 23

暴力中繼總匯站-修bug之路之結果重發

零、引言

這篇是修正前面幾篇的結果並統整

說認真,當初看到這三篇的結果時,真的打擊han大耶,這真的跟我想得不一樣,看完結果後本來沒有想要繼續第四篇的Orz

好險好奇心旺盛的我,今天挑戰我原本第四天要實測的內容過程中,發現了一個超級天大無敵白癡的bug,讓我與各位分享分享這個bug吧XD

一、誰摔死了我的預測結果

事情是這樣的,當初我在建立dataset的時候,有遇到這個問題

RuntimeWarning: divide by zero encountered in double_scalars
RuntimeWarning: invalid value encountered in multiply

當初我很重視這個問題,因為我很明確知道這個絕對會影響到我的結果,所以爬了一下文,並「的確有修復這個問題」

很好啊? 所以怎麼了?

重點來了,因為是在np計算中出現的,我為了這個而特別使用np.where函數來幫助運算,但龜毛如我,認為如果在np.array裡面有處理好的話我就可以不用耗這個計算了呀!

  • 於是我上網爬文,看到某留言說np.array在遇到這樣的情況下會幫你直接輸出成0

我信了這說法
我信了這說法
我信了這說法

所以看到這裡,各位知道我遇到什麼問題了嗎?

作者你也太不專業了吧~

其實我還有特別去查過,keras在訓練時,如果遇到nan也就是一般divide by 0的值時,是無法有loss數值的,但我的LSTM可以正常訓練,所以我才放心地讓它去 (真的去了...

那你怎麼發現的啦?

我今天在準備我的「暴力系列」最終章時,因為會用到比較特殊的網路處理資料,所以在處理過程中,該網路就是出現lossnan,此時我才確定了問題點...而且後來想想LSTMloss永遠都是以1來傳遞,所以一定會有loss (哀~誰能想到Orz
話就說到此,我們來看看真實的結果吧!

二、結果

第一篇 : 暴力LSTM模型實測

  • 樣本總數
    • 1500
  • 訓練樣本
    • 300
  • LOSS
測試樣本 結果
500
750
1000
1500

第二篇 : 暴力輸入資料實測

  • 總樣本數
    • 1901
  • 訓練樣本
    • 1500
  • LOSS
  • 選擇epoch
    • 50
測試樣本 結果
1800
1750
1700
1650
1600
1550

第三篇 : 暴力拔掉do_nothing類別

  • 樣本總數
    • 1901
  • 訓練樣本
    • 1500
  • LOSS
測試樣本 結果
1800
1750
1700
1650
1600
1550

三、結果討論

挖屋~看起來正經多了 !! (拜託我都快哭了

以下我大概統整了一下我認為的優缺點 :

篇章 目的 優點 缺點
第一篇 期望預測下一次交易價格 儘管輸出並不理想,但可以發現它的確在小的training dataset下有學習能力。 訓練超級久,網路過大,有很多空間可以簡化
第二篇 希望可以預測action 較符合我們需求:低點買進高點賣出 只有預測下一次的可能性,波段過小沒效益
第三篇 希望可以提早佈局地預測action 對於強烈震幅會有很好的預測 沒有實用度,除了波段過小,同時對於持續上或持續下都無法有好的預測

上方是我的小小統計,這也是我所預期的 (嗚嗚嗚...
從「第二篇」和「第三篇」的缺點下手,這也是我在上一篇所說,我們期望能夠預測「趨勢」。 整理就先到這邊吧! 程式碼都在那三篇的底部XD 無聊可以玩玩。 暴力系列剩下最後一篇,能不能明天更呢? 我也不知道XD


上一篇
暴力拔掉do_nothing類別-期待的我被侮辱了 <補>
下一篇
暴力股票action預測-什麼叫做暴力美學 ?
系列文
AI可以分析股票嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言