上文我們使用lof-icad方法實現了時序資料的異常檢測, 這次我們介紹一種更為常見的方法-------指數平滑.
指數平滑的方法, 其原理就是通過擬合出乙個近似的模型來對未來進行**, 我們可以通過這個**來和實際的值進行比較, 如果差距過大, 我們就可以判定這個點是異常的.
首先我們介紹一下一階指數平滑的演算法
這裡給出一些符號的定義:
序列長度記為n, 引數記為α(指數平滑演算法只有乙個引數)
時序序列的定義:
擬合序列的定義:
對於一階指數平滑而言
這裡我們需要定義一下初始值, 一般來說, 我們可以令初值是前3個資料的平均值:
我們通過這樣的設定之後, 便可以利用初始值不斷迭代出下一步的擬合值, 也就是通過t0可以不斷推到tn的值, 但是這樣帶來的效果可能會很差, 因為引數α可能是不準確的, 那麼迭代下去誤差會越來越大, 我們必須解決這個問題, 這裡我們先擱置, 講一講二階指數平滑
二階指數平滑相對於一階指數平滑演算法只是增加了迭代的次數, 使得擬合的精度相對提高了
這裡我們給出相應的迭代的細節:
對於未來t期的估計 其中
好了, 我們接下來就需要解決α引數的優化問題, 我們需要一種學習演算法來使得誤差變小, 以往的演算法是使用動態規劃, 這裡我們使用隨機梯度下降策略, 給出具體的細節 ###隨機梯度下降法策略
隨機梯度下降法, 需要我們去求部分偏導數, 這裡我們首先給出初始的梯度計算, 以及一般性的梯度計算
定義損失函式:
根據上述偏導數, 我們就可以給出迭代的具體過程:
到此, 我們便給出了一階和二階指數平滑的演算法以及利用梯度下降來對引數進行優化的方法
具體**的實現以及使用的細節可以到我的github專案中進行檢視:
時序資料簡介
生活中,我們經常會接觸到需要對某些指標或者狀態按時間序列進行統計和分析的場景,典型的如 走勢 氣象變化 記憶體監控等。這些依賴於時間而變化,可以用數值來反映其變化程度的資料就叫時序資料。時序資料具有兩個關鍵的指標 監測時間和監測數值。時序資料按照其資料組織形式可以分為單值模型和多值模型兩種。單值模型...
時序資料庫
看到這類資料處理基本是要對乙個時間範圍的資料,根據時間段,維度進行歸類,做一些聚合運算。時序資料庫要解決的問題就是如何能在海量資料中,快速響應使用者的此類查詢。序資料庫的一些基本概念 不同的時序資料庫稱呼略有不同 metric 度量,相當於關係型資料庫中的table。data point 資料點,相...
arima處理時序資料
一 arima原理 1.1自回歸模型ar 自回歸模型描述當前值與歷史值之間的關係,用變數自身的歷史事件資料對自身進行 自回歸模型必須滿足平穩性的要求。1 自回歸模型首先需要確定乙個階數p,表示用幾期歷史值來 當前值。p階自回歸模型的公式定義為 a 用自身資料進行 b 時序資料必須具有平穩性,均值為0...