一文解讀時(shí)間序列基本概念
如果我可以根據(jù)儀表的過去表現(xiàn),根據(jù)供求規(guī)律來預(yù)測(cè)它的未來價(jià)值,那會(huì)怎樣呢?
準(zhǔn)確預(yù)測(cè)什么時(shí)間采取相應(yīng)策略來實(shí)現(xiàn)目標(biāo),這是一個(gè)不小的挑戰(zhàn),但對(duì)于這個(gè)挑戰(zhàn),其實(shí)是可以通過時(shí)間序列預(yù)測(cè)來解決。當(dāng)你們?cè)诟叻迤诳嗫鄬ふ彝\囄粫r(shí),又被告知這將收取你比平時(shí)更多的費(fèi)用,你們肯定難以接受。但街道通暢無阻的話,車主停車方便,也能給我?guī)聿簧俚氖杖?,真是一舉兩得!
接下來我們來探索一些時(shí)間序列算法。
一些定義
時(shí)間序列預(yù)測(cè)法
時(shí)間序列預(yù)測(cè)法是一種歷史資料延伸預(yù)測(cè),也稱歷史引伸預(yù)測(cè)法。是以數(shù)據(jù)數(shù)列所能反映的社會(huì)經(jīng)濟(jì)現(xiàn)象的發(fā)展過程和規(guī)律性,進(jìn)行引伸外推,預(yù)測(cè)其發(fā)展趨勢(shì)的方法。
需要明確一點(diǎn)的是,與回歸分析預(yù)測(cè)模型不同,時(shí)間序列模型依賴于數(shù)值在時(shí)間上的先后順序,同樣大小的值改變順序后輸入模型產(chǎn)生的結(jié)果是不同的。
時(shí)間序列預(yù)測(cè)對(duì)商業(yè)有真正的價(jià)值,因?yàn)樗苯討?yīng)用于定價(jià)、庫存和供應(yīng)鏈問題。雖然深度學(xué)習(xí)技術(shù)已經(jīng)開始用于獲得更多的洞察力,以更好地預(yù)測(cè)未來,但時(shí)間序列預(yù)測(cè)仍然是一個(gè)主要由經(jīng)典ML技術(shù)提供信息的領(lǐng)域。
當(dāng)遇到時(shí)間序列這個(gè)詞時(shí),你需要了解它在不同語境中的用法。
時(shí)間序列
在數(shù)學(xué)中,時(shí)間序列是按時(shí)間順序索引(或列出或圖表)的一系列數(shù)據(jù)點(diǎn)。最常見的是,時(shí)間序列是在連續(xù)的等間隔時(shí)間點(diǎn)上獲得的序列。
時(shí)間序列的一個(gè)例子是道瓊斯工業(yè)平均指數(shù)[1]的日收盤價(jià)。在信號(hào)處理、天氣預(yù)報(bào)、地震預(yù)報(bào)和其他可以繪制事件和數(shù)據(jù)點(diǎn)的領(lǐng)域中,經(jīng)常會(huì)遇到時(shí)間序列圖和統(tǒng)計(jì)建模的使用。
時(shí)間序列分析
時(shí)間序列分析,就是對(duì)上述時(shí)間序列數(shù)據(jù)的分析。時(shí)間序列數(shù)據(jù)可以采取不同的形式,包括中斷時(shí)間序列,它檢測(cè)時(shí)間序列在中斷事件前后的演變模式。時(shí)間序列所需的分析類型取決于數(shù)據(jù)的性質(zhì)。時(shí)間序列數(shù)據(jù)本身可以采用數(shù)字或字符序列的形式。
時(shí)間序列分析考慮了這樣一個(gè)事實(shí),即隨著時(shí)間的推移獲取的數(shù)據(jù)點(diǎn)可能具有應(yīng)該考慮的內(nèi)部結(jié)構(gòu)(例如自相關(guān)、趨勢(shì)或季節(jié)性變化)
要進(jìn)行的分析使用多種方法,包括頻域和時(shí)域、線性和非線性等等??蓞⒁娏私飧嚓P(guān)于這類數(shù)據(jù)的時(shí)間序列分析的多種方法[2]。
時(shí)間序列分解
時(shí)間序列由四個(gè)部分組成:
:季節(jié)性成分 :趨勢(shì)性成分 :周期性成分 :殘差,或不規(guī)則組件。
時(shí)間序列分量分解之間的關(guān)系:
加法分解:
, 在哪里??是當(dāng)時(shí)的數(shù)據(jù)??噸.乘法分解: ?將乘法關(guān)系變成加法關(guān)系:
一個(gè)加模型是否季節(jié)性波動(dòng)的幅度不隨水平變化是適當(dāng)?shù)摹?/span>如果季節(jié)性波動(dòng)與序列的水平成正比,那么乘法模型是合適的。乘法分解在經(jīng)濟(jì)序列中更為普遍。
時(shí)間序列預(yù)測(cè)
時(shí)間序列預(yù)測(cè)是使用一個(gè)模型來預(yù)測(cè)未來的價(jià)值,該模型基于以前收集的數(shù)據(jù)在過去發(fā)生的模式。雖然可以使用回歸模型來探索時(shí)間序列數(shù)據(jù),將時(shí)間指數(shù)作為圖表上的??變量,但最好使用特殊類型的模型來分析此類數(shù)據(jù)。
時(shí)間序列數(shù)據(jù)是一組有序的觀測(cè)數(shù)據(jù),不像可以通過線性回歸分析的數(shù)據(jù)。最常見的是ARIMA,這是Autoregressive Integrated Moving Average(自回歸綜合移動(dòng)平均線)的首字母縮寫。
ARIMA 模型[3]?將一系列的現(xiàn)值與過去的值和過去的預(yù)測(cè)誤差聯(lián)系起來。它們最適合于分析時(shí)域數(shù)據(jù),其中數(shù)據(jù)是隨時(shí)間排序的。
后面推文將介紹使用單變量時(shí)間序列[4]構(gòu)建一個(gè)ARIMA模型,該模型關(guān)注一個(gè)隨時(shí)間改變其值的變量。這類數(shù)據(jù)的一個(gè)例子是這個(gè)數(shù)據(jù)集[5],它記錄了莫納羅亞天文臺(tái)每月的二氧化碳濃度:
| CO2 | YearMonth | Year | Month |
|---|---|---|---|
| 330.62 | 1975.04 | 1975 | 1 |
| 331.40 | 1975.13 | 1975 | 2 |
| 331.87 | 1975.21 | 1975 | 3 |
| 333.18 | 1975.29 | 1975 | 4 |
| 333.92 | 1975.38 | 1975 | 5 |
| 333.43 | 1975.46 | 1975 | 6 |
| 331.85 | 1975.54 | 1975 | 7 |
| 330.01 | 1975.63 | 1975 | 8 |
| 328.51 | 1975.71 | 1975 | 9 |
| 328.41 | 1975.79 | 1975 | 10 |
| 329.25 | 1975.88 | 1975 | 11 |
| 330.97 | 1975.96 | 1975 | 12 |
時(shí)間序列數(shù)據(jù)特征
在查看時(shí)間序列數(shù)據(jù)時(shí),為了更好地理解其模式,需要拆解某些特征。如果你想要分析"信號(hào)"包含在時(shí)間序列數(shù)據(jù)中,那么就認(rèn)為這些特征是相對(duì)于"信號(hào)"的"噪聲"。此時(shí)需要通過使用一些統(tǒng)計(jì)技術(shù)來抵消這些特征以減少"噪音"。
時(shí)間序列數(shù)據(jù)變動(dòng)存在規(guī)律性與不規(guī)律性
時(shí)間序列中的每個(gè)觀察值大小,是影響變化的各種不同因素在同一時(shí)刻發(fā)生作用的綜合結(jié)果。從這些影響因素發(fā)生作用的大小和方向變化的時(shí)間特性來看,這些因素造成的時(shí)間序列數(shù)據(jù)的變動(dòng)分為四種類型。
趨勢(shì)性
某個(gè)變量隨著時(shí)間進(jìn)展或自變量變化,呈現(xiàn)一種比較緩慢而長(zhǎng)期的持續(xù)上升、下降、停留的同性質(zhì)變動(dòng)趨向,但變動(dòng)幅度可能不相等。季節(jié)性
某因素由于外部影響隨著自然季節(jié)的交替出現(xiàn)高峰與低谷的規(guī)律。隨機(jī)性
個(gè)別為隨機(jī)變動(dòng),整體呈統(tǒng)計(jì)規(guī)律。綜合性
實(shí)際變化情況是幾種變動(dòng)的疊加或組合。預(yù)測(cè)時(shí)設(shè)法過濾除去不規(guī)則變動(dòng),突出反映趨勢(shì)性和周期性變動(dòng)。
查看時(shí)間序列時(shí)首先要考慮的重要特征
是否存在趨勢(shì),意味著平均而言,測(cè)量值會(huì)隨著時(shí)間的推移而增加(或減少)? 是否存在季節(jié)性,這意味著與日歷時(shí)間(例如季節(jié)、季度、月份、星期幾等)相關(guān)的高點(diǎn)和低點(diǎn)有規(guī)律地重復(fù)模式? 有異常值嗎?在回歸中,離群值離你的線很遠(yuǎn)。對(duì)于時(shí)間序列數(shù)據(jù),您的異常值與其他數(shù)據(jù)相距甚遠(yuǎn)。 是否存在與季節(jié)性因素?zé)o關(guān)的長(zhǎng)期周期或時(shí)期? 隨著時(shí)間的推移是否存在恒定的方差,或者方差是非常量的? 序列水平或方差是否有任何突然變化?
趨勢(shì)性
通常,時(shí)間序列中不具有周期性的系統(tǒng)變化稱為趨勢(shì)。趨勢(shì)是序列隨時(shí)間的持續(xù)增加或減少。從時(shí)間序列數(shù)據(jù)集中識(shí)別、建模甚至刪除趨勢(shì)信息可能會(huì)帶來好處。
趨勢(shì)類型
有各種各樣的趨勢(shì),通常分為:
確定性趨勢(shì):這些是持續(xù)增加或減少的趨勢(shì)。 隨機(jī)性趨勢(shì):這些趨勢(shì)會(huì)不一致地增加和減少。
一般來說,確定性趨勢(shì)更容易識(shí)別和刪除。
根據(jù)觀察范圍來分類趨勢(shì):
全局趨勢(shì):這些趨勢(shì)適用于整個(gè)時(shí)間序列。 本地趨勢(shì):這些趨勢(shì)適用于時(shí)間序列的部分或子序列。
一般來說,全局趨勢(shì)更容易識(shí)別和應(yīng)對(duì)。
識(shí)別趨勢(shì)
可以繪制時(shí)間序列數(shù)據(jù)以查看趨勢(shì)是否明顯。
而在實(shí)踐中,識(shí)別時(shí)間序列中的趨勢(shì)可能是一個(gè)主觀過程。因此從時(shí)間序列中提取或刪除它可能同樣具有主觀性。創(chuàng)建數(shù)據(jù)的線圖并檢查圖中的明顯趨勢(shì)。 在圖中添加線性和非線性趨勢(shì)線,看看趨勢(shì)是否明顯。
刪除趨勢(shì)
具有趨勢(shì)的時(shí)間序列稱為非平穩(wěn)的??梢詫?duì)識(shí)別的趨勢(shì)進(jìn)行建模。建模后,可以將其從時(shí)間序列數(shù)據(jù)集中刪除。這稱為去趨勢(shì)時(shí)間序列。
如果數(shù)據(jù)集沒有趨勢(shì)或我們成功地移除了趨勢(shì),則稱該數(shù)據(jù)集是趨勢(shì)平穩(wěn)的。
在機(jī)器學(xué)習(xí)中使用時(shí)間序列趨勢(shì)
從機(jī)器學(xué)習(xí)的角度來看,數(shù)據(jù)的趨勢(shì)代表著兩個(gè)機(jī)會(huì):
刪除信息:刪除扭曲輸入和輸出變量之間關(guān)系的系統(tǒng)信息。 添加信息:添加系統(tǒng)信息以改善輸入和輸出變量之間的關(guān)系。
具體來說,作為數(shù)據(jù)準(zhǔn)備和清洗練習(xí),可以從時(shí)間序列數(shù)據(jù)(以及未來的數(shù)據(jù))中刪除趨勢(shì)。這在使用統(tǒng)計(jì)方法進(jìn)行時(shí)間序列預(yù)測(cè)時(shí)很常見,但在使用機(jī)器學(xué)習(xí)模型時(shí)并不總是能改善結(jié)果。
季節(jié)性
季節(jié)性被定義為周期性的波動(dòng),季節(jié)性變化或季節(jié)性是隨著時(shí)間有規(guī)律地重復(fù)的循環(huán)。
許多時(shí)間序列顯示季節(jié)性。例如,零售額往往在春季期間達(dá)到頂峰,然后在假期過后下降。因此,零售銷售的時(shí)間序列通常會(huì)顯示 1月至 3月的銷售額增加,而 4 月和 5 月的銷售額下降。季節(jié)性在經(jīng)濟(jì)時(shí)間序列中很常見,它在工程和科學(xué)數(shù)據(jù)中不太常見。
時(shí)間序列中的周期結(jié)構(gòu)可能是季節(jié)性的,也可能不是。如果它始終以相同的頻率重復(fù),則是季節(jié)性的,否則就不是季節(jié)性的,稱為循環(huán)。
季節(jié)性類型
季節(jié)性有很多種。例如:時(shí)間、日、每周、每月、每年。因此,確定時(shí)間序列問題中是否存在季節(jié)性成分是主觀的。
確定是否存在季節(jié)性因素的最簡(jiǎn)單方法是繪制和查看數(shù)據(jù),可能以不同的比例并添加趨勢(shì)線。
去除季節(jié)性
一旦確定了季節(jié)性,就可以對(duì)其進(jìn)行建模。季節(jié)性模型可以從時(shí)間序列中刪除。此過程稱為季節(jié)性調(diào)整[8]或去季節(jié)性[9]化。
去除了季節(jié)性成分的時(shí)間序列稱為季節(jié)性平穩(wěn)。具有明顯季節(jié)性成分的時(shí)間序列被稱為非平穩(wěn)的。
在時(shí)間序列分析領(lǐng)域,有一些復(fù)雜的方法可以從時(shí)間序列中研究和提取季節(jié)性。
機(jī)器學(xué)習(xí)中作用
了解時(shí)間序列中的季節(jié)性成分可以提高機(jī)器學(xué)習(xí)建模的性能。
這可以通過兩種主要方式發(fā)生:
更清晰的信號(hào):從時(shí)間序列中識(shí)別和去除季節(jié)性成分可以使輸入和輸出變量之間的關(guān)系更清晰。 更多信息:關(guān)于時(shí)間序列季節(jié)性分量的附加信息可以提供新信息以提高模型性能。
這兩種方法都可能對(duì)項(xiàng)目有用。并在數(shù)據(jù)清洗和準(zhǔn)備期間就需要建模季節(jié)性并將其從時(shí)間序列中刪除。
在特征提取和特征工程期間,可能會(huì)提取季節(jié)性信息并將其作為輸入特征。
其他
離群值:離群值離標(biāo)準(zhǔn)數(shù)據(jù)方差很遠(yuǎn)。
長(zhǎng)期循環(huán):獨(dú)立于季節(jié)性因素,數(shù)據(jù)可能顯示一個(gè)長(zhǎng)期周期,比如持續(xù)超過一年的經(jīng)濟(jì)衰退。
恒定方差:隨著時(shí)間的推移,一些數(shù)據(jù)顯示出不斷的波動(dòng),比如每天和晚上的能源使用量。
突變:數(shù)據(jù)可能顯示出突變,可能需要進(jìn)一步分析。例如,由于COVID而突然關(guān)閉的企業(yè)導(dǎo)致了數(shù)據(jù)的變化。
以下是時(shí)間序列樣本圖[11],顯示了玩家在過去幾年里每天花費(fèi)在游戲中的貨幣。你能在這個(gè)數(shù)據(jù)中識(shí)別出上面列出的任何特征嗎?

