【說在前面】本人博客新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![認真看圖][認真看圖]
【補充說明】時間序列分析主要有兩個方向,一個通過是對歷史數據的分析進行異常檢測和分類,二是進行預測!
【補充說明】回歸分析假設每個數據點都是獨立的,而時間序列分析則是利用數據之間的相關性進行預測!
【多說一句】本文主要對時間序列分析中預測類問題下的建模方案進行探討,其他內容之后再分享!
一、基於統計學模型
1. 基本概念
一個時間序列可能存在的特征包括以下幾種:
- 趨勢:時間序列在長時間內呈現出來的長期上升或下降的變動
- 季節性:時間序列在一年內出現的周期性波動,例如銷售淡季和銷售旺季等
- 序列相關性:又稱為自相關性。即時間序列中數據點之間存在正相關或者負相關
- 隨機噪聲:時間序列中除去趨勢、季節變化和自相關性之后的剩余隨機擾動。
時間序列中預測類問題的目標是利用統計建模來識別時間序列中潛在的趨勢、季節變化和序列相關性。
而衡量一個模型是否適合原始時間序列的標准正是考察原始值和擬合值之間的殘差序列是否近似的為白噪聲。
因此,首先要進行時間序列的自相關性分析,確定訓練數據是符合時間序列要求:
- 用時滯圖觀察:時滯圖是把時間序列的值及相同序列在時間軸上后延的值放在一起展示。
- Ljung-Box檢驗:是一種對平穩性檢驗的方法,判斷一個序列是白噪聲還是序列存在相關性。
時間序列建模的過程可以總結如下:
2. 平穩性檢驗
如果想要對時間序列進行統計學模型分析,需要保證時間序列具有平穩性。
在數學上,時間序列的嚴平穩有着更精確的定義:它要求時間序列中任意給定長度的兩段子序列都滿足相同的聯合分布。這是一個很強的條件,在實際中幾乎不可能被滿足。因此還有弱平穩的定義,它要求時間序列滿足均值平穩性和二階平穩性(方差平穩性)。
檢驗平穩性的方法有很多種:
(1)圖示法
根據時序圖粗略判斷是否平穩:平穩時序圖的特征為圍繞均值波動,而非平穩時序圖表現為在不同時間段具有不同的均值。
即可以從兩個特征進行判斷:趨勢(即均值隨時間變化)、季節性(即方差隨時間變化、自協方差隨時間變化)。
如圖所示,圖a為平穩時序圖,圖b為非平穩時序圖。
(2)單位根檢測法
例如DF檢驗、ADF檢驗、KPSS、P-P等,具體不展開介紹。
3. 平穩化處理
- 變換:例如取對數、取平方等
- 平滑處理:例如移動平均等
- 差分
- 分解
- 多項式擬合:例如擬合回歸等
4. 統計學模型:自回歸模型 AR
數學上,滿足如下關系的時間序列 被稱為一個
階的自回歸模型,記為
模型:
階的意思是使用當前時刻
之前的
個觀測值作為自變量對
建模。模型的含義是,
可以表達為
時刻之前的
個收益率觀測值的線性組合以及一個
時刻的隨機誤差
。
的取值可以是任何一個正整數,因此最簡單的自回歸模型就是
模型(
)。
需要說明的是,自回歸模型不一定都滿足平穩性。
5. 統計學模型:滑動平均模型 MA
數學上,滿足如下關系的時間序列 被稱為一個
階的滑動平均模型,記為
模型:
與自回歸模型不同,滑動平均模型一定滿足平穩性。
6. 統計學模型:自回歸滑動平均模型 ARMA
ARMA模型是針對平穩時間序列建立的模型。將一個 階的自回歸模型和一個
階的滑動平均模型組合在一起,將 AR 和 MA 模型的優勢互補起來。由於 AR 和 MA 模型都是線性模型,因此它倆的線性組合,即 ARMA 模型,也是線性模型。
數學上,滿足如下關系的時間序列 被稱為一個階數為
的自回歸滑動平均模型,記為
模型:
相比較單一的 AR 或者 MA 模型,ARMA 模型擁有更多的參數,出現過擬合的危險就更高。因此,在確定 AR、MA 以及 ARMA 模型的階數時,常使用信息量准則,包括赤池信息量准則(簡稱 AIC)以及貝葉斯信息量准則(簡稱 BIC)。這兩個信息量准則的目的都是尋找可以最好地解釋數據但包含最少自由參數的模型,均使用模型的似然函數、參數個數以及觀測點個數來構建一個標量函數,以此作為評價模型好壞的標准,區別在於標量函數的表達式有所不同。
7. 統計學模型:差分整合移動平均自回歸模型 ARIMA
ARIMA (p,d,q)模型是針對非平穩時間序列建模,在ARMA模型的基礎上多了差分項(即前文提到的平穩化處理)。其中AR是“自回歸”,p為自回歸項數,MA為“滑動平均”,q為滑動平均項數,d為使之成為平穩序列所做的差分次數。其中,對於p,d,q的選擇是通過ACF(自相關函數,描述了時間序列數據與其之后版本的相關性)與PACF(偏自相關函數,描述了各個序列的相關性)來確定的。
8. 統計學模型:季節性差分自回歸滑動平均模型 SARIMA
在 ARIMA 模型的基礎上進行了季節性調節。不同的是SARIMA的差分項有兩個,分別是季節性差分與非季節性差分。
9. 模型檢驗:殘差檢驗
如果一個模型和原時間序列的殘差滿足白噪聲,那么該模型就是合適的。因此,只需要檢驗殘差序列是否在任何間隔 k 上呈現出統計意義上顯著的自相關性。在這方面,Ljung–Box 檢驗是一個很好的方法,它同時檢驗殘差序列各間隔的自相關系數是否顯著的不為 0。
最后,分享大佬總結的一些內容:時間序列分析常用統計模型
- 單變量時間序列統計學模型:例如平均方法、平滑方法、有/無季節性條件的 ARIMA 模型等
- 多變量時間序列統計學模型:例如外生回歸變量、VAR等
- 附加或組件模型:例如Facebook Prophet、ETS等
- 結構化時間序列模型:例如貝葉斯結構化時間序列模型、分層時間序列模型等
二、基於機器學習模型
時間序列預測類問題被抽象為回歸問題,從而可以使用機器學習的相關模型,不需要受到基本假設的限制,適用范圍更廣。
具體方法包括但不限於線性回歸、支持向量機、隨機森林、xgboost等。
關於機器學習/數據挖掘的全流程介紹,歡迎瀏覽我的另一篇博客:數據挖掘比賽/項目全流程介紹,這里不再贅述。
值得一提的是,機器學習在特征工程階段,可以提取時間截面特征/統計特征/滑窗特征等,也可以借助特征提取工具(例如tsfresh等)。
三、基於深度學習模型
具體方法包括但不限於卷積神經網絡CNN、循環神經網絡LSTM等,目前還有用生成對抗網絡GAN等比較新的技術來實現時間序列預測。
關於循環神經網絡,歡迎瀏覽我的另一篇博客:深度學習中的序列模型演變及學習筆記,這里不再贅述。
關於深度學習模型,歡迎瀏覽我的另一篇博客:深度學習中的一些組件及使用技巧,這里不再贅述。
值得一提的是,深度學習在准備數據時,需要將時序數據通過時間滑窗進行時間步的拼接,從而作為訓練集的輸入與標簽。
綜上所述,三種類型的模型各有所長和不足。一般來說,統計類模型適合於數據量較小同時工業化需求不高的情況,機器學習類模型更廣泛適合於工業化情境,而深度學習模型在大數據量的預測上更具備優勢。
如果你對智能推薦感興趣,歡迎瀏覽我的另一篇隨筆:智能推薦算法演變及學習筆記
如果你對廣告推薦感興趣,歡迎瀏覽我的另一篇隨筆:CTR預估模型演變及學習筆記
如果您對人工智能算法感興趣,歡迎瀏覽我的另一篇博客:人工智能新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)、人工智能領域常用的開源框架和庫(含機器學習/深度學習/強化學習/知識圖譜/圖神經網絡)
如果你是計算機專業的應屆畢業生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機領域的應屆生,你如何准備求職面試?
如果你是計算機專業的本科生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機領域的本科生,你可以選擇學習什么?
如果你是計算機專業的研究生,歡迎瀏覽我的另外一篇博客:如果你是一個計算機領域的研究生,你可以選擇學習什么?
如果你對金融科技感興趣,歡迎瀏覽我的另一篇博客:如果你想了解金融科技,不妨先了解金融科技有哪些可能?
之后博主將持續分享各大算法的學習思路和學習筆記:hello world: 我的博客寫作思路