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