<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          時間序列預(yù)測方法及代碼總結(jié)!

          共 6518字,需瀏覽 14分鐘

           ·

          2023-10-14 23:52

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



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


          一、傳統(tǒng)時序建模


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

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


          原理篇:

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

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

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

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

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

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

          實踐篇:

          【時間序列分析】ARMA預(yù)測GDP的 python實現(xiàn)

          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/


          總結(jié):如果是處理單變量的預(yù)測問題,傳統(tǒng)時序模型可以發(fā)揮較大的優(yōu)勢;但是如果問題或者變量過多,那么傳統(tǒng)時序模型就顯得力不從心了。

          二、機(jī)器學(xué)習(xí)模型方法


          這類方法以 lightgbm、xgboost 為代表,一般就是把時序問題轉(zhuǎn)換為監(jiān)督學(xué)習(xí),通過特征工程和機(jī)器學(xué)習(xí)方法去預(yù)測;這種模型可以解決絕大多數(shù)的復(fù)雜的時序預(yù)測模型。支持復(fù)雜的數(shù)據(jù)建模,支持多變量協(xié)同回歸,支持非線性問題。

          不過這種方法需要較為復(fù)雜的人工特征過程部分,特征工程需要一定的專業(yè)知識或者豐富的想象力。特征工程能力的高低往往決定了機(jī)器學(xué)習(xí)的上限,而機(jī)器學(xué)習(xí)方法只是盡可能的逼近這個上限。特征建立好之后,就可以直接套用樹模型算法 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

          史上最詳細(xì)的 XGBoost 實戰(zhàn)

          xgboost 模型實踐

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

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


          三、深度學(xué)習(xí)模型方法


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

          • 不能包括缺失值,必須要填充缺失值,否則會報錯;
          • 支持特征交叉,如二階交叉,高階交叉等;
          • 需要 embedding 層處理 category 變量,可以直接學(xué)習(xí)到離散特征的語義變量,并表征其相對關(guān)系;
          • 數(shù)據(jù)量小的時候,模型效果不如樹方法;但是數(shù)據(jù)量巨大的時候,神經(jīng)網(wǎng)絡(luò)會有更好的表現(xiàn);
          • 神經(jīng)網(wǎng)絡(luò)模型支持在線訓(xùn)練。

          實際上,基于實際預(yù)測問題,可以設(shè)計出各式各樣的深度學(xué)習(xí)模型架構(gòu)。假如我們預(yù)測的時序問題(如預(yù)測心跳頻率),不僅僅只和統(tǒng)計類的數(shù)據(jù)有關(guān),還和文本(如醫(yī)師意見)以及圖像(如心電圖)等數(shù)據(jù)有關(guān) ,我們就可以把 MLP、CNN、bert 等冗雜在一起,建立更強(qiáng)力的模型。


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


          理論篇:

          【算法綜述】時序預(yù)測的深度學(xué)習(xí)算法介紹

          【RNN原理及實戰(zhàn)】一文詳解RNN及股票預(yù)測實戰(zhàn)(Python)!

          [干貨] 深入淺出 LSTM 及其 Python 代碼實現(xiàn)

          LSTM 原理

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

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

          seq2seq 原理

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

          Wavenet 原理與實現(xiàn)

          wavenet 原理

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

          CNN 卷積神經(jīng)網(wǎng)絡(luò)如何處理一維時間序列數(shù)據(jù)

          1D-CNN 處理時序數(shù)據(jù)

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

          Transformer for TimeSeries 時序預(yù)測算法詳解

          transformer 時序預(yù)測

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

          實踐篇:

          seq2seq 模型的 python 實現(xiàn)-基于 seq2seq 模型的自然語言處理應(yīng)

          seq2seq 模型實現(xiàn)

          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 模型預(yù)測股票價格

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

          towardsdatascience.com/

          transformer 時序預(yù)測數(shù)據(jù)

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


          Keras documentation

          Timeseries classification with a Transformer model:transformer 處理時序數(shù)據(jù)分類

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

          kaggle.com/fatmakursun/

          CNN 預(yù)測模型

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

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

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

          1)網(wǎng)站流量預(yù)測:



          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)餐廳客戶量預(yù)測



          特征工程+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)開放通道預(yù)測



          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)肺壓力預(yù)測



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

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

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

          更多精彩內(nèi)容請點擊:AI領(lǐng)域文章精選!

          瀏覽 1755
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷亚洲一 | 天堂九九 | 色老板在线观看永久 | 老汉AV在线 | 91久久爱 |