時間序列基本概念、任務、預測方法
作者:東哥起飛,來源:Python資料科學
本文開啟時間序列系列的相關介紹,從零梳理時序概念、相關技術、和實戰案例,歡迎訂閱 ?「時間序列專欄」 跟蹤全部內容。
本篇介紹時間序列的定義、任務、構成以及預測方法,主要是基本概念的介紹和理解。
時間序列定義
時間序列,通俗的字面含義為一系列歷史時間的序列集合。比如2013年到2022年我國全國總人口數依次記錄下來,就構成了一個序列長度為10的時間序列。
專業領域裡,時間序列定義為一個隨機過程,是按時間順序排列的一組隨機變數的序列集,記為。並用 或者 表示該隨機序列的N有序觀測值。
這裡有兩個概念,隨機變數和觀測值。
隨機變數:用大寫字母表示,我們認為每個時間點的變數都符合一定的分佈特性,變數值從分佈中隨機得到。
觀測值:用小寫字母表示,是隨機變數的實現,也就是我們現實世界看到的數值。
結合上圖理解隨機變數和觀測值的關係。
我們認為每個時間點發生的資料都來自於一個分佈的,即時序點是個隨機的變數,如上圖中所示,在未發生之前每個時序點有可能是紅色,也有可能是藍色。而一旦發生了就會成為一個事實,會變成歷史,所以就只能存在一個唯一的資料。
這裡的紅色點就是觀測點,是我們現實世界某個時刻我們肉眼看到的資料,而藍色點則是隨機變數裡可能會出現的其他資料。藍色和紅色點一起組合了發生時刻的一個變數分佈。拿股價舉例,收盤之前的價格我們認為會在一個合理的分佈區間之內浮動,但不到收盤結束誰都不知道具體是多少,可能是紅色或者藍色,一旦到了收盤就必然會有一個唯一的價格。
時間序列任務
學習時間序列都能做什麼?為什麼要做時序分析?
時間序列的常見作用可以分類以下幾種,其中預測和異常檢測是比較常用的應用場景。
預測:是最廣泛的應用,基於歷史時序資料預測未來時序資料,比如常見的股票價格、食品價格。
時序預測與迴歸預測類似,但又不同。相似的是都透過,不同的是迴歸預測是,用其他資料預測,而時序預測是,用預測。
異常檢測:用於查詢時序資料中的異常資料點(稱為異常值)或子序列的任務。
聚類:是將相似的時間序列聚合一起。
分類:將時間序列與預定義的類別對應。
變點檢測:需要尋找時間序列的統計屬性(如均值、方差)突然變化的時間點。
主題發現:尋找反覆出現的時間序列子序列。
分割:透過減少時間序列的維度,同時保留其基本特徵來建立時間序列的準確近似的任務
時間序列構成
時間序列通常由以下三個組成部分構成。
趨勢:指時間序列在較長一段時間內呈現出來的持續向上或者持續向下的變動
季節性:指時間序列在一年內重複出現的週期性波動,如氣候條件、生產條件、節假日等
殘差:也稱為不規則波動,指除去趨勢、季節性、週期性外的隨機波動。不規則波動通常總是夾雜在時間序列中,致使時間序列產生一種波浪形或震盪式的變動。只含有隨機波動的序列也稱為平穩序列
以上圖二為趨勢,圖三為季節性,圖四為殘差。
既然時間序列可以拆解為這三部分,它們會不會組合起來使用呢?
是可以的,通常可以用兩種簡單模型來表示:
加法模型:
乘法模型:
代表趨勢,表示季節,表示殘差即無法解釋的變化。
當趨勢和季節性變化獨立作用時,加法模型是合適的。
當季節性效應的大小取決於趨勢的大小,乘法模型是合適的。
時間序列預測方法
1. 傳統時序建模
比如典型的傳統時序建模如ARMA
、ARIMA
模型。
ARIMA
模型是ARMA
模型的升級版。ARMA
模型只能針對平穩資料進行建模,而ARIMA
模型需要先對資料進行差分,差分平穩後在進行建模。這兩個模型能處理的問題還是比較簡單,究其原因主要是以下兩點:
ARMA
/ARIMA
模型歸根到底還是簡單的線性模型,能表徵的問題複雜程度有限ARMA
全名是自迴歸滑動平均模型,它只能支援對單變數歷史資料的迴歸,處理不了多變數的情況
2. 機器學習模型方法
這類方法把時序問題轉換為監督學習,透過特徵工程和機器學習方法去預測,支援複雜的資料建模,支援多變數協同迴歸,支援非線性問題,以lightgbm
、xgboost
為代表。
機器學習方法較為複雜的是特徵工程部分,需要一定的專業知識或者豐富的想象力。特徵工程能力的高低往往決定了機器學習的上限,而機器學習方法只是儘可能的逼近這個上限。特徵建立好之後,就可以直接套用樹模型演算法lightgbm/xgboost
。
機器學習方法主要有以下特點:
計算速度快,模型精度高; 缺失值不需要處理,比較方便; 支援category變數; 支援特徵交叉
3. 深度學習模型方法
深度學習方法以LSTM/GRU
、seq2seq
、wavenet
、1D-CNN
、transformer
為主。
其中,LSTM/GRU
模型,是專門為解決時間序列問題而設計的。CNN
模型是本來解決影像問題的,但是經過演變和發展,也可以用來解決時間序列問題
深度學習類模型主要有以下特點:
不能包括缺失值,必須要填充缺失值,否則會報錯 支援特徵交叉,如二階交叉,高階交叉等 需要embedding層處理category變數,可以直接學習到離散特徵的語義變數,並表徵其相對關係 Prophet資料量小的時候,模型效果不如樹方法;但是資料量巨大的時候,神經網路會有更好的表現 神經網路模型支援線上訓練
本篇是時序系列的開胃菜,後續會逐漸展開深入傳統時序核心概念、應用案例,以及機器學習和深度學習方法、Python中使用時序的各種方法。
參考連結:
[1].https://mp.weixin.qq.com/s/sc9OJ-GVmtLB1CGL1Sr8VQ [2].https://mp.weixin.qq.com/s/jqQMlJlt_OCvz0sJOVANUA [3].https://mp.weixin.qq.com/s/-FhSxHWGH8WUwLE2YkWNEg> [4]. [5]. [6]. [7]. [8].
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024922/viewspace-2933256/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 應用時間序列法預測收入
- [譯] 層次時間序列預測法
- Facebook時間序列預測演算法Prophet的研究演算法
- FredNormer: 非平穩時間序列預測的頻域正則化方法ORM
- 用python做時間序列預測一:初識概念Python
- 用python做時間序列預測九:ARIMA模型簡介Python模型
- BiTCN:基於卷積網路的多元時間序列預測卷積
- SOFTS: 時間序列預測的最新模型以及Python使用示例模型Python
- quartz定時任務時間設定quartz
- linux 如何建立定時任務?crontab -e 定時任務使用的時間是系統時間Linux
- 【時間序列分析】01. 時間序列·平穩序列
- 用Python預測「週期性時間序列」的正確姿勢Python
- 案例剖析:利用LSTM深層神經網路進行時間序列預測神經網路
- SiMBA:基於Mamba的跨影像和多元時間序列的預測模型模型
- 時間序列結構變化分析:Python實現時間序列變化點檢測Python
- 谷歌的時間序列預測的基礎模型TimesFM詳解和對比測試谷歌模型
- 資料探勘之產品預測任務
- 如何使用cron任務每隔2天在固定時間執行任務
- 時間序列分析
- 時間序列分析 | 相似性度量基本方法
- CVPR 2021 | 時間序列疾病預測的因果隱馬爾可夫模型隱馬爾可夫模型
- 手把手教你用Python的Prophet庫進行時間序列預測Python
- 時間序列預測:探索性資料分析和特徵工程的實用指南特徵工程
- [譯] 時間序列異常檢測演算法演算法
- java 定時任務 quartz 時間表示式Cron總結Javaquartz
- Python3 - 時間處理與定時任務Python
- 時間序列分析基本思想及時間序列建模步驟
- 將定時測試任務玩到極致
- python 時間序列Python
- iOS 中處理定時任務的常用方法iOS
- 將VAE用於時間序列:生成時間序列的合成資料
- 定時任務
- 個人任務時間管理工具Be Focused Pro for MacMac
- azkaban執行任務長時間無法結束
- linux下定時執行任務的方法--crontabLinux
- Java實現定時任務的三種方法Java
- oracle job使用方法--實現定時任務Oracle
- Python 時間序列分析Python