日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时间序列预测方法汇总:从理论到实践(附Kaggle经典比赛方案)

發布時間:2024/10/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间序列预测方法汇总:从理论到实践(附Kaggle经典比赛方案) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


?作者 | Light

學校 | 中國科學院大學

研究方向 | 機器學習

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

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

傳統時序建模

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

  • arma/arima 模型歸根到底還是簡單的線性模型,能表征的問題復雜程度有限;

  • arma 全名是自回歸滑動平均模型,它只能支持對單變量歷史數據的回歸,處理不了多變量的情況。

原理篇:

寫給你的金融時間序列分析:基礎篇

重點介紹基本的金融時間序列知識和 arma 模型

https://zhuanlan.zhihu.com/p/38320827

金融時間序列入門【完結篇】 ARCH、GARCH

介紹更為高階的 arch 和 garch 模型

https://zhuanlan.zhihu.com/p/21962996

實踐篇:

【時間序列分析】ARMA預測GDP的 python實現

arma 模型快速上手

https://zhuanlan.zhihu.com/p/54799648

machinelearningmastery.com

arch、garch模型快速建模

https://machinelearningmastery.com/develop-arch-and-garch-models-for-time-series-forecasting-in-python/

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

機器學習模型方法

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

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

  • 計算速度快,模型精度高;

  • 缺失值不需要處理,比較方便;

  • 支持 category 變量;

  • 支持特征交叉。

原理篇:

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

lightgbm 原理

https://blog.csdn.net/anshuai_aw1/article/details/83659932

xgboost 的原理沒你想像的那么難

xgboost 原理

https://www.jianshu.com/p/7467e616f227

實踐篇:

在 Python 中使用 Lightgbm

lightgbm 模型實踐

https://zhuanlan.zhihu.com/p/52583923

史上最詳細的 XGBoost 實戰

xgboost 模型實踐

https://zhuanlan.zhihu.com/p/31182879

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

深度學習模型方法

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

  • 不能包括缺失值,必須要填充缺失值,否則會報錯;

  • 支持特征交叉,如二階交叉,高階交叉等;

  • 需要 embedding 層處理 category 變量,可以直接學習到離散特征的語義變量,并表征其相對關系;

  • 數據量小的時候,模型效果不如樹方法;但是數據量巨大的時候,神經網絡會有更好的表現;

  • 神經網絡模型支持在線訓練。

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

▲ 圖源:https://www.kaggle.com/c/avito-demand-prediction/discussion/59880

理論篇:

[干貨] 深入淺出 LSTM 及其 Python 代碼實現

LSTM 原理

https://zhuanlan.zhihu.com/p/104475016

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

seq2seq 原理

https://www.cnblogs.com/liuxiaochong/p/14399416.html

Wavenet 原理與實現

wavenet 原理

https://zhuanlan.zhihu.com/p/28849767

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

1D-CNN 處理時序數據

https://www.ai8py.com/cnn-in-keras-for-time-sequences.html

Transformer for TimeSeries 時序預測算法詳解

transformer 時序預測

https://zhuanlan.zhihu.com/p/391337035

實踐篇:

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

seq2seq 模型實現

https://dataxujing.github.io/seq2seqlearn/chapter3/

machinelearningmastery.com

LSTM 實踐

https://machinelearningmastery.com/time-series-prediction-lstm-recurrent-neural-networks-pyth

Conv1d-WaveNet-Forecast Stock price

wavenet 模型預測股票價格

https://www.kaggle.com/bhavinmoriya/conv1d-wavenet-forecast-stock-price

towardsdatascience.com/

transformer 時序預測數據

https://towardsdatascience.com/how-to-use-transformer-networks-to-build-a-forecasting-model-297f9270e630

Keras documentation:?

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

https://keras.io/examples/timeseries/timeseries_transformer_classification/

kaggle.com/fatmakursun/

CNN 預測模型

https://www.kaggle.com/fatmakursun/predict-sales-time-series-with-cnn

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

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

1)網站流量預測:

RNN seq2seq 模型:

https://github.com/Arturus/kaggle-web-traffic

xgboost 和 MLP 模型:

https://github.com/jfpuget/Kaggle/tree/master/WebTrafficPrediction

kalman 濾波:

https://github.com/oseiskar/simdkalman

CNN 模型:

https://github.com/sjvasquez/web-traffic-forecasting

2)餐廳客戶量預測

特征工程+lgb:

https://www.kaggle.com/plantsgo/solution-public-0-471-private-0-505

特征工程+lgb:

https://www.kaggle.com/pureheart/1st-place-lgb-model-public-0-470-private-0-502

3)開放通道預測

wavenet 模型:

https://www.kaggle.com/vicensgaitan/2-wavenet-swa

1D-CNN 模型:

https://www.kaggle.com/kmat2019/u-net-1d-cnn-with-keras

seq2seq 模型:

https://www.kaggle.com/brandenkmurray/seq2seq-rnn-with-gru

4)肺壓力預測

transformer 模型:

https://www.kaggle.com/cdeotte/tensorflow-transformer-0-112

雙向 lstm 模型:

https://www.kaggle.com/tenffe/finetune-of-tensorflow-bidirectional-lstm

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

更多閱讀

#投 稿?通 道#

?讓你的文字被更多人看到?

如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析科研心得競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。

📝?稿件基本要求:

? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?

? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題

? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算

📬?投稿通道:

? 投稿郵箱:hr@paperweekly.site?

? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者

? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿

△長按添加PaperWeekly小編

🔍

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

·

總結

以上是生活随笔為你收集整理的时间序列预测方法汇总:从理论到实践(附Kaggle经典比赛方案)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。