時間序列分析,就是使用現有的資料,來預測未來的發展
時間序列就是每固定隔一段時間就紀錄一次資料的資料序列,因為資料跟時間密不可分,因此常用來預測未來,這樣講可能有點抽象,打個生活中最常見的比方,氣象預報,假如前天的氣溫是26度,昨天是24度,今天是23度,那麼你認為明天溫度最有可能是幾度呢?
A.30
B.22
C.19
我想各位心中都有個底了吧,這個就是最簡單的時間序列分析,通常時間序列都會以表格呈現,像這樣:
Time | Temp |
---|---|
2020/09/25 | 26 |
2020/09/26 | 24 |
2020/09/27 | 23 |
幸運的話資料長得像上面那樣,預測就會非常方便,但是很不幸的,資料最常出現以下兩種問題
在實務上確實很常碰到這種問題,畢竟事情不會總是順著預期發展,這時候就要使用補值的方式了,因為時間序列必須是相同時間間隔來記錄的資料序列,補值的方式有很多,向前填充、向後填充、前後平均、線性插值、二次插值,三次插值、拉格朗日差值等等琳瑯滿目的方法,但以上方法都只僅限於少量缺值的情況下,如果資料真的缺太多,那可能就要當成無效資料了,或者把時間間隔拉長,例如把一周一筆的資料,改成取一個月一筆,在不同的時間間隔之下,時間序列的表現是完全不同的,因此分析時必須進行考慮資料捨取的問題
資料中有缺值範例:
Time | Temp |
---|---|
2020/09/25 | 26 |
2020/09/26 | NAN |
2020/09/27 | 23 |
當然是要去除的,不合理的數值會預測出不合理的結果,這類不合邏輯的數值稱為異常值,我們主要觀察的是突然的峰值、突然的低谷和太明顯的趨勢變化,舉個例子,假如我們有一個網站的每小時流量資料,在前天那個網站當機了幾個小時,當時的流量數值直接降為0,然而這些資料對於預測是沒有幫助的,因此必須去除,這是肉眼就能分辨的異常值,那肉眼看不出的異常值則必須使用異常值檢測法,異常值檢測法目標是將所有資料區分為異常/非異常,異常值檢測法有很多種,例如STL分解、分類回歸樹(CART)、指數平滑、3σ原則、神經網路、貝葉斯網路、LOF等等
資料中有異常值範例:
Time | Temp |
---|---|
2020/09/25 | 26 |
2020/09/26 | 255 |
2020/09/27 | 23 |
預測未來前必須先解決以上會在資料中出現的問題,這個步驟稱為資料清理,當然資料還有很多種的問題可能會有,而最常見的就是缺值跟異常值問題,我往後幾天會跟各位分享資料清理的部分,會使用許多方便我們進行資料清理的python套件,要記住,只有合理完整的資料,預測的結果才會合理