最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

簡(jiǎn)單講解三種時(shí)間序列預(yù)測(cè)方法

2021-11-22 18:32 作者:深度之眼官方賬號(hào)  | 我要投稿

時(shí)間序列預(yù)測(cè)是根據(jù)歷史數(shù)據(jù)預(yù)測(cè)未來值的任務(wù)??缧袠I(yè)的例子包括天氣、銷售數(shù)字和股票價(jià)格的預(yù)測(cè)。最近,它已被應(yīng)用于預(yù)測(cè)比特幣等加密貨幣的價(jià)格趨勢(shì)。鑒于時(shí)間序列預(yù)測(cè)應(yīng)用在各行各業(yè)的盛行,每個(gè)數(shù)據(jù)科學(xué)家都應(yīng)該對(duì)時(shí)間序列預(yù)測(cè)的可用方法有所了解。


有多種方法可用于時(shí)間序列預(yù)測(cè)。最常用的一種是自回歸移動(dòng)平均 (ARMA),這是一種使用過去值預(yù)測(cè)未來值的統(tǒng)計(jì)模型。然而,這種方法有缺陷,因?yàn)樗鼪]有捕捉季節(jié)性趨勢(shì)。它還假設(shè)時(shí)間序列數(shù)據(jù)是平穩(wěn)的,這意味著其統(tǒng)計(jì)屬性不會(huì)隨時(shí)間變化。這種類型的行為是一種理想化的假設(shè),在實(shí)踐中并不成立,這意味著 ARMA 可能會(huì)提供有偏差的結(jié)果。


ARMA的擴(kuò)展是自回歸綜合移動(dòng)平均(ARIMA)模型,該模型不假設(shè)平穩(wěn)性,但仍假設(shè)數(shù)據(jù)幾乎沒有季節(jié)性。幸運(yùn)的是,Seasonal ARIMA (SARIMA)變體是一種統(tǒng)計(jì)模型,可以處理非平穩(wěn)數(shù)據(jù)并捕獲一些季節(jié)性。


Python 提供了許多易于使用的庫和工具來執(zhí)行時(shí)間序列預(yù)測(cè)。具體來說,Python 中的stats庫提供了只需幾行代碼即可構(gòu)建 ARMA、ARIMA 和 SARIMA 模型的工具。由于所有這些模型都在單個(gè)庫中可用,因此您可以在同一腳本或筆記本中使用不同模型輕松運(yùn)行許多實(shí)驗(yàn)。


接下來我們來學(xué)習(xí)如何構(gòu)建ARMA、ARIMA和SARIMA模型來預(yù)測(cè)比特幣(BTC)未來價(jià)格。



讀取和顯示BTC時(shí)間序列數(shù)據(jù)

使用Pandas數(shù)據(jù)閱讀器讀取BTC的歷史價(jià)格:



打開Python腳本并從 Pandas庫中導(dǎo)入數(shù)據(jù)讀取器:



導(dǎo)入Pandas庫本身并放寬列和行的顯示限制:



導(dǎo)入日期時(shí)間庫,定義數(shù)據(jù)拉取的開始和結(jié)束日期:



現(xiàn)在已經(jīng)做好了提取比特幣價(jià)格時(shí)間序列數(shù)據(jù)所需的一切準(zhǔn)備工作,接下來正式開始。




圖中數(shù)據(jù)框包含許多列,來看看每列的含義:


  • 日期:這是我們時(shí)間序列中的索引,用于指定與價(jià)格相關(guān)的日期。

  • 收盤價(jià):當(dāng)天購買BTC的最后價(jià)格。

  • 開盤價(jià):當(dāng)天購買BTC的第一個(gè)價(jià)格。

  • 高:當(dāng)天購買BTC的最高價(jià)格。

  • 低:當(dāng)天購買BTC的最低價(jià)格。

  • 成交量:當(dāng)天的總交易次數(shù)。

  • Adj Close:根據(jù)股息和股票分割調(diào)整的收盤價(jià)。


