全部產品
Search
文件中心

Simple Log Service:預測與異常檢測函數

更新時間:Oct 22, 2024

預測與異常檢測函數通過預測時序曲線、尋找預測曲線和實際曲線之間誤差的Ksigma與分位元等特性進行異常檢測。

函數列表

函數

說明

ts_predicate_simple

利用預設參數對時序資料進行建模,並進行簡單的時序預測和異常點的檢測。

ts_predicate_ar

使用自迴歸模型對時序資料進行建模,並進行簡單的時序預測和異常點的檢測。

ts_predicate_arma

使用移動自迴歸模型對時序資料進行建模,並進行簡單的時序預測和異常點檢測。

ts_predicate_arima

使用帶有差分的移動自迴歸模型對時序資料進行建模,並進行簡單的時序預測和異常點檢測。

ts_regression_predict

針對具有周期性、趨勢性的單時序序列,進行準確的預測。

使用情境:計量資料的預測、網路流量的預測、財務資料的預測、以及具有一定規律的不同業務資料的預測。

ts_anomaly_filter

針對批量曲線進行時序異常檢測後,可以按照使用者定義的異常模式來過濾異常檢測的結果,協助使用者快速找出異常的執行個體曲線。

ts_predicate_simple

函數格式:

select ts_predicate_simple(x, y, nPred, isSmooth) 

參數說明如下:

參數

說明

取值

x

時間列,從小到大排列。

格式為Unixtime時間戳記,單位為秒。

y

數值列,對應某時刻的資料。

-

nPred

預測未來的點的數量。

long類型,取值大於等於1。

isSmooth

是否需要對未經處理資料做濾波操作。

bool類型,預設為true表示對未經處理資料做濾波操作。

樣本:

  • 查詢分析

    * | select ts_predicate_simple(stamp, value, 6) from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log GROUP BY stamp order by stamp)
  • 輸出結果輸出結果

顯示項目如下:

顯示項目

說明

橫軸

unixtime

資料的Unixtime時間戳記,單位為秒。

縱軸

src

未經處理資料。

predict

預測的資料。

upper

預測的上界。當前信賴度為0.85,不可修改。

lower

預測的下界。當前信賴度為0.85,不可修改。

anomaly_prob

該點為異常點的機率,範圍為0~1。

ts_predicate_ar

函數格式:

select ts_predicate_ar(x, y, p, nPred, isSmooth) 

參數說明如下:

參數

說明

取值

x

時間列,從小到大排列。

格式為Unixtime時間戳記,單位為秒。

y

數值列,對應某時刻的資料。

-

p

自迴歸模型的階數。

long類型,取值範圍為2~8。

nPred

預測未來的點的數量。

long類型,取值範圍為1~5*p

isSmooth

是否需要對未經處理資料做濾波操作。

bool類型,預設為true表示對未經處理資料做濾波操作。

查詢分析樣本:

* | select ts_predicate_ar(stamp, value, 3, 4) from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log GROUP BY stamp order by stamp)
說明

輸出結果與ts_predicate_simple函數相似,具體請參見ts_predicate_simple函數的輸出結果。

ts_predicate_arma

函數格式:

select ts_predicate_arma(x, y, p, q, nPred, isSmooth) 

參數說明如下:

參數

說明

取值

x

時間列,從小到大排列。

格式為Unixtime時間戳記,單位為秒。

y

數值列,對應某時刻的資料。

-

p

自迴歸模型的階數。

long類型,取值範圍為2~100。

q

移動平均模型的階數。

long類型,取值範圍為2~8。

nPred

預測未來的點的數量。

long類型,取值範圍為1~5*p

isSmooth

是否需要對未經處理資料做濾波操作。

bool類型,預設為true表示對未經處理資料做濾波操作。

查詢分析樣本:

* | select ts_predicate_arma(stamp, value, 3, 2, 4) from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log GROUP BY stamp order by stamp) 
說明

輸出結果與ts_predicate_simple函數相似,具體請參見ts_predicate_simple函數的輸出結果。

ts_predicate_arima

函數格式:

select ts_predicate_arima(x, y, p, d, q, nPred, isSmooth) 

參數說明如下:

參數

說明

取值

x

時間列,從小到大排列。

格式為Unixtime時間戳記,單位為秒。

