揭祕 AIOps海量資料下,時序預測背後的原理

語言: CN / TW / HK

雲智慧 AIOps 社群是由雲智慧發起,針對運維業務場景,提供演算法、算力、資料集整體的服務體系及智慧運維業務場景的解決方案交流社群。該社群致力於傳播 AIOps 技術,旨在與各行業客戶、使用者、研究者和開發者們共同解決智慧運維行業技術難題,推動 AIOps 技術在企業中落地,建設健康共贏的AIOps 開發者生態。

一、運維領域的預測場景

隨著企業數字化轉型加速發展,運維領域作為數字化程序的關鍵一環,受到各行各業的重視,然而海量的運維資料與日益複雜的 IT 技術架構卻給運維從業者帶來了前所未有的挑戰,傳統的人工運維的方式已經無法滿足時代所需,智慧運維應運而生。

與人工智慧、大資料、區塊鏈等技術體系不同,智慧運維並不是一項“全新”的技術,而是一個以智慧運維場景為基礎的智慧技術應用和融合。值得注意的是,在智慧運維領域的海量資料中,時間序列資料佔據著不容忽視的地位,時間序列資料預測更是在智慧運維領域應用廣泛。

現在常見的時間序列預測應用場景包括:

  1. 磁碟、CPU 的容量預測:當磁碟、CPU 的容量佔用較高時,可能會降低應用或者系統的執行效能,所以對磁碟、CPU 的容量預測,對於保證 IT 系統高效穩定執行很重要。

  2. 磁碟故障預警:海量資料的儲存對應著更多的磁碟儲存需求,而磁碟的頻繁損壞導致的資料丟失將會給企業帶來不可估量的損失,企業對於資料儲存介質的穩定性和安全性的要求增高,讓磁碟故障預警變得越來越重要。

  3. 業務預測:如商業、金融這類領域,業務種類繁多,通過對各種類的業務量進行監控,可以更精準地制定相應的業務計劃,併合理設定資源規劃。

下面讓我們來詳細聊聊時間序列預測演算法,這個演算法模型可分為經典類與深度學習類,儘管當今深度學習類時間序列預測模型是學術界研究的熱點,但是在工業落地方面經典時間序列模型依舊十分重要。

經典時間序列預測模型從時間序列的趨勢性、週期性、平穩性等多方面分析時間序列資料的統計性質,在一定的假設下對時間序列的分佈進行建模。此類模型具有較為完備的數學理論,以及良好的可解釋性,在推理和訓練的計算效率上表現出比深度學習類模型更優的效能和更好的可部署性。

此外,經典時間序列預測演算法背後的原理對智慧運維從業者在設計新的預測模型帶來了啟發。本文接下來會詳細介紹兩類經典的預測模型:ARIMA 和 Prophet,簡單闡述其背後的思想,並分享相關實際應用的經驗。

二、ARIMA 預測模型

ARIMA 模型簡介

ARIMA 由 AR(autoreg ressive)、MA(moving average)和 I(integrated)三個部分組成。ARIMA 是 ARMA 模型的一種推廣,ARMA 模型是一種描述弱平穩隨機過程的統計模型,弱平穩隨機過程就是一類均值為常數,自相關函式僅和時間差有關的隨機過程。

ARIMA 的主要思想是利用差分(difference)的操作將非平穩時間序列轉換成平穩或弱平穩的時間序列,再用 ARMA 模型對轉換後的時間序列進行分析和預測([1])。ARMA 模型由 AR(p)模型和 MA(q)模型構成。

若對一個隨機過程,ARMA(p,q)模型可以寫作為:

是一個白噪聲序列,在實際應用中往往被

假設成是獨立同分布的高斯隨機變數:

其中 AR(p)代表變數對自身 p 個滯後項的迴歸,MA(q)則表示變數對滯後 q 個殘差項的迴歸。當引入差分這一運算元後,ARIMA(p,d,q)模型可以寫作:

d 為差分的階數,L 為滯後運算元:

正如 ARMA 模型可以很好的描述弱平穩過程,在引入一定階數差分運算元後,一個在均值上非平穩的隨機過程就有可能被轉化為一個平穩過程,從而使得 ARMA 可以更好的描述資料背後的分佈。

ARIMA 模型的引數選擇

ARIMA 模型中三個超引數 p、d、q 階數的選擇對模型的預測效果至關重要。超引數 p 和 q 階數的選擇可以用樣本自相關函式(sample ACF)和樣本偏自相關函式(sample PACF)來決定。除此之外 AIC、BIC([2])等方法也可以用於超引數 p 和 q 階數的選擇。