我們將在我們的預(yù)測(cè)模型中使用收盤價(jià),具體來說,我們將使用歷史收盤BTC價(jià)格來預(yù)測(cè)未來的BTC價(jià)格。


讓我們將收盤價(jià)BTC數(shù)據(jù)寫入csv文件。這樣,我們就可以避免使用Pandas數(shù)據(jù)讀取器重復(fù)拉取數(shù)據(jù)。



讀入csv文件并顯示前五行:





為了使用stats庫提供的模型,需要將日期列設(shè)置為數(shù)據(jù)框索引,使用 to_datetime方法格式化該日期:



現(xiàn)在日期是索引,我們可以刪除日期列:



顯示數(shù)據(jù)框:




繪制我們的時(shí)間序列數(shù)據(jù),導(dǎo)入數(shù)據(jù)可視化庫Seaborn和Matplotlib:


使用Seaborn來格式化可視化:



并使用Matplotlib標(biāo)記y軸和x軸。將調(diào)整x軸上的日期,以便它們更易于閱讀:



最后,使用Matplotlib生成我們的繪圖:




繼續(xù)構(gòu)建第一個(gè)時(shí)間序列模型,即自回歸移動(dòng)平均線。


為訓(xùn)練和測(cè)試拆分?jǐn)?shù)據(jù)

模型構(gòu)建的一個(gè)重要部分是拆分我們的數(shù)據(jù)以進(jìn)行訓(xùn)練和測(cè)試。拆分用于訓(xùn)練和測(cè)試的數(shù)據(jù)可確保您構(gòu)建的模型可以在訓(xùn)練數(shù)據(jù)之外進(jìn)行泛化,并確保性能和輸出具有統(tǒng)計(jì)意義。


拆分?jǐn)?shù)據(jù),使得2020年11月之前的所有數(shù)據(jù)都作為訓(xùn)練數(shù)據(jù),2020年之后的所有數(shù)據(jù)都成為測(cè)試數(shù)據(jù):





自回歸移動(dòng)平均線 (ARMA)


ARMA 中的術(shù)語“自回歸”意味著該模型使用過去的值來預(yù)測(cè)未來的值。具體來說,預(yù)測(cè)值是過去值的加權(quán)線性組合。這種回歸方法類似于線性回歸,不同的是這里的特征輸入是歷史值。


移動(dòng)平均是指由白噪聲項(xiàng)的加權(quán)線性組合表示的預(yù)測(cè),其中白噪聲是隨機(jī)信號(hào)。這里的想法是ARMA使用過去值和白噪聲的組合來預(yù)測(cè)未來值。自回歸模擬市場(chǎng)參與者的行為,例如買賣 BTC。白噪聲模擬戰(zhàn)爭(zhēng)、經(jīng)濟(jì)衰退和政治事件等沖擊事件。


我們可以使用SARIMAX包定義ARMA模型:



定義輸入:



定義模型,使用SARIMAX類定義ARMA模型,傳入 (1, 0 ,1) 的順序參數(shù):


ARMAmodel = SARIMAX(y, order = (1, 0, 1))


擬合模型:


生成預(yù)測(cè):



繪制結(jié)果:





使用均方根誤差來評(píng)估性能:




RMSE相當(dāng)高,我們可以在檢查圖時(shí)猜到。不幸的是,當(dāng)價(jià)格實(shí)際上漲時(shí),該模型預(yù)測(cè)價(jià)格會(huì)下降。同樣,ARMA的局限性在于它對(duì)非平穩(wěn)時(shí)間序列失敗并且不能捕捉季節(jié)性。讓我們看看我們是否可以使用ARIMA提高性能


自回歸綜合移動(dòng)平均線 (ARIMA)

從stats庫中導(dǎo)入ARIMA包:



ARIMA 任務(wù)具有三個(gè)參數(shù):