y

數值列,對應某時刻的資料。

-

p

自迴歸模型的階數。

long類型,取值範圍為2~8。

d

差分模型的階數。

long類型,取值範圍為1~3。

q

移動平均模型的階數。

long類型,取值範圍為2~8。

nPred

預測未來的點的數量。

long類型,取值範圍為1~5*p

isSmooth

是否需要對未經處理資料做濾波操作。

bool類型,預設為true表示對未經處理資料做濾波操作。

查詢分析樣本:

* | select ts_predicate_arima(stamp, value, 3, 1, 2, 4) from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log GROUP BY stamp order by stamp)
說明

輸出結果與ts_predicate_simple函數相似,具體請參見ts_predicate_simple函數的輸出結果。

ts_regression_predict

函數格式:

select ts_regression_predict(x, y, nPred, algotype,processType)

參數說明如下:

參數

說明

取值

x

時間列,從小到大排列。

格式為Unixtime時間戳記,單位為秒。

y

數值列,對應某時刻的資料。

-

nPred

預測未來的點的數量。

long類型,取值範圍為1~500。

algotype

針對的預測的演算法類型。

取值包括:

  • origin:使用GBRT(Gradient Boosted Regression Tree)演算法進行預測。

  • forest:使用STL序列分解的結果,將分解得到的趨勢序列使用GBRT演算法進行預測,再將分解出來的序列按照加法模型進行求和後返回。

  • linear:使用STL序列分解的結果,將分解得到趨勢序列使用Linear Regression演算法進行預測,再將分解出來的序列按照加法模型進行求和後返回。

processType

資料對應的預先處理流程。

取值包括:

  • 0:不進行任何額外的資料預先處理。

  • 1:對資料去除異常後再進行預測處理。

樣本:

  • 查詢分析

    * and h : nu2h05202.nu8 and m: NET |  select ts_regression_predict(stamp, value, 200, 'origin') from (select ("__time__" - ("__time__" % 60)) as stamp, avg(v) as value from log group by stamp order by stamp)
  • 輸出結果輸出結果

顯示項目如下:

顯示項目

說明

橫軸

unixtime

資料的Unixtime時間戳記,單位為秒。

縱軸

src

未經處理資料。

predict

預測資料。

ts_anomaly_filter

函數格式:

select ts_anomaly_filter(lineName, ts, ds, preds, probs, nWatch, anomalyType)

參數說明如下:

參數

說明

取值

lineName

varchar類型,表示每條曲線的名稱。

-

ts

曲線的時間序列,表示當前這條曲線的時間資訊。array(double)類型,由小到大排列。

-

ds

曲線的實際值序列,表示當前這條曲線的數值資訊。array(double)類型,長度與ts相同。

-

preds

曲線的預測值序列,表示當前這條曲線的預測值。array(double)類型,長度與ts相同。

-

probs

曲線的異常檢測序列,表示當前這條曲線的異常檢測結果。array(double)類型,長度與ts相同。

-

nWatch

long類型,表示當前曲線中最近觀測的實際值的數量,長度必須小於實際的曲線長度。

-

anomalyType

long類型,表示要過濾的異常類型的種類。

取值包括:

  • 0:表示關注全部異常。

  • 1:表示關註上升沿異常。

  • -1:表示下降沿異常。

樣本:

  • 查詢分析

    * | select res.name, res.ts, res.ds, res.preds, res.probs 
         from ( 
             select ts_anomaly_filter(name, ts, ds, preds, probs, cast(5 as bigint), cast(1 as bigint)) as res 
           from (
             select name, res[1] as ts, res[2] as ds, res[3] as preds, res[4] as uppers, res[5] as lowers, res[6] as probs 
         from (
             select name, array_transpose(ts_predicate_ar(stamp, value, 10)) as res 
             from (
               select name, stamp, value from log where name like '%asg-%') group by name)) );
  • 輸出結果

    | name                     | ts                                                   | ds          | preds     | probs       |
    | ------------------------ | ---------------------------------------------------- | ----------- | --------- | ----------- |
    | asg-bp1hylzdi2wx7civ0ivk | [1.5513696E9, 1.5513732E9, 1.5513768E9, 1.5513804E9] | [1,2,3,NaN] | [1,2,3,4] | [0,0,1,NaN] |