一、時間序列基本規則法-週期因子法html
- 提取時間序列的週期性特徵進行預測,參考:時間序列規則法快速入門
- 計算週期因子factors
- 計算base
- 預測=base*factors
- 觀察序列,當序列存在週期性時,能夠用週期因子法作爲baseline
二、線性迴歸-利用時間特徵作線性迴歸python
- 提取時間的週期性特色作爲特徵,此時訓練集每條樣本爲"時間特徵->目標值",時間序列的依賴關係被剔除,不須要嚴格依賴滑窗截取訓練樣本。常見是將時間用0-1啞變量表達,有如下若干種特徵:
- 將星期轉化爲了0-1變量,從週一至周天,獨熱編碼共7個變量
- 將節假日轉化爲0-1變量,視具體節假日數目,可簡單分爲兩類,"有假日"-"無假日",獨熱編碼共2個變量;或賦予不一樣編碼值,如區分國慶、春節、勞動節等使用一、二、3表示
- 將月初轉化爲0-1變量,簡單分兩類表示爲"是月初"-"非月初",共2個特徵
- 相似的月中、月初能夠轉化爲0-1變量
- 控制時間粒度,區分是weekday or weekend
- 觀察序列,當序列存在週期性時,線性迴歸也可作爲baseline
三、傳統時序建模方法,ARMA/ARIMA等線性模型。參考:git
四、時間序列分解,使用加法模型或乘法模型將原始序列拆分爲4部分。github
五、特徵工程着手,時間滑窗改變數據的組織方式,使用xgboost/LSTM模型/時間卷積網絡等。參考:算法
六、轉化爲監督學習數據集,使用xgboot/LSTM模型/時間卷積網絡/seq2seq(attention_based_model)。參考:api
七、Facebook-prophet,相似於STL分解思路,由於以爲在控制程度和可解釋性上比傳統時序模型更有優點,因此單獨列車。參考:網絡
- 官網說明(英文)
- 官網notbook(英文)
- 中文推薦
的文章,從原理到使用都有介紹,很良心。張戎:Facebook 時間序列預測算法 Prophet 的研究
- 我的理解,想進一步用好,能夠好好看看論文和官網,有空擼遍python的源碼
- 理解prior_scale在代碼中如何實現控制趨勢項、季節項和節假日項
- 對於趨勢項參數changepoint_range、changepoint_prior_scale如何影響模型擬合和泛化程度
- 趨勢項中的Uncertainty-Intervals(interval_width參數)如何在預測結果使用
- 論文中的"Simulated Historical Forecasts"對應prophet的Diagnostics工具,能夠利用該工具作時間序列的交叉驗證評價模型準確程度,如何利用該工具調整模型
八、深度學習網絡,結合CNN+RNN+Attention,做用各不相同互相配合。目前也只是看了論文,有代碼的順便給出代碼連接,代碼還沒細看。工具
主要設計思想:post
- CNN捕捉短時間局部依賴關係
- RNN捕捉長期宏觀依賴關係
- Attention爲重要時間段或變量加權
- AR捕捉數據尺度變化(沒太搞懂啥意思~)
方法:學習
代碼
做者:BINGO Hong連接:https://zhuanlan.zhihu.com/p/67832773