時(shí)間序列預(yù)測(cè)方法
基本規(guī)則
通過人工經(jīng)驗(yàn),挖掘時(shí)序數(shù)據(jù)的演化特征,找到時(shí)序變化的周期,從而預(yù)估時(shí)間序列的未來走勢(shì)。具體的觀察一個(gè)時(shí)間序列,當(dāng)序列存在周期性時(shí),提取時(shí)間序列的周期性特征進(jìn)行預(yù)測(cè)。
傳統(tǒng)參數(shù)法
傳統(tǒng)的參數(shù)預(yù)測(cè)方法可以分為兩種,
一種擬合標(biāo)準(zhǔn)時(shí)間序列的餐順方法,包括移動(dòng)平均,指數(shù)平均等;
另一種是考慮多因素組合的參數(shù)方法,即?AR, MA, ARMA, ARIMA等模型。這類方法比較適用于小規(guī)模,單變量的預(yù)測(cè)。
時(shí)間序列分解
一個(gè)時(shí)間序列往往是一下幾類變化形式的疊加或耦合
長(zhǎng)期趨勢(shì) (Secular trend, T)
長(zhǎng)期趨勢(shì)指現(xiàn)象在較長(zhǎng)時(shí)期內(nèi)持續(xù)發(fā)展變化的一種趨向或狀態(tài)。季節(jié)變動(dòng) (Seasonal Variation, S)
季節(jié)波動(dòng)是由于季節(jié)的變化引起的現(xiàn)象發(fā)展水平的規(guī)則變動(dòng)循環(huán)波動(dòng) (Cyclical Variation, C)
循環(huán)波動(dòng)指以若干年為期限,不具嚴(yán)格規(guī)則的周期性連續(xù)變動(dòng)不規(guī)則波動(dòng) (Irregular Variation, I)
不規(guī)則波動(dòng)指由于眾多偶然因素對(duì)時(shí)間序列造成的影響
機(jī)器學(xué)習(xí)
主要是構(gòu)建樣本數(shù)據(jù)集,采用“時(shí)間特征”到“樣本值”的方式,通過有監(jiān)督學(xué)習(xí),學(xué)習(xí)特征與標(biāo)簽之前的關(guān)聯(lián)關(guān)系,從而實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)。
單步預(yù)測(cè)
在時(shí)間序列預(yù)測(cè)中使用滯后的觀測(cè)值?,作為輸入變量來預(yù)測(cè)當(dāng)前的時(shí)間的觀測(cè)值?
多步預(yù)測(cè)
使用過去的觀測(cè)序列??來預(yù)測(cè)未來的觀測(cè)序列?
多變量預(yù)測(cè)
每個(gè)時(shí)間有多個(gè)觀測(cè)值:
通過不同的測(cè)量手段得到了多種觀測(cè)值,并且希望預(yù)測(cè)其中的一個(gè)或幾個(gè)值。
深度學(xué)習(xí)
對(duì)于時(shí)間序列的分析,有許多方法可以進(jìn)行處理,包括:循環(huán)神經(jīng)網(wǎng)絡(luò)-LSTM模型 / 卷積神經(jīng)網(wǎng)絡(luò) / 基于注意力機(jī)制的模型(seq2seq)/...
循環(huán)神經(jīng)網(wǎng)絡(luò)
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)框架及其變種(LSTM/GRU/...)是為處理序列型而生的模型,天生的循環(huán)自回歸的結(jié)構(gòu)是對(duì)時(shí)間序列的很好的表示
時(shí)間卷積網(wǎng)絡(luò)
時(shí)間卷積網(wǎng)絡(luò)(TCN)是一種特殊的卷積神經(jīng)網(wǎng)絡(luò),針對(duì)一維空間做卷積,迭代多層捕捉長(zhǎng)期關(guān)系。具體的,對(duì)于上一層t時(shí)刻的值,只依賴于下一層t時(shí)刻及其之前的值。
一個(gè)時(shí)間序列數(shù)據(jù)--電力使用數(shù)據(jù)
開始創(chuàng)建一個(gè)時(shí)間序列模型,根據(jù)過去的使用情況來預(yù)測(cè)未來的電力使用量。
本例中的數(shù)據(jù)來自GEFCom2014預(yù)測(cè)競(jìng)賽。由2012 - 2014年3年的小時(shí)電負(fù)荷和溫度值組成。
import?os
import?matplotlib.pyplot?as?plt
import?pandas?as?pd
%matplotlib?inline
data_dir?=?'./data'
energy?=?pd.read_csv('./energy.csv')
energy.head()
可以看到有兩列表示date和load
| load | |
|---|---|
| 2012-01-01 00:00:00 | 2698.0 |
| 2012-01-01 01:00:00 | 2558.0 |
| 2012-01-01 02:00:00 | 2444.0 |
| 2012-01-01 03:00:00 | 2402.0 |
| 2012-01-01 04:00:00 | 2403.0 |
可視化
energy.plot(y='load',?subplots=True,?figsize=(15,?8),?fontsize=12)
plt.xlabel('timestamp',?fontsize=12)
plt.ylabel('load',?fontsize=12)
plt.show()

