1. 程式人生 > >用python做時間序列預測一:初識概念

用python做時間序列預測一:初識概念

>利用時間序列預測方法,我們可以基於歷史的情況來預測未來的情況。比如共享單車每日租車數,食堂每日就餐人數等等,都是基於各自歷史的情況來預測的。 ### 什麼是時間序列? >- 時間序列,是指同一個變數在連續且固定的時間間隔上的各個資料點的集合,比如每5分鐘記錄的收費口車流量,或者每年記錄的藥物銷量都是時間序列。 ![](https://cdn.jsdelivr.net/gh/jiabaogithub/imgs@master/img/20200513133507.png) ### 時間序列的型別 >- 根據時間間隔的不同,時間序列可以是按年度(Annual)、季度、月度、周、小時、分鐘、秒等頻率採集的序列。 ### 時間序列的成分 >- 趨勢(Trend),比如長期上漲或長期下跌。 >- 季節性(Seasonal),比如羽絨服的銷量一般會在冬季更高,或者某家燒烤店的生意一般會在每週五和週六晚上更好。 >- 週期性(Cyclic),比如你時不時搞個大促,那麼銷量在那段時間就會比較好。 >- 誤差。 ![](https://cdn.jsdelivr.net/gh/jiabaogithub/imgs@master/img/20200519181631.png) ### 什麼是時間序列預測? >- 就是用同一個變數的歷史值預測未來值,或者除了歷史值以外,還加入一些預測因子(又稱外生變數)來預測未來值。前者稱為單變數時間序列預測,後者稱為多變數時間序列預測。 >- 比如,我們要預測某海灘下個月的的遊客數量,除了用歷史遊客數量做預測外,還可以加入溫度這個因子。那麼只用歷史遊客數量做預測就是單變數時間預測,加入溫度這個因子就是多變數時間預測,當然還可以加入其它合理的預測因子,比如該海灘的每月廣告支出等。 ### 一些簡單的預測方法 #### 均值法 所有未來的預測值等於歷史資料的平均值。 #### 樸素法 簡單的將最後一次觀測值作為未來的預測值。 #### 季節性樸素法 相比樸素法,就是考慮了季節性,也就是說將同期的最後一次觀測值作為本期的預測值,比如預測本週的數值,那麼就將上週的週一觀測值作為本週的週一預測值,上週的週二觀測值作為本週的週二預測值,以此類推。 #### 漂移法(drift ) 在起始觀測值和最後一次觀測值之間畫一條連線線,延伸到預測時間點,作為預測值,公式如下: ![](https://cdn.jsdelivr.net/gh/jiabaogithub/imgs@master/img/20200513142848.png) 下面的2副圖展示了上面四種方法的預測效果: ![](https://cdn.jsdelivr.net/gh/jiabaogithub/imgs@master/img/20200513143136.png) ![](https://cdn.jsdelivr.net/gh/jiabaogithub/imgs@master/img/20200513143204.png) ### 常用的時間序列預測法 >- Exponential smoothing 指數平滑 簡單說就是用過去的觀測值的加權平均值來作為預測值,權重隨著與當前時刻的距離變遠而呈指數衰減。 >- ARIMA 簡單說就是用變數的自迴歸(AR)與歷史預測誤差的自迴歸(MA)構成的時間序列預測模型。 >- 基於深度學習的方法 簡單說就是利用神經網路強大的學習能力,從時間序列歷史資料中提取各種可能的特徵,從而對未來進行預測。這部分的模型比較多,比如LSTM,Seq2seq等。 注意,上述的方法並不能說誰一定比誰好,不同的預測場景下每個方法都有可能做出更好的預測,所以通常需要相互比較,以便做出更合理的預測。 本篇介紹了時間序列的相關概念,下一篇將介紹時間序列的一般資料格式和基於python的視覺化方法。 ok,本篇就這麼多內容啦~,感謝閱讀O(∩\_∩)O。 ![](https://cdn.jsdelivr.net/gh/jiabaogithub/imgs@master/img/20200506201