在實際應用中,從業者需要通過反覆的分析實驗來確定 p 和 q 的階數。對於差分超引數 d 的階數選擇,可以通過繪圖軟體觀察差分後的資料是否為平穩時間序列來確定,也可以結合單位根檢驗來分析是否有必要進行差分處理。過差分(over difference)會導致模型損失過多的資訊量,從而降低其預測效果。通常來說在保證模型預測效果的情況下,階數越小越好,因為過大的階數往往意味著更高的模型複雜度,從而導致過擬合的效應。在 ARIMA 模型超引數的階數選擇上,沒有絕對的經驗法則驗,分析師往往需要結合業務情況和實際經驗,來判斷超引數階數的選擇。

ARIMA 模型的應用經驗

從工業落地的角度來說,最重要的是瞭解模型的優勢和劣勢。通過上文對 ARIMA 模型的介紹,我們可以認識到此類模型比較適用於平穩或者差分後平穩的時間序列預測。對於有周期性的時間序列來說,ARIMA 模型並不能做到有效的擬合與預測。而 ARIMA 模型的變種 seasonal-ARIMA 模型可以用於週期型時間序列預測。除此之外,若將 ARIMA 模型與一些去週期的時間序列分解方法結合使用,也可以用於週期型時間序列預測。

如上圖所示,對於這類具有周期性和線性的趨勢性特徵的時間序列,如果使用 ARIMA 模型進行預測,那週期分解的預處理和差分操作是不可或缺的。由於 ARIMA 模型的本質是用一類隨機過程去擬合數據,且此類隨機過程無法準確描述時間序列的變點(change point)和概念漂移(concept drift)現象。因此對於下圖所示具有節點和概念漂移現象的時間序列資料預測,如果直接用 ARIMA 模型擬合數據是錯誤的,更為合理的方法是通過設定滑動視窗,使模型自適應去擬合最新的資料或替換成更合適的模型。

儘管 ARIMA 模型在實際預測應用中有著許多不足之處,但是它依舊是最經典的一種預測模型,學者們也提供了豐富的變種模型來解決 ARIMA 模型的缺陷。除了從遞推關係和差分方程的角度來預測,ARIMA 模型也可以從狀態空間模型或者譜分析的視角去預測,這為研究者延展出更多解決問題的方向,具體可以參考其它諸多教材文獻([1])。

三、Prophet 預測模型

Prophet 模型簡介

Prophet([3])模型由 Facebook 公司於 2017 年提出,最初應用於其公司內部的流量預測,在開源後由於模型上手容易和泛用性強,得到了業內更為廣泛的應用。Prophet 模型的設計有著濃厚的工程師影子,它利用了時間序列分解的思想,將時間序列的趨勢部分、週期部分以及節假日部分,分別建立關於時間軸的迴歸模型,並且通過貝葉斯的框架優化其迴歸係數。

若用 Prophet 模型假設時間序列存在如下關係:

其中

分別為時間序列的趨勢成分、週期成分、節假日成分。

為噪音成分,通常被假設為獨立同分布的零

均值高斯。

Prophet 模型的引數選擇

趨勢項存在兩種函式形式,分別為 Logistic growth 形式和 Linear growth 形式。對於 Logistic growth 形式,可以看作為一種“人口模型”,最基本的函式形式為:

其中 C 為增長上界,k 為增長率,m 是 offset。如果將此函式繪圖出來,我們可以看到它的變化類似於自然界人口增長與動物繁殖所呈現出的“S 曲線":

此類函式尤其適用於對流量、人口等有指數增長特性的資料進行建模。Prophet 對 Logistic growth function 做出了一定改進,使得它能夠擬合更多特別型別的指數增長資料,例如使用者增長資料等。Linear growth 就是捕捉資料中趨勢的線性部分。所以針對不同的資料增長模式,我們將根據具體資料情況進行選擇。

但是很多時候資料中的趨勢又不是一成不變的,改變一些資料背後的生成機制就會影響資料的增長趨勢。例如在使用者增長中,如果商家給予新使用者更多的激勵,就會導致其增長趨勢發生變化。因此 Prophet 模型中在趨勢中引入了變點,在進行預測前使用者可以提前設定變點。如果使用者沒有提前設定,Prophet 模型也可以進行變點檢測以來適應趨勢的變化,從而更加精準地擬合數據。

對週期項,Prophet 模型採取了擬合傅立葉級數的方式:

其中

為引數

P 為週期。Prophet 模型中可同時擬合多個週期,並設定每個週期的傅立葉階數,階數如果設定過大,會造成過擬合併且耗費不必要的計算資源。一般建議年週期用 10 階傅立葉。沒有一定的標準,可根據資料實際情況再動態調整。

