iT邦幫忙

2021 iThome 鐵人賽

DAY 30
0
AI & Data

從零開始的套牢生活 - AI股票預測系統系列 第 30

[Day 30] Bug修好了 & 30天感想

經過了一天的奮鬥,總算是把昨天做爆的LSTM修好了,
失敗的可能原因可能為

  • 資料未經過Normalization
  • 訓練週期過短
  • 預測時間過長
  • 2020年由於疫情股價過於異常

前兩項算是程式上的Bug,
「2020股價」處理也很簡單,要嘛整段拿掉,要嘛把整個訓練段拉長即可,
「預測時間過長」的原因比較有趣,讓我們來看看原作者做出來的結果
https://ithelp.ithome.com.tw/upload/images/20211005/20141586GilgV61uUU.png

而這是我用台積電(2330)套用作者程式碼做出來的結果
https://ithelp.ithome.com.tw/upload/images/20211005/20141586WiPiP0RWtW.png

可以看出來預測的結果都不錯,起碼該有的轉折都有學到,然而當我繼續做下去後的結果變成這樣
https://ithelp.ithome.com.tw/upload/images/20211005/20141586dud5d7iCPl.png

看起來很棒對吧,別著急,這是Train的部分,讓我們來用它來預測未來
https://ithelp.ithome.com.tw/upload/images/20211005/20141586Bl5vRWv8nf.png

馬上就變成不知道在預測甚麼鬼東西的情況

經過了長時間的排查我終於發現問題了,這是作者的Train-Test分法

number_train = round(0.9 * result.shape[0]) # 取 result 的前90% instance做為訓練資料

而這部分是我的

train_df = df[(df.index > "2014-01-01") & (df.index < "2018-12-31")]
test_df = df[(df.index > "2019-01-01") & (df.index < "2020-12-31")]

沒錯,兩者的差距只是預測未來的區間大小,
通常3個月後的股票價格就會很飄了,之後的部分就和瞎猜差不多了。

結尾

經過了說長不長說短不短的一個月,我也勉強算是脫離股票小白了吧?
原本以為區區股票預測應該很簡單吧,畢竟求學路上也聽過很多人靠程式預測股票發財的,
但現在看來應該大部分都是在唬爛(笑
股價預測對現今ML和DL發展來說還是太早了,
如果是選股可能會好點,畢竟基本面和股價的關係應該會比較明顯
但現在30天也結束了,也許明年的鐵人可以試看看?

前面30天我也做爆了不少天數,現在我知道為什麼那麼多人喜歡寫基礎教學文了,
畢竟沒有程式跑不出來的風險(笑
然而我的觀念是要做就要學到東西,無關對錯,只是我想試新東西罷了
之後還有10天的時間我應該會把之前做爆的部分改成其他東西,
太亂的部分也會做整理,當然以上是建立在IT邦不會把編輯鎖起來的狀況,
畢竟我是第一次參賽,如果真的鎖起來的話就...再說吧(笑


上一篇
[Day 29] 試驗看看Regression方法
系列文
從零開始的套牢生活 - AI股票預測系統30

1 則留言

0
馬達
iT邦新手 4 級 ‧ 2021-10-06 09:29:37

恭喜完賽啦~~

我要留言

立即登入留言