用python做時間序列預測一:初識概念
阿新 • • 發佈:2020-06-02
>利用時間序列預測方法,我們可以基於歷史的情況來預測未來的情況。比如共享單車每日租車數,食堂每日就餐人數等等,都是基於各自歷史的情況來預測的。
### 什麼是時間序列?
>- 時間序列,是指同一個變數在連續且固定的時間間隔上的各個資料點的集合,比如每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