節假日項是專門針對節假日和特殊事件影響而設計的一個特殊迴歸項。由於受種種客觀因素制約,且週期不明確,節假日往往很難描述其變化。例如農曆的清明節,促銷活動之類。而時間序列資料受這些時間的影響十分明顯,例如,在商場促銷期間,其商場銷售額會有明顯的提升。在清明假期,景區的遊客量明顯高於平時。所以將節假日和特殊時間的影響加入模型的考慮中來是十分必要且有效的,這也是 Prophet 模型之所以得到廣泛應用的一個重要原因。

此外 Prophet 模型可根據實際業務的需要加入外部迴歸項。例如,在統計自行車騎行人數時,如果只考慮騎行人數這一個指標的話,預測往往會出現很大偏差。這時,如果將天氣因素作為外部迴歸項加入進來,預測精度會得到大大提升。需要注意的是,週期項、節假日項和外部迴歸項在 Prophet 模型實際估計的時候,其處理的方式是完全一致的,都是作為多元迴歸中的一元或多元進行迴歸,因此學者在形容它時,常說 Prophet 模型是一個對時間迴歸的模型。

四、Prophet 與 ARIMA 模型的對比

與 ARIMA 不同,Prophet 的模型訓練採用了貝葉斯的框架,即對模型引數設定先驗分佈,通過最大後驗(Max a Posterior)的方式去估計模型引數。對比於 ARIMA,Prophet 具有處理時間序列中的變點和節假日的能力,使得它在工業中得到了更為廣泛的應用。不過要是想將這一工具用好,我們往往需要對其提供充分正確的資訊,如節假日資訊、引數的先驗分佈等。

Prophet 在提供的傅立葉級數 n 較低的情況下,往往會擬合出一條較為平滑的曲線,這在一些預測任務上有特別的價值,比如還原時間序列原本的模式。如下圖所示,對同樣的低信噪比周期資料,ARIMA 模型(經過週期分解預處理)會傾向於擬合較為複雜的尖峰波動,而線性增長 Prophet 模型僅僅是在做傅立葉級數的擬合,N 則決定了擬合曲線的平滑程度。

ARIMA 預測效果圖

線性 Prophet 預測效果圖

可以看出,對於時間序列預測問題,ARIMA 和 Prophet 採取了截然不同的兩種角度。從建模的角度來說,ARIMA 試圖擬合生成差分後的時間序列的平穩隨機過程,而 Prophet 則是對時間序列的不同成分分別建立迴歸模型。從訓練的角度來說,ARIMA 採用了極大似然估計,在對噪音的獨立同分布高斯假設下,其最後對每一個時間點的預測分佈依舊是一種高斯分佈,所以 ARIMA 模型的預測上下界可以準確的通過預測分佈計算出。而 Prophet 模型的預測分佈則不存在一個閉式,使得 Prophet 的預測上下界往往具有隨機性。

五、總結

在深度學習大行其道的今天,經典的統計時序模型並沒有失去其應用價值,反而在很多實際問題上表現出了其特有的優勢,比如良好的結果魯棒性、可解釋性和易於落地等。現在經典統計模型其背後的思想亦是很多深度學習框架靈感的來源。智慧運維領域時間序列預測的發展則依賴於演算法模型的效能。

未來如何使經典模型的優勢在實際應用中大放異彩?又如何將其思想與深度學習相結合開發出更適合數字化發展的演算法?或將是智慧運維演算法開發人員研究的首要任務。

開源福利

雲智慧已開源資料視覺化編排平臺 FlyFish 。通過配置資料模型為使用者提供上百種視覺化圖形元件,零編碼即可實現符合自己業務需求的炫酷視覺化大屏。 同時,飛魚也提供了靈活的拓展能力,支援元件開發、自定義函式與全域性事件等配置, 面向複雜需求場景能夠保證高效開發與交付。

點選下方地址連結,歡迎大家給 FlyFish 點贊送 Star。參與元件開發,更有萬元現金等你來拿。

GitHub 地址: http://github.com/CloudWise-OpenSource/FlyFish

Gitee 地址:http://gitee.com/CloudWise/fly-fish

萬元現金福利: http://bbs.aiops.cloudwise.com/t/Activity

微信掃描識別下方二維碼,備註【飛魚】加入AIOps社群飛魚開發者交流群,與 FlyFish 專案 PMC 面對面交流~

參考文獻

[1]Box, George E. P., and Gwilym M. Jenkins. 1976. Time series analysis: forecasting and control. San Francisco: Holden-Day.

[2]Wikipedia contributors, "Autoregressive integrated moving average," Wikipedia, The Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Autoregressive_integrated_moving_average&oldid=1020508954 (accessed December 7, 2021).

[3]Taylor SJ, Letham B. 2017. Forecasting at scale. PeerJ Preprints 5:e3190v2 http://doi.org/10.7287/peerj.preprints.3190v2