現(xiàn)在,繪制2014年7月的第一周,將其作為energy的輸入,在[from date]: [to date]?模式中:
energy['2014-07-01':'2014-07-07'].plot(y='load',?subplots=True,?figsize=(15,?8),?fontsize=12)
plt.xlabel('timestamp',?fontsize=12)
plt.ylabel('load',?fontsize=12)
plt.show()

看看這些圖,看看你是否能確定上面列出的任何特征。通過可視化數(shù)據(jù)我們可以推測(cè)出什么?后面將介紹創(chuàng)建一個(gè)ARIMA模型來創(chuàng)建一些預(yù)測(cè)。
參考資料
道瓊斯工業(yè)平均指數(shù):?https://wikipedia.org/wiki/Time_series
[2]?時(shí)間序列分析的多種方法:?https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm
[3]?ARIMA 模型:?https://online.stat.psu.edu/stat510/lesson/1/1.1
[4]?單變量時(shí)間序列:?https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm
[5]?數(shù)據(jù)集:?https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm
[6]?重要特征:?https://online.stat.psu.edu/stat510/lesson/1/1.1
[7]?趨勢(shì):?https://machinelearningmastery.com/time-series-trends-in-python
[8]?季節(jié)性調(diào)整:?https://en.wikipedia.org/wiki/Seasonal_adjustment
[9]?季節(jié)性:?https://en.wikipedia.org/wiki/Seasonal_adjustment
[10]?季節(jié)性:?https://machinelearningmastery.com/time-series-seasonality-with-python/
[11]?時(shí)間序列樣本圖:?https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python
[12]?時(shí)間序列:?https://cloud.tencent.com/developer/article/1800614
[13]?時(shí)間序列預(yù)測(cè)法:?https://wiki.mbalib.com/wiki/時(shí)間序列預(yù)測(cè)法
END
往期精彩回顧
適合初學(xué)者入門人工智能的路線及資料下載 (圖文+視頻)機(jī)器學(xué)習(xí)入門系列下載 中國(guó)大學(xué)慕課《機(jī)器學(xué)習(xí)》(黃海廣主講) 機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印 《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 機(jī)器學(xué)習(xí)交流qq群955171419,加入微信群請(qǐng)掃碼
