时间序列模型简介
時間序列模型簡介
??盡管此前我們已經用到了time series這個專業名詞,但我們對時序特征進行的處理,并不是time series這個專業名詞所代表的真正含義,既時間序列。盡管本階段我們并不會講解時間序列模型,但既然討論了時序特征,對時間序列略加了解,也是能夠增加對時序特征處理方法理解的。因此以下部分作為補充內容,簡單介紹下到底什么是時間序列模型。
注,此處僅對時間序列分析模型進行簡單介紹,而時間序列分析模型本身也只是針對時序數據進行分析的諸多模型中的一種,其他能夠進行時序規律挖掘的模型還包括RNN、LSTM等。
- 什么是時間序列模型
??首先時間序列模型是一類擁有非常強統計背景的模型,盡管也屬于有監督學習范疇,但其建模過程和機器學習的有監督學習算法大相徑庭。時間序列是一種用于進行回歸問題建模的模型,整個建模過程只有時間這一個特征,也就是說時間序列的模型預測過程就是希望通過時間這一個特征去對標簽進行連續型數值預測。
- 時間序列模型的建模過程
??為了更好的理解時間序列模型,我們通過一組簡單的例子來展示時間序列模型的一般建模過程。首先假設有如下數據集,特征只有月份這一個時間,標簽是銷售額,具體數值如下所示:
??對于上述數據集,特征和標簽就不是簡單的相關關系了。通過觀察我們不難看出,標簽的取值呈周期性變化,并且如果我們進一步將月份按照自然周期進行季度的劃分,則會發現有如下規律:
即銷售額不再和月份相關,而是和每個季度的第幾個月呈現出相關關系,那么也就是說,如果是圍繞上述數據集進行預測,我們只需要將自然周期的月按照季度來進行劃分,然后創建“季度中的第幾個月”字段,即可利用該字段對銷售額進行預測。當然,這種相關性還有另一種能夠更加深刻的描述其本質的概念:自相關。
??所謂自相關,指的是標簽自己和自己相關,并且指的是某個時間點的自己和之前一段時間的自己是相關的。例如在上述數據集中,每個標簽的取值,其實就和一個季度前的自己有極大的相關性(甚至取值都是一樣的):
而標簽一定要在時間維度上呈現出一定的自相關性,才能進一步帶入時間序列模型進行建模預測。此外,這里的三個月時間差,也被稱為按月計算的三階差分,這里的銷售額受到季節影響,也被稱為銷售額呈現季節性波動。
此處介紹的自相關性并不是自相關性概念的嚴謹定義、而自相關的概念也不僅僅出現在時間序列技術范疇內,望知悉。
??當然,類似上述例舉的,完全的自相關的情況還是比較少,更常見的情況是存在自相關、但也并不是完全自相關,例如如下數據集情況:
能夠看出,該數據集的標簽在時間特征上仍然呈現出一定的自相關性,但這種相關性只存在于一個季度內,“三個月前的自己”和“現在的自己”都呈現出季度內穩步增長的情況,但也只是變化的趨勢相同,Q2、Q1季度之間每月都相差1,而Q3和Q2之間每月則相差2,Q4和Q3之間每月相差3,哪怕間隔時間相同,隨著時間變化,“過去的自己”和“現在的自己”差異也在逐漸增加,這種變化,也被稱為時間序列中的趨勢。對應到當前數據中來,就是整體序列的變化趨勢是穩步增加的,即銷售額盡管受到不同季度的季度周期影響,但整體是呈現上漲趨勢的。
??而時間序列中存在一些“趨勢”,也是非常常見的一種情況。當然,除了一些季節性波動、長期趨勢以外,有些時候還會出現一些偶然因素導致的時間序列發生變化,例如數據集如下所示:
??首先,該數據的銷售額仍然存在季節性波動,同時呈現整體上漲的趨勢,但其中6月、11月兩個月的銷售額稍顯異常,通過和之前的數據集對比不難發現,該數據集的6月、11月銷售額都增長了6萬,這很可能是商家在6月和11月分別舉辦了“618”和“雙11”促銷活動所導致的銷售額增加,而這些事件,也被稱為不確定事件(并不是通過自然周期劃分所決定的),往往在進行時間序列預測時,我們都需要把這些對時間序列有明顯影響的隨機事件找出來,合理評估其對標簽的影響,然后利用再對預測的時間序列進行修正。
??此外,在某些長期的預測項目中,還有可能出現一些循環的變動,例如某些行業受到經濟周期影響,每個五到十年就會進行類似循環的變化,這也就是所謂的時間序列中的循環趨勢。而對于時間序列模型來說,其根本作用就是去捕捉目標變量(標簽)在時間維度中所呈現出來的季節波動、長期規律以及循環規律,然后再使用一些隨機事件對標簽取值進行修正,最后得出預測結果。當然,判斷某數據集是否適合進行時間序列的建模,首先我們需要對其進行自相關性(以及偏自相關性)檢驗。
從另一個角度來說,時序特征的周期劃分就是捕捉周期性、關鍵時間差值就是趨勢性與不規則規律挖掘。
- 時間序列模型本身的有效性
??最后,我們來簡單討論時間序列模型本身的有效性。長期鉆研機器學習的小伙伴肯定對只需要時間維度、這么一丁點數據就可以完成對標簽數值預測的算法懷有遲疑態度,但實際上在我們的生產生活中,是存在很大一部分預測場景、能用且只能用時間序列模型來進行預測的。例如(很多小伙伴感興趣的)股票預測,以及我個人曾經主導的四川省衛計委區域患病人次預測項目,也就是預測某地區的患病總人次。
??在這些預測場景中,我們很難采用一般的機器學習模型進行建模,其中最難的地方在于無法有效的提取特征。對于區域患病人次預測項目來說,影響一個地區患病總人數的有效特征是非常難以提取及評估的,患病總人次可能和當地衛生狀況、人口結構、氣候、出行、節假日等諸多因素有關,而這些特征,要么受到隨機事件影響根本無法提取(如大規模出行所導致的交叉感染)、要么根本無法量化評估(如衛生狀況),而如果要通過氣候變化對未來的一周甚至數周的患病人次進行預測,則還要依賴高度準確的天氣預測結果。因此通過提取特征的方法進行機器學習預測,可以說是難上加難。
??而另一方面,盡管區域患病總人次會受到諸多不確定因素影響,但在一個較長的時間段中,整體患病人次在時間維度上的分布還是有一定規律的,如下所示:(下圖為2013-2016年四川省某地區14歲以下非特慢疾病接診人次序列)
據此,我們可以進一步對其進行自相關性檢測、時間序列建模、隨機事件修正等,最終模型的實時預測(按月)平均誤差率僅在5%以內,可以說是非常高精度的預測結果了。
- 時間序列的模型局限
??當然,時間序列本身的局限也非常明顯,或者說時間序列本身就是一種只適用于謀者特殊情況的模型,即當一系列的不確定性因素產生了某種綜合性的確定性的影響之后,時間序列能夠非常快速的對其進行規律挖掘,但如果預測項目可以有效提取特征,那么機器學習模型肯定是潛力更大的模型。同樣是患病人次預測,谷歌通過借助搜索引擎的搜索結果來進行的全美冬季流感人數預測,就會更加先進、更加高效、更加精準。此外,如果標簽并未在時間維度上呈現周期性波動、趨勢性變化,也沒有自相關性,那么時間序列模型也是無法構建的。
??當然,哪怕是數據分布規律符合時間序列模型建模要求,時間序列的預測周期也會極大受到既有數據時間跨度影響,例如我們要預測接下來一個季度每個月的患病人次,那么可能就需要有過去兩年的歷史數據的支持,而如果要預測半年的患病人次,則需要有至少3-4年的歷史數據支持,而在很多信息化建設較晚的領域,如此時間跨度的歷史數據的獲取,本身可能也是不小的難度。
總結
- 上一篇: 特征衍生与特征筛选
- 下一篇: CatBoost讲解