第一個(gè)參數(shù)對(duì)應(yīng)于滯后(過去的值);

第二個(gè)對(duì)應(yīng)于差分(這是使非平穩(wěn)數(shù)據(jù)平穩(wěn)的原因);

最后一個(gè)參數(shù)對(duì)應(yīng)于白噪聲(用于模擬沖擊事件)。


用順序參數(shù)(2,2,2)定義一個(gè)ARIMA模型:




圖中看到ARIMA預(yù)測(cè)(黃色)落在ARMA預(yù)測(cè)之上,接下來嘗試將差分參數(shù)增加到ARIMA(2,3,2):



感覺這有助于捕捉價(jià)格上漲的方向,接著嘗試使用 ARIMA(5,4,2) 進(jìn)一步調(diào)整參數(shù):



RMSE為793,比ARMA好。


最后,測(cè)試加入季節(jié)性的SARIMA是否會(huì)進(jìn)一步提高性能。


Seasonal ARIMA (SARIMA)


Seasonal ARIMA捕捉歷史價(jià)值、沖擊事件和季節(jié)性。我們可以使用SARIMAX類定義一個(gè)SARIMA模型:




這里我們的RMSE為966,比ARIMA稍差。這可能是由于缺乏超參數(shù)調(diào)整。如果我們使用SARIMA模型的參數(shù),我們應(yīng)該能夠進(jìn)一步提高性能。


如果又大神可以使用超參數(shù),看看是否可以構(gòu)建一個(gè)性能優(yōu)于ARIMA的SARIMA模型。此外,也可以使用網(wǎng)格搜索等方法通過算法找到每個(gè)模型的最佳參數(shù)。


本文代碼:


https://github.com/spierre91/builtiin/blob/main/time_series_forecasting.py


總結(jié)


時(shí)間序列預(yù)測(cè)是許多數(shù)據(jù)科學(xué)團(tuán)隊(duì)面臨的跨行業(yè)常見任務(wù)。充分了解可用的常用工具和方法將使數(shù)據(jù)科學(xué)家能夠快速運(yùn)行新實(shí)驗(yàn)并生成結(jié)果。了解每個(gè)模型中參數(shù)的重要性,例如滯后參數(shù)、差分、白噪聲和季節(jié)性,可以為構(gòu)建簡(jiǎn)單的時(shí)間序列模型奠定基礎(chǔ)。這也為理解一些可用的更高級(jí)技術(shù)奠定了良好的基礎(chǔ)。


能夠準(zhǔn)確可靠地預(yù)測(cè)未來事件是一項(xiàng)寶貴的技能,在加密貨幣和傳統(tǒng)金融市場(chǎng)之外也有應(yīng)用。但是始終記得,對(duì)于任何數(shù)據(jù)科學(xué)家來說,無論他們從事什么行業(yè),熟悉基礎(chǔ)知識(shí)都是有用的。


如果你想要學(xué)習(xí)時(shí)間序列方面的相關(guān)知識(shí),需要積累時(shí)間序列方面的項(xiàng)目經(jīng)驗(yàn),可以學(xué)習(xí)下圖中的項(xiàng)目課程。


原文鏈接:

https://pub.towardsai.net/time-series-forecasting-in-python-4e7d65580b9

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。



簡(jiǎn)單講解三種時(shí)間序列預(yù)測(cè)方法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
洪泽县| 兴业县| 忻州市| 丽江市| 曲阳县| 岳西县| 霍城县| 双辽市| 乌苏市| 永丰县| 滦平县| 商城县| 荔波县| 呼图壁县| 清河县| 余干县| 松江区| 济南市| 溧水县| 平武县| 凉山| 永宁县| 彭阳县| 弥渡县| 大竹县| 忻城县| 木里| 宿州市| 汝州市| 汪清县| 长乐市| 许昌市| 桐城市| 南召县| 石渠县| 武义县| 林州市| 山西省| 思南县| 苏尼特右旗| 蛟河市|