時間序列預測方法匯總

時間序列是我最喜歡研究的一種問題,這裡我列一下時間序列最常用的方法,包括理論和實踐兩部分。理論部分大多是各路神仙原創的高贊解讀,這裡我就簡單成呈現在這裡,並附上鏈接。實踐部分是質量較高的開源代碼,方便大傢快速上手。最後,附上一些kaggle比賽中比較經典的時序比賽的經典解法鏈接,供大傢參考和學習。

時序問題都看成是回歸問題,隻是回歸的方式(線性回歸、樹模型、深度學習等)有一定的區別。

1 傳統時序建模,如arma模型或者arima模型

arima模型是arma模型的升級版;arma模型隻能針對平穩數據進行建模,而arima模型需要先對數據進行差分,差分平穩後在進行建模。這兩個模型能處理的問題還是比較簡單,究其原因主要是以下兩點:

  • arma/arima模型歸根到底還是簡單的線性模型,能表征的問題復雜程度有限;
  • arma全名是自回歸滑動平均模型,它隻能支持對單變量歷史數據的回歸,處理不瞭多變量的情況。

原理篇:

寫給你的金融時間序列分析:基礎篇:重點介紹基本的金融時間序列知識和arma模型

金融時間序列入門【完結篇】 ARCH、GARCH:介紹更為高階的arch和garch模型

實踐篇:

【時間序列分析】ARMA預測GDP的python實現:arma模型快速上手

http://machinelearningmastery.com/develop-arch-and-garch-models-for-time-series-forecasting-in-python/:arch、garch模型快速建模

總結:如果是處理單變量的預測問題,傳統時序模型可以發揮較大的優勢;但是如果問題或者變量過多,那麼傳統時序模型就顯得力不從心瞭。

2 機器學習模型方法,這類方法以lightgbm、xgboost為代表

這類方法一般就是把時序問題轉換為監督學習,通過特征工程和機器學習方法去預測;這種模型可以解決絕大多數的復雜的時序預測模型。支持復雜的數據建模,支持多變量協同回歸,支持非線性問題。

不過這種方法需要較為復雜的人工特征過程部分,特征工程需要一定的專業知識或者豐富的想象力。特征工程能力的高低往往決定瞭機器學習的上限,而機器學習方法隻是盡可能的逼近這個上限。特征建立好之後,就可以直接套用樹模型算法lightgbm/xgboost,這兩個模型是十分常見的快速成模方法,除此之外,他們還有以下特點:

  • 計算速度快,模型精度高;
  • 缺失值不需要處理,比較方便;
  • 支持category變量;
  • 支持特征交叉。

原理篇:

提升樹模型:Lightgbm原理深入探究:lightgbm原理

xgboost的原理沒你想像的那麼難:xgboost原理

實踐篇:

在Python中使用Lightgbm:lightgbm模型實踐

史上最詳細的XGBoost實戰:xgboost模型實踐

總結:通過一系列特征工程後,直接使用機器學習方法,可以解決大多數的復雜時序問題;不過這方法最大的缺點是特征工程可能會較為繁瑣。

3 深度學習模型方法,這類方法以LSTM/GRU、seq2seq、wavenet、1D-CNN、transformer為主

深度學習中的LSTM/GRU模型,就是專門為解決時間序列問題而設計的;但是CNN模型是本來解決圖像問題的,但是經過演變和發展,也可以用來解決時間序列問題。總體來說,深度學習類模型主要有以下特點:

    • 不能包括缺失值,必須要填充缺失值,否則會報錯;
    • 支持特征交叉,如二階交叉,高階交叉等;
    • 需要embedding層處理category變量,可以直接學習到離散特征的語義變量,並表征其相對關系;
    • 數據量小的時候,模型效果不如樹方法;但是數據量巨大的時候,神經網絡會有更好的表現;
    • 神經網絡模型支持在線訓練。

實際上,基於實際預測問題,可以設計出各式各樣的深度學習模型架構。假如我們預測的時序問題(如預測心跳頻率),不僅僅隻和統計類的數據有關,還和文本(如醫師意見)以及圖像(如心電圖)等數據有關 ,我們就可以把MLP、CNN、bert等冗雜在一起,建立更強力的模型。

52b8b29128d243f45232d172f7e1667bhttp://www.kaggle.com/c/avito-demand-prediction/discussion/59880

理論篇:

[幹貨]深入淺出LSTM及其Python代碼實現:LSTM原理

