【机器学习基础】时间序列基本概念
最近一直在接觸時(shí)間序列,所以打算寫(xiě)一些有關(guān)時(shí)間序列的文章,預(yù)測(cè)部分會(huì)從規(guī)則開(kāi)始、到傳統(tǒng)模型、到機(jī)器學(xué)習(xí)、再到深度學(xué)習(xí),此外也會(huì)介紹一些時(shí)間序列的基本概念,包括自相關(guān)、平穩(wěn)性、滯后性、季節(jié)性等。
1.基本概念
1.1 時(shí)間序列預(yù)測(cè)
預(yù)測(cè)是商業(yè)中的常見(jiàn)統(tǒng)計(jì)任務(wù),它可以為生產(chǎn)、運(yùn)輸和人員安排等決策提供信息,并為長(zhǎng)期戰(zhàn)略規(guī)劃提供指導(dǎo)。預(yù)測(cè)是指在考慮到所有可用信息的前提下,包括歷史數(shù)據(jù)和可以影響預(yù)測(cè)的任何未來(lái)事件的知識(shí),盡可能準(zhǔn)確地預(yù)言。
而時(shí)間序列預(yù)測(cè)是指按照時(shí)間順序觀察事物的變換。通常會(huì)利用同一變量的歷史值預(yù)測(cè)未來(lái)值,或者也可以加入一些預(yù)測(cè)因子來(lái)預(yù)測(cè)未來(lái)值。前者稱為單變量時(shí)間序列預(yù)測(cè),后者稱為多變量時(shí)間序列預(yù)測(cè)。
通常我們指的時(shí)間序列預(yù)測(cè)都是考慮定期觀察的時(shí)間序列(如每分、每小時(shí)、每天、每周等)。比較經(jīng)典的案例有:降水量預(yù)測(cè)、銷售預(yù)測(cè)、流量預(yù)測(cè)等。
1.2 時(shí)間序列成分
時(shí)間序列包含很多特征中包含諸多成分,有:
趨勢(shì):指時(shí)間序列在較長(zhǎng)一段時(shí)間內(nèi)呈現(xiàn)出來(lái)的持續(xù)向上或者持續(xù)向下的變動(dòng);
季節(jié)性:指時(shí)間序列在一年內(nèi)重復(fù)出現(xiàn)的周期性波動(dòng),如氣候條件、生產(chǎn)條件、節(jié)假日等;
殘差:也稱為不規(guī)則波動(dòng),指除去趨勢(shì)、季節(jié)性、周期性外的隨機(jī)波動(dòng)。不規(guī)則波動(dòng)通常總是夾雜在時(shí)間序列中,致使時(shí)間序列產(chǎn)生一種波浪形或震蕩式的變動(dòng)。只含有隨機(jī)波動(dòng)的序列也稱為平穩(wěn)序列。
下圖展示了一個(gè)時(shí)間序列被分解的過(guò)程,第一張圖是所觀察的時(shí)間序列,第二張圖是趨勢(shì)、第三張圖是季節(jié)性,第四張圖是殘差:
(以上序列并不存在周期性,這里只是舉個(gè)例子)
1.3 平穩(wěn)性
1.3.1 類別
平穩(wěn)性分為弱平穩(wěn)和嚴(yán)平穩(wěn),我們分別給出定義:
「弱平穩(wěn)」:若序列 存在有限二階矩。且滿足
則稱序列 為弱平穩(wěn)序列。
與 t 無(wú)關(guān);
與 t 無(wú)關(guān);
與 t 無(wú)關(guān);
「嚴(yán)平穩(wěn)」:對(duì)于所有可能的 n,所有可能的 ,和所有可能的 k,當(dāng) 的聯(lián)合分布與 的聯(lián)合分布相同時(shí),則序列是強(qiáng)平穩(wěn)。
值得注意的是,「兩種平穩(wěn)過(guò)程并沒(méi)有包含關(guān)系」,即弱平穩(wěn)不一定是嚴(yán)平穩(wěn),嚴(yán)平穩(wěn)也不一定是弱平穩(wěn)。(感興趣的可以自己查資料證明,這里不過(guò)多介紹)
由于嚴(yán)平穩(wěn)的要求過(guò)于苛刻,所以我們所說(shuō)的大部分時(shí)間序列預(yù)測(cè)都是弱平穩(wěn)的時(shí)間序列。
1.3.2 為什么需要平穩(wěn)性
那么我們?yōu)槭裁匆P(guān)注序列的平穩(wěn)性呢?
這是因?yàn)橛行╊A(yù)測(cè)統(tǒng)計(jì)方法是以平穩(wěn)序列為假設(shè)前提而進(jìn)行設(shè)計(jì)的,比如自回歸模型。其假設(shè)是變量的歷史與現(xiàn)狀呈現(xiàn)出基本特性,并在未來(lái)階段的一個(gè)時(shí)間里會(huì)維持不變。
更具體的說(shuō),自回歸預(yù)測(cè)模型的本質(zhì)是“利用序列的滯后階數(shù)(lags)作為自變量”的線性回歸模型,比如 lags=2 表示使用變量的 t-1 和 t-2 時(shí)刻的值作為自變量來(lái)預(yù)測(cè) t 時(shí)刻的值。那么通過(guò)在歷史序列上訓(xùn)練模型后,得到的這個(gè)線性回歸模型的各自變量的系數(shù)就代表了各滯后時(shí)刻的值與下一時(shí)刻值的相關(guān)性,如果時(shí)間序列接近平穩(wěn),這些相關(guān)性在未來(lái)一段時(shí)間內(nèi)都不會(huì)有太大的變化,那么預(yù)測(cè)未來(lái)就成為了可能。
1.3.3 非平穩(wěn)序列如何預(yù)測(cè)
對(duì)于非平穩(wěn)時(shí)間序列的預(yù)測(cè),我們需要將其變換為平穩(wěn)時(shí)間序列,常用的方法有:
差分(一階/n 階);
取 log;
開(kāi)根號(hào);
時(shí)間序列分解。
一般來(lái)說(shuō),做個(gè)一階差分就可以得到接近平穩(wěn)的時(shí)間序列了,如果方差隨時(shí)間變化較大,那么可以先取 log 再做一階差分。如下圖所示:上面兩張圖為非平穩(wěn)的時(shí)間序列,經(jīng)過(guò)一階差分后便得到了相對(duì)平穩(wěn)的時(shí)間序列。當(dāng)然,經(jīng)過(guò)二階差分后,其效果會(huì)更好。
1.3.4 如何測(cè)試平穩(wěn)性
判斷一個(gè)序列是否是平穩(wěn)的,除了通過(guò)肉眼判斷和上面提到的定義外,還有兩種比較科學(xué)的基于單位根檢驗(yàn)的方法:
Augmented Dickey Fuller test (ADF Test):其零假設(shè)為序列有單位根,是非平穩(wěn)的,P-Value如果小于顯著級(jí)別(0.05),則可以拒絕零假設(shè);
Kwiatkowski-Phillips-Schmidt-Shin – KPSS test (trend stationary):與 ADF 正好相反,零假設(shè)為序列是平穩(wěn)的。另外,在 Python 中,可以通過(guò)指定 regression='ct' 參數(shù)來(lái)讓 kps 把“確定性趨勢(shì)(deterministic trend)”的序列認(rèn)為是平穩(wěn)的。
1.4 滯后算子
先給出定義:如果算子運(yùn)算是將一個(gè)時(shí)間序列的前一期值轉(zhuǎn)化為當(dāng)期值,則稱此算子為滯后算子,記做 L。即對(duì)任意時(shí)間序列 ,滯后算子滿足:。
類似也可以定義高階滯后算子,例如二階滯后算子為 。
高階滯后算子有:。
1.5 自相關(guān)函數(shù)
首先,我們先來(lái)介紹下相關(guān)系數(shù),公式:
根據(jù)樣本的估計(jì)得到公式:
可以看到,相關(guān)系數(shù)其實(shí)就是計(jì)算了向量空間中兩個(gè)向量的夾角,而協(xié)方差是去均值后兩個(gè)向量的內(nèi)積。
如果兩個(gè)向量平行,相關(guān)系數(shù)等于 1 或者 -1,垂直則為 0。
相關(guān)系數(shù)度量了兩個(gè)向量的線性相關(guān)性,而在平穩(wěn)時(shí)間序列 中,我們有時(shí)候很想知道, 與它的過(guò)去值 的線性相關(guān)性。這時(shí)候我們便把相關(guān)系數(shù)的概念推廣到自相關(guān)系數(shù)。
與 的相關(guān)系數(shù)稱為 的間隔為 l 的自相關(guān)系數(shù),通常記為 。具體的:
這里用到了弱平穩(wěn)序列的性質(zhì):
對(duì)一個(gè)平穩(wěn)的時(shí)間序列的樣本 ,1≤t≤T,則間隔為 l 的樣本自相關(guān)系數(shù)的估計(jì)為:
則函數(shù) 稱為 的樣本自相關(guān)函數(shù)(ACF)。
假設(shè)現(xiàn)在有這樣一個(gè)時(shí)間序列:
其自相關(guān)圖為:
自相關(guān)系數(shù)值隨著滯后階數(shù)增加而緩慢降低,是因?yàn)樵瓡r(shí)間序列中具有趨勢(shì)變化;
圖中的“圓齒狀”形狀是來(lái)源于原時(shí)間序列中的季節(jié)性變化;
藍(lán)色虛線之內(nèi)的區(qū)域自相關(guān)性可近似看做0。
1.6 白噪聲
如果弱平穩(wěn)序列額 滿足 稱 為白噪聲序列。
如果隨機(jī)變量序列 獨(dú)立且期望和方差不隨時(shí)間而變,則稱 為獨(dú)立白噪聲。
如果獨(dú)立白噪聲還是同分布的,稱為獨(dú)立同分布白噪聲。
簡(jiǎn)單來(lái)說(shuō)“白噪聲”是一個(gè)對(duì)所有時(shí)間其自相關(guān)系數(shù)為零的隨機(jī)過(guò)程。下圖展示了白噪聲的例子:
其自相關(guān)系數(shù)為:
對(duì)于白噪聲而言,我們期望它的自相關(guān)值接近 0。但是由于隨機(jī)擾動(dòng)的存在,自相關(guān)值并不會(huì)精確地等于 0。對(duì)于一個(gè)長(zhǎng)度為 T 的白噪聲序列而言,我們期望在 0.95 的置信度下,它的自相關(guān)值處于 之間。我們可以很容易的畫(huà)出 ACF 的邊界值(圖中藍(lán)色虛線)。如果一個(gè)序列中有較多的自相關(guān)值處于邊界之外,那么該序列很可能不是白噪聲序列。
在上例中,序列長(zhǎng)度 T=50,邊界為 。所有的自相關(guān)值均落在邊界之內(nèi),證明序列是白噪聲。
2.規(guī)則
在介紹模型之前,我們可以先簡(jiǎn)單了解一些時(shí)間序列的規(guī)則,一來(lái)可以快速上手作為 baseline,二來(lái)規(guī)則本身也可以作為模型的特征使用。
2.1 簡(jiǎn)單預(yù)測(cè)方法
均值法:均值法很簡(jiǎn)單,即字面意思,利用歷史的均值作為未來(lái)的預(yù)測(cè)值;
季節(jié)性均值法:利用歷史同期均值作為未來(lái)的預(yù)測(cè)值,一般效果會(huì)比均值法好很多;
樸素法:即將最后一次觀測(cè)值作為未來(lái)的預(yù)測(cè)值;
季節(jié)性樸素法:利用同期最后一次觀測(cè)值作為未來(lái)同期的預(yù)測(cè)值;
漂移法:在起始觀測(cè)值和最后一次觀測(cè)值之間畫(huà)一條連接線,延伸到預(yù)測(cè)時(shí)間點(diǎn),作為預(yù)測(cè)值。
2.2 變換和調(diào)整
「日歷調(diào)整」:季節(jié)性數(shù)據(jù)中的某些變化可能是來(lái)自簡(jiǎn)單的日歷效應(yīng)。這種情況下,在擬合預(yù)測(cè)模型之前消除這些變化因素往往會(huì)使預(yù)測(cè)更簡(jiǎn)單。如每個(gè)月的牛奶產(chǎn)量,產(chǎn)量會(huì)隨著季節(jié)性進(jìn)行變化,但也會(huì)隨著天數(shù)發(fā)生變化:
可以看到,日均產(chǎn)量圖的季節(jié)性模式比月均產(chǎn)量圖更簡(jiǎn)潔明了。日均產(chǎn)量圖有效消除了不同月份天數(shù)不同造成的影響。簡(jiǎn)單的模式往往更易于建立模型并得出更精確的預(yù)測(cè)結(jié)果。對(duì)于交易天數(shù)隨著月份改變的銷售數(shù)據(jù),我們可以做相似的調(diào)整。在這種情況下,可以用每個(gè)交易日的銷量而非每月的總銷量來(lái)建立模型。
「人口調(diào)整」:任何受人口數(shù)量影響的數(shù)據(jù)都可以調(diào)整為人均數(shù)據(jù),換句話說(shuō),考慮每人(或每千人,或每百萬(wàn)人)而非所有人。比如說(shuō)研究醫(yī)院的床位數(shù)隨時(shí)間的變化,通過(guò)采用人均數(shù)據(jù)來(lái)消除人口數(shù)量變化的情況;
「通膨調(diào)整」:受貨幣價(jià)值影響的數(shù)據(jù)在建立模型之前經(jīng)過(guò)最好經(jīng)過(guò)通脹調(diào)整;
「數(shù)學(xué)變換」:數(shù)據(jù)波動(dòng)范圍會(huì)隨著數(shù)據(jù)數(shù)值范圍的變換而變大或者變小,此時(shí)可以進(jìn)行些數(shù)學(xué)變換。一個(gè)比較經(jīng)典方法是取對(duì)數(shù)。對(duì)數(shù)變換之所以有用,是因?yàn)槠鋽?shù)值的變化與原始值的變化成正比,且幅度更小;此外也可以用冪變換。Box-Cox 變換既包含對(duì)數(shù)變換,又包含冪變換的依賴于參數(shù) 的變換族,定義如下:
Box-cox 變換中的對(duì)數(shù)變換通常以自然對(duì)數(shù) e 為底,因此如果 λ=0,則進(jìn)行自然對(duì)數(shù)變換,否則會(huì)進(jìn)行冪變換,然后簡(jiǎn)單縮放。下圖為某一事件序列:
當(dāng) 時(shí),整個(gè)時(shí)間序列范圍內(nèi)的周期性變化大小差不多相同,因此會(huì)讓預(yù)測(cè)更加簡(jiǎn)單:
選擇好變換后,我們還需要利用逆變換得到原始測(cè)度上的預(yù)測(cè)值,逆 Box-Cox 變換如下表示:
「偏差調(diào)整」:使用 Box-Cox 變換來(lái)調(diào)整數(shù)據(jù)分布,其問(wèn)題在于逆變換后得到的預(yù)測(cè)值不是預(yù)測(cè)分布的平均值,而是預(yù)測(cè)分布的中位數(shù)。很多情況下這可以接受,但有時(shí)的的確確需要預(yù)測(cè)均值。此時(shí),就需要調(diào)整一下逆變換,以得到逆變換的均值:
是 h 步預(yù)測(cè)方差,預(yù)測(cè)方差越大,均值和中位數(shù)之間的差異越大。
簡(jiǎn)單逆變換和逆變換的均值之間的差異,我們稱之為偏差(Bias)。當(dāng)我們需要用均值而非中位數(shù)時(shí),稱預(yù)測(cè)點(diǎn)是經(jīng)過(guò)“偏差調(diào)整”(Bias-adjusted)的。下圖展示了兩者的區(qū)別:
其中,藍(lán)線表示預(yù)測(cè)值中位數(shù),紅色線表示預(yù)測(cè)值均值,
2.3 周期因子法
這里主要想著重介紹一下周期因子法。
周期因子法很簡(jiǎn)單,我們先來(lái)看一段數(shù)據(jù):
可以看到起明顯具有周期性。而預(yù)測(cè)的核心任務(wù)便是盡可能準(zhǔn)確的提取這種周期性。所以我們:
首先除以周均值得到一個(gè)比值;
然后按列去中位數(shù),得到一組魯棒的周期因子。
做預(yù)測(cè)時(shí)只需要將周期因子乘以一個(gè) base,便可作為下一周的預(yù)測(cè)。比如我們?nèi)∽詈笠恢艿钠骄土髁?100 作為 base,那么我們直接乘上周期因子,就得到下一周的預(yù)測(cè):
這里只拿了三周來(lái)舉例。實(shí)際應(yīng)用當(dāng)然要取更長(zhǎng)的時(shí)段啦。具體取幾周以測(cè)試集的效果來(lái)確定。
按列提取中位數(shù)是一種簡(jiǎn)單而有效的提取周期因子的方法。中位數(shù)十分魯棒,不受極端值的影響。但中位數(shù)損失了很多信息。實(shí)踐中,可以在此基礎(chǔ)上進(jìn)一步優(yōu)化。比如可以提取一個(gè)均值和一個(gè)中位數(shù),然后將均值和中位數(shù)融合。融合的比例按照測(cè)試集的表現(xiàn)來(lái)確定。也可以根據(jù)與預(yù)測(cè)周的時(shí)間距離來(lái)賦予不同的權(quán)重。
除了對(duì)周期因子進(jìn)行優(yōu)化外,我們還可以針對(duì) Base 進(jìn)行優(yōu)化。
直接用最后一周的平均客流量作為base并不一定是最好的方法。也許最后三天或最后五天的均值能更好的反映最新的情況。但是,我們不能直接對(duì)最后三天客流量取均值(最后三天是周末,這樣取的base就偏大了)。需要去掉周期性因素后,再取平均。具體做法,就是用客流量除以周期因子。
這樣我們就可以取最后三天的平均,(108+91.4+120)/3=106.5,作為 base。具體取多少天的,也要通過(guò)測(cè)試集的表現(xiàn)來(lái)確定。當(dāng)然也可以按某些函數(shù)形式來(lái)給每天賦予不同的權(quán)重。
3.Reference
用python做時(shí)間序列預(yù)測(cè)四:平穩(wěn)/非平穩(wěn)時(shí)間序列
如何深入理解時(shí)間序列分析中的平穩(wěn)性?
金融時(shí)間序列分析入門(mén)(一)
如何理解自相關(guān)和偏自相關(guān)圖
時(shí)間序列規(guī)則法快速入門(mén)
總結(jié)
以上是生活随笔為你收集整理的【机器学习基础】时间序列基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 手机qq浏览器怎么设置上下翻页按钮 手机
- 下一篇: win7让任务管理器pid显示出来的方法