Evonne 研究室

大數據分析 – LSTM 預測比特幣價格曲線(上)

*此專案為政大資科-大數據分析課程之紀錄

專案目標

計畫將以具時間序列比特幣價格曲線的大數據資料集透過機器學習或深度學習演算法來進行時間序列價格曲線的分群,分類,與迴歸的三種分析來完成分析所需的模型建置、學習和優化。

運用一般機器學習或深度學習的分析流程核心技術如資料集前處理、特徵值之辨識、萃取、轉換與選取來探索和分析比特幣在集中市場美金 7 日報價時間區段間的每小時價格曲線趨勢圖。

資料集介紹

  • Cryptodatadownload 比特幣每小時價格
  • GoldAPI.io 每日黃金、白銀價格
  • Glassnode 抓取每日marketcap、hash rate、active addresses、sopr
  • Yahoo Finance 的 股市資料,S&P500、VIX(恐慌指數)、NASDAQ
  • 使用爬蟲獲取關於比特幣相關的新聞
新聞網站 代碼 獨立的Client Class
自由時報 LTN LTNNewsClient
Yahoo新聞 Yahoo YahooNewsClient
鉅亨網報 cnYES cnYESNewsClient
經濟日報 MoneyUdn MoneyUdnNewsClient
Bitcoin.com Bitcoin.com BitCoinNewsClient

實驗過程與方法

第一階段目標

將時間序列價格曲線樣本的資料集進行比特幣 7 日/168小時價格曲線趨勢圖:

樂觀、相對樂觀、持平、 相對悲觀、悲觀的 5 大分類預測。

● 資料前處理

透過幣安API所獲得的比特幣資料中,發現資料面上有不完整、缺漏以及同時段資料重複之問題。

故導致抓取出的7天範圍內有著不滿168個交易點的現象,故我們有先針對不滿足168交易點的週期作過濾動作。

圖:將不滿足168個交易點為單位的週期過濾處理
圖: 做完前處理後,以7天168hr為單位呈現每條比特幣價格曲線

● 分群框架選擇 tslearn

由於資料有時間序列特性,故選用可以處理的python套件- tslearn 裡面的TimeSeriesKmens Function 來作分群,而其中以使用K-means 演算法來做群集上的分類。

在參數設定中,我們發現TimeSeriesKMeans Function 分別有Euclidean、DTW、soft-DTW 這三種類型可作參考,於是針對該三中分別進行了實驗。

下圖為三個距離計算方式的分群結果

圖: Euclidean、DTW、soft-DTW 的分群結果

從分群結果中,Euclidean的趨勢起伏並無太大的變化,且以幾何距離衡量,Euclidean是1對1的關係較不能有效的表現兩個時間點的時間序列距離。

而DTW與Soft-DTW則通過warping 的方式,把時間序列進行伸縮來計算相似度,因此會有一對多、多對一。

不過在Soft-DTW是沒有考慮預測的時延,故最後我們選擇DTW作為我們的價格分群依據。

圖: Euclidean與DTW的對齊示意圖

另外,我們亦針對時間序的曲線做 normalization、smooth優化,讓在分群的結果中有較清楚且可解釋性的依據判別。

並且以斜率走勢(抓取線段起頭與結尾作斜率計算)作為五大類別的參考特徵。

圖: 五個群集之分類
此為上篇內容,繼續閱讀下半部「大數據分析 – LSTM預測比特幣價格曲線(下)」