Seq2Seq原理詳解 - 早起的小蟲子 - 博客園: seq2seq原理

Wavenet原理與實現: wavenet原理

CNN卷積神經網絡如何處理一維時間序列數據: 1D-CNN處理時序數據

Transformer for TimeSeries時序預測算法詳解: transformer時序預測

實踐篇:

seq2seq模型的python實現 - 基於seq2seq模型的自然語言處理應用: seq2seq模型實現

http://machinelearningmastery.com/time-series-prediction-lstm-recurrent-neural-networks-python-keras/: LSTM實踐

Conv1d - WaveNet - Forecast Stock price: wavenet模型預測股票價格

http://towardsdatascience.com/how-to-use-transformer-networks-to-build-a-forecasting-model-297f9270e630:transformer時序預測數據

Keras documentation: Timeseries classification with a Transformer model: transformer處理時序數據分類

http://www.kaggle.com/fatmakursun/predict-sales-time-series-with-cnn:CNN預測模型

總結:深度學習模型可以解決基本上所有時序問題,而且模型可以自動學習特征工程,極大減少瞭人工;不過需要較高的模型架構能力。

最後我再附上一些比較經典的數據挖掘比賽鏈接和解決方案,如果能夠理解數據和代碼,必會受益匪淺。如果大傢對某個比賽解決方案十分感興趣,我後續會詳細解讀。

1)網站流量預測:

http://github.com/Arturus/kaggle-web-traffic RNN seq2seq模型

http://github.com/jfpuget/Kaggle/tree/master/WebTrafficPrediction xgboost和MLP模型

http://github.com/oseiskar/simdkalman kalman濾波

http://github.com/sjvasquez/web-traffic-forecasting CNN模型

2)餐廳客戶量預測

5d8e1533511fcb46d554b3f4b9847797

http://www.kaggle.com/plantsgo/solution-public-0-471-private-0-505 特征工程+lgb

http://www.kaggle.com/pureheart/1st-place-lgb-model-public-0-470-private-0-502 特征工程+lgb

3)開放通道預測

4f3ce511e1b402269e004a63928f7629

http://www.kaggle.com/vicensgaitan/2-wavenet-swa wavenet模型

http://www.kaggle.com/kmat2019/u-net-1d-cnn-with-keras 1D-CNN模型

http://www.kaggle.com/brandenkmurray/seq2seq-rnn-with-gru seq2seq模型

4)肺壓力預測

http://www.kaggle.com/cdeotte/tensorflow-transformer-0-112 transformer模型

http://www.kaggle.com/tenffe/finetune-of-tensorflow-bidirectional-lstm 雙向lstm模型

時間序列問題博大精深,應用場景十分廣泛。實際上許多預測問題都可以看做是時間序列問題,比如股票/期貨/外匯價格預測,網站/餐館/旅館/交通流量預測,店鋪商品庫存/銷量預測等等。掌握瞭時間序列預測方法,你可能就掌管一把洞見未來的鑰匙。

我是 @LIGHT,擅長人工智能/數據科學/量化交易,歡迎關註點贊&聯系溝通,相互交流&共同進步!!!

更多相關資料請見下方文章卡片,專註於人工智能/數據科學/量化交易幹貨分享~

发表回复

相关推荐

《坚如磐石》片尾双彩蛋,解释了电影的真实结局!

上一篇文章补齐电影30分钟删减片段后,这部《坚如磐石》不愧是张艺谋导演 压箱底的得意之作!

· 6秒前

醫美越來越火,醫美咨詢師崗位到底怎麼樣?

醫美咨詢師即美容醫學咨詢師,於美容整形機構中從事咨詢工作的、在整形醫生和求美者之間架起溝通橋梁從業者。本研究基於智聯...

· 15秒前

携程基于BookKeeper的延迟消息架构落地实践

一、背景 QMQ延迟消息是以服务形式独立存在的一套不局限于消息厂商实现的解决方案,其架构如下图所示。 QMQ延迟消息服务架构 ...

· 25秒前

怎樣才能長高?

根據《中國居民營養與慢性病狀況報告》中顯示,中國男性(老中輕)平均身高是167.1cm,女性(老中輕)是155.8cm。中國與其他...

· 34秒前

腰椎間盤突出8種鍛煉方法

最近很多患者也會問我,聽說現在有腰間盤突出8種鍛煉方法,麻煩老師告訴我一下,我也方便自己通過鍛煉方法治療,期待病情好轉...

· 44秒前