常见时序算法集合【资源整理】
常見時序算法集合
- 學習資料1:十大時序算法模型
- 十大時序算法模型
- 學習資料2:Kats
- 時間序列王器-Kats
- 1. Kats的優勢
- 2. Kats的功能
- 學習資料3:NeuralProphet
- NeuralProphet
- 1. Prophet
- 2. NeuralProphet
- 3. NeuralProphet VS Prophet
- 學習資料4:Prophet
- Prophet 簡介
- Prophet 適用場景
- Prophet 算法的輸入輸出
- Prophet 算法原理
- 與機器學習算法的對比
- 代碼
- 參考資料
- 官方鏈接:
- 案例鏈接:
學習資料1:十大時序算法模型
【kaggle競賽寶典】關于時間競賽,不得不知的十大模型
十大時序算法模型
- Na?ve, SNa?ve
- Seasonal decomposition (+ any model)
- Exponential smoothing
- ARIMA, SARIMA
- GARCH
- Dynamic linear models
- TBATS
- Prophet
- NNETAR
- LSTM
學習資料2:Kats
【Kaggle競賽寶典】FaceBook開源全網第一個時序王器–Kats
時間序列王器-Kats
FaceBook開源了Kats,它是第一個開發標準并連接時間序列分析各個領域的綜合Python庫,用戶可以在這里探索其時間序列數據的基本特征,預測未來值,監視異常,并將其合并到ML模型和pipeline中。
在上個月,FaceBook開園了一款新的分析時間序列數據的library–Kats,Kats是一款:
- 輕量級的、易于使用的、通用的時間序列分析框架;
包括
- 預測、異常檢測、多元分析和特征提取/嵌入。
據我們所知,Kats是第一個用于一般時間序列分析的綜合Python庫,它提供了經典和高級的時間序列數據建模技術。
1. Kats的優勢
Kats是一個分析時間序列數據的工具箱,特點是:
- 輕量級;
- 易于使用;
- 通用;
- 可以用來執行時間序列分析。
2. Kats的功能
Kats的核心四大功能包括:
- 模型預測:Kats提供了一套完整的預測工具,包括10+個單獨的預測模型、ensembling、自監督學習(meta-learning)模型、backtesting、超參數調整和經驗預測區間。
- 檢測:Kats支持檢測時間序列數據的各種模式的功能,包括季節性、異常值、變化點和緩慢的趨勢變化檢測。
- 特征提取與嵌入:Kats中的時間序列特征(TSFeature)提取模塊可以產生65個具有明確統計定義的特征,這些特征可以應用于大多數機器學習(ML)模型,如分類和回歸。
- 使用的功能:Kats還提供了一組有用的實用程序,例如時間序列模擬器。
學習資料3:NeuralProphet
【Kaggle競賽寶典】郁悶了,這個時序工具包也太強了吧…
NeuralProphet
介紹一個最新的NeuralProphet時,從名字就可以看出,這個是神經網絡和Prophet的結合,與傳統的黑盒NN不同,本文我們就介紹的NeuralProphet模型集成了Prophet的所有優點,不僅具有不錯的可解釋性,還有優于Prophet的預測性能。
1. Prophet
Prophet如果認為是基本自回歸的擴展(除了使用lagged的目標值,還對輸入變量使用傅立葉變換,這使得我們可以通過調模型拿到更好的結果)。
- Prophet可以使用額外的信息,不僅僅是target的延遲值;
- 模型能融入節假日信息;
- 可以自動檢測趨勢的變化;
2. NeuralProphet
和許多黑盒子的NN不同,NeuralProphet保留了Prophet的所有優勢,同時,通過引入改進的后端(Pytorch代替Stan)和使用自回歸網絡(AR網絡),將神經網絡的可擴展性與AR模型的可解釋性結合起來,提高其準確性和可擴展性。
- AR網絡——它是一個單層網絡,經過訓練可以模擬時間序列信號中的AR過程,但規模比傳統模型大得多。
3. NeuralProphet VS Prophet
- NeuralProphet使用PyTorch的梯度下降進行優化,使得建模速度更快;
- 利用自回歸網絡對時間序列自相關進行建模;
- 滯后回歸器使用單獨的前饋神經網絡建模;
- NeuralProphet具有可配置的前饋神經網絡的非線性深層;
- 模型可調整到特定的預測范圍(大于1);
- 提供自定義的損失函數和度量策略;
項目地址:https://aistudio.baidu.com/aistudio/projectdetail/525311?channelType=0&channel=0
參考資料:
[時間序列模型Prophet使用詳細講解]https://blog.csdn.net/anshuai_aw1/article/details/83412058
[初識Prophet模型(一)-- 理論篇]https://www.jianshu.com/p/218757bee516
學習資料4:Prophet
Prophet 簡介
Prophet是Facebook開源的時間序列預測算法,可以有效處理節假日信息,并按周、月、年對時間序列數據的變化趨勢進行擬合。根據官網介紹,Prophet對具有強烈周期性特征的歷史數據擬合效果很好,不僅可以處理時間序列存在一些異常值的情況,也可以處理部分缺失值的情形。算法提供了基于Python和R的兩種實現方式。
從論文上的描述來看,這個 prophet 算法是基于時間序列分解和機器學習的擬合來做的,其中在擬合模型的時候使用了 pyStan 這個開源工具,因此能夠在較快的時間內得到需要預測的結果。
Prophet 適用場景
Prophet適用于具有明顯的內在規律的商業行為數據,例如:有如下特征的業務問題:
- a.有至少幾個月(最好是一年)的每小時、每天或每周觀察的歷史數據;
- b.有多種人類規模級別的較強的季節性趨勢:每周的一些天和每年的一些時間;
- c.有事先知道的以不定期的間隔發生的重要節假日(比如國慶節);
- d.缺失的歷史數據或較大的異常數據的數量在合理范圍內;
- e.有歷史趨勢的變化(比如因為產品發布);
- f.對于數據中蘊含的非線性增長的趨勢都有一個自然極限或飽和狀態。
Prophet 算法的輸入輸出
上圖為一個時間序列場景:
-
黑色表示原始的時間序列離散點
-
深藍色的線表示使用時間序列來擬合所得到的取值
-
淺藍色的線表示時間序列的一個置信區間,也就是所謂的合理的上界和下界
-
prophet 所做的事情就是:
-
輸入已知的時間序列的時間戳和相應的值;
-
輸入需要預測的時間序列的長度;
-
輸出未來的時間序列走勢。
-
輸出結果可以提供必要的統計指標,包括擬合曲線,上界和下界等。
-
傳入prophet的數據分為兩列 ds 和 y ,ds表示時間序列的時間戳,y表示時間序列的取值
其中:
-
ds是pandas的日期格式,樣式類似與YYYY-MM-DD for a date or YYYY-MM-DD HH:MM:SS;
-
y列必須是數值型,代表著我們希望預測的值。
通過 prophet 的計算,可以計算出:
-
yhat,表示時間序列的預測值
-
yhat_lower,表示預測值的下界
-
yhat_upper,表示預測值的上界
Prophet 算法原理
算法模型:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-s22S4zN9-1630376859594)(https://cdn.nlark.com/yuque/0/2021/svg/2524844/1628747209413-9cdd789a-881a-4a4b-accc-50d53a4f8023.svg#align=left&display=inline&height=29&margin=%5Bobject%20Object%5D&originHeight=29&originWidth=270&size=0&status=done&style=none&width=270)]
模型整體由三部分組成:
- growth(增長趨勢)
- seasonality(季節趨勢)
- holidays(節假日對預測值的影響)
其中:
- g(t) 表示趨勢項,它表示時間序列在非周期上面的變化趨勢;
- s(t) 表示周期項,或者稱為季節項,一般來說是以周或者年為單位;
- h(t) 表示節假日項,表示時間序列中那些潛在的具有非固定周期的節假日對預測值造成的影響;
- [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-M3b3hqbX-1630376859597)(https://cdn.nlark.com/yuque/0/2021/svg/2524844/1628747209537-96ef69c6-6a2b-404b-9cef-a005c251b560.svg#align=left&display=inline&height=18&margin=%5Bobject%20Object%5D&originHeight=18&originWidth=16&size=0&status=done&style=none&width=16)]即誤差項或者稱為剩余項,表示模型未預測到的波動, [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-HDoLVdnY-1630376859600)(https://cdn.nlark.com/yuque/0/2021/svg/2524844/1628747209406-fb4a3f02-2c9e-4d43-b6d1-f8ba8e570db4.svg#align=left&display=inline&height=18&margin=%5Bobject%20Object%5D&originHeight=18&originWidth=16&size=0&status=done&style=none&width=16)]服從高斯分布;
Prophet 算法就是通過擬合這幾項,然后最后把它們累加起來就得到了時間序列的預測值。
與機器學習算法的對比
與先進的機器學習算法如LGBM相比,Prophet作為一個時間序列的工具,優點就是不需要特征工程就可以得到趨勢,季節因素和節假日因素,但是這同時也是它的缺點之一,它無法利用更多的信息,如在預測商品的銷量時,無法利用商品的信息,門店的信息,促銷的信息等。
因此,尋找一種融合的方法是一個迫切的需求。
代碼
測試數據集
# 讀入數據集 df = pd.read_csv('data/example_wp_log_peyton_manning.csv') print(df.head()) # 擬合模型 m = Prophet() m.fit(df)# 構建待預測日期數據框,periods = 365 代表除歷史數據的日期外再往后推 365 天 future = m.make_future_dataframe(periods=365) future.tail() # 預測數據集 forecast = m.predict(future) forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail() # 展示預測結果 m.plot(forecast) # 預測的成分分析繪圖,展示預測中的趨勢、周效應和年度效應 m.plot_components(forecast) plt.show()參考資料
- 時間序列模型Prophet使用詳細講解
- Prophet官網
- github項目
- 論文:Forecasting at scale
- Facebook 時間序列預測算法 Prophet 的研究
官方鏈接:
-
論文:《Forecasting at scale》,https://peerj.com/preprints/3190/
-
github:https://github.com/facebook/prophet
-
官網:https://facebook.github.io/prophet/
案例鏈接:
-
預測股價并進行多策略交易:https://mp.weixin.qq.com/s/bf_CHcoZMjqP6Is4ebD58g
-
預測Medium每天發表的文章數:https://mp.weixin.qq.com/s/1wujYYDP_P2uerZzZBaspg
-
預測網站流量:https://pbpython.com/prophet-overview.html
-
預測空氣質量:https://mp.weixin.qq.com/s/S-NNG7BmviitBmMBJRJSRQ
-
預測客運量:https://www.analyticsvidhya.com/blog/2018/05/generate-accurate-forecasts-facebook-prophet-python-r/
-
疫情預測分析:https://mp.weixin.qq.com/s/fZpsy1bQ3Olhng1P5p5WAg
-
原理講解:https://mp.weixin.qq.com/s/675ASxDSVH_8BX6W8WRRqg
-
知乎專欄:https://zhuanlan.zhihu.com/p/52330017
-
股票價格預測:https://mp.weixin.qq.com/s/78xpmsbC2N1oZ3UIMm29hg
總結
以上是生活随笔為你收集整理的常见时序算法集合【资源整理】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021大前端技术储备
- 下一篇: 【嵌入式开发教程6】手把手教你做平板电脑