預(yù)測與異常檢測函數(shù)
預(yù)測與異常檢測函數(shù)通過預(yù)測時序曲線、尋找預(yù)測曲線和實際曲線之間誤差的Ksigma與分位數(shù)等特性進行異常檢測。
關(guān)于函數(shù)的算法及原理請參見:
函數(shù)列表
函數(shù) | 說明 |
利用默認參數(shù)對時序數(shù)據(jù)進行建模,并進行簡單的時序預(yù)測和異常點的檢測。 | |
使用自回歸模型對時序數(shù)據(jù)進行建模,并進行簡單的時序預(yù)測和異常點的檢測。 | |
使用移動自回歸模型對時序數(shù)據(jù)進行建模,并進行簡單的時序預(yù)測和異常點檢測。 | |
使用帶有差分的移動自回歸模型對時序數(shù)據(jù)進行建模,并進行簡單的時序預(yù)測和異常點檢測。 | |
針對具有周期性、趨勢性的單時序序列,進行準確的預(yù)測。 使用場景:計量數(shù)據(jù)的預(yù)測、網(wǎng)絡(luò)流量的預(yù)測、財務(wù)數(shù)據(jù)的預(yù)測、以及具有一定規(guī)律的不同業(yè)務(wù)數(shù)據(jù)的預(yù)測。 | |
針對批量曲線進行時序異常檢測后,可以按照用戶定義的異常模式來過濾異常檢測的結(jié)果,幫助用戶快速找出異常的實例曲線。 |
ts_predicate_simple
函數(shù)格式:
select ts_predicate_simple(x, y, nPred, isSmooth)
參數(shù)說明如下:
參數(shù) | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳,單位為秒。 |
y | 數(shù)值列,對應(yīng)某時刻的數(shù)據(jù)。 | - |
nPred | 預(yù)測未來的點的數(shù)量。 | long類型,取值大于等于1。 |
isSmooth | 是否需要對原始數(shù)據(jù)做濾波操作。 | bool類型,默認為true表示對原始數(shù)據(jù)做濾波操作。 |
示例:
查詢分析
* | 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)
輸出結(jié)果
顯示項如下:
顯示項 | 說明 | |
橫軸 | unixtime | 數(shù)據(jù)的Unixtime時間戳,單位為秒。 |
縱軸 | src | 原始數(shù)據(jù)。 |
predict | 預(yù)測的數(shù)據(jù)。 | |
upper | 預(yù)測的上界。當前置信度為0.85,不可修改。 | |
lower | 預(yù)測的下界。當前置信度為0.85,不可修改。 | |
anomaly_prob | 該點為異常點的概率,范圍為0~1。 |
ts_predicate_ar
函數(shù)格式:
select ts_predicate_ar(x, y, p, nPred, isSmooth)
參數(shù)說明如下:
參數(shù) | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳,單位為秒。 |
y | 數(shù)值列,對應(yīng)某時刻的數(shù)據(jù)。 | - |
p | 自回歸模型的階數(shù)。 | long類型,取值范圍為2~8。 |
nPred | 預(yù)測未來的點的數(shù)量。 | long類型,取值范圍為1~5*p。 |
isSmooth | 是否需要對原始數(shù)據(jù)做濾波操作。 | bool類型,默認為true表示對原始數(shù)據(jù)做濾波操作。 |
查詢分析示例:
* | 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)
輸出結(jié)果與ts_predicate_simple函數(shù)相似,具體請參見ts_predicate_simple函數(shù)的輸出結(jié)果。
ts_predicate_arma
函數(shù)格式:
select ts_predicate_arma(x, y, p, q, nPred, isSmooth)
參數(shù)說明如下:
參數(shù) | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳,單位為秒。 |
y | 數(shù)值列,對應(yīng)某時刻的數(shù)據(jù)。 | - |
p | 自回歸模型的階數(shù)。 | long類型,取值范圍為2~100。 |
q | 移動平均模型的階數(shù)。 | long類型,取值范圍為2~8。 |
nPred | 預(yù)測未來的點的數(shù)量。 | long類型,取值范圍為1~5*p。 |
isSmooth | 是否需要對原始數(shù)據(jù)做濾波操作。 | bool類型,默認為true表示對原始數(shù)據(jù)做濾波操作。 |
查詢分析示例:
* | 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)
輸出結(jié)果與ts_predicate_simple函數(shù)相似,具體請參見ts_predicate_simple函數(shù)的輸出結(jié)果。
ts_predicate_arima
函數(shù)格式:
select ts_predicate_arima(x, y, p, d, q, nPred, isSmooth)
參數(shù)說明如下:
參數(shù) | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳,單位為秒。 |
y | 數(shù)值列,對應(yīng)某時刻的數(shù)據(jù)。 | - |
p | 自回歸模型的階數(shù)。 | long類型,取值范圍為2~8。 |
d | 差分模型的階數(shù)。 | long類型,取值范圍為1~3。 |
q | 移動平均模型的階數(shù)。 | long類型,取值范圍為2~8。 |
nPred | 預(yù)測未來的點的數(shù)量。 | long類型,取值范圍為1~5*p。 |
isSmooth | 是否需要對原始數(shù)據(jù)做濾波操作。 | bool類型,默認為true表示對原始數(shù)據(jù)做濾波操作。 |
查詢分析示例:
* | 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)
輸出結(jié)果與ts_predicate_simple函數(shù)相似,具體請參見ts_predicate_simple函數(shù)的輸出結(jié)果。
ts_regression_predict
函數(shù)格式:
select ts_regression_predict(x, y, nPred, algotype,processType)
參數(shù)說明如下:
參數(shù) | 說明 | 取值 |
x | 時間列,從小到大排列。 | 格式為Unixtime時間戳,單位為秒。 |
y | 數(shù)值列,對應(yīng)某時刻的數(shù)據(jù)。 | - |
nPred | 預(yù)測未來的點的數(shù)量。 | long類型,取值范圍為1~500。 |
algotype | 針對的預(yù)測的算法類型。 | 取值包括:
|
processType | 數(shù)據(jù)對應(yīng)的預(yù)處理流程。 | 取值包括:
|
示例:
查詢分析
* 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)
輸出結(jié)果
顯示項如下:
顯示項 | 說明 | |
橫軸 | unixtime | 數(shù)據(jù)的Unixtime時間戳,單位為秒。 |
縱軸 | src | 原始數(shù)據(jù)。 |
predict | 預(yù)測數(shù)據(jù)。 |
ts_anomaly_filter
函數(shù)格式:
select ts_anomaly_filter(lineName, ts, ds, preds, probs, nWatch, anomalyType)
參數(shù)說明如下:
參數(shù) | 說明 | 取值 |
lineName | varchar類型,表示每條曲線的名稱。 | - |
ts | 曲線的時間序列,表示當前這條曲線的時間信息。array(double)類型,由小到大排列。 | - |
ds | 曲線的實際值序列,表示當前這條曲線的數(shù)值信息。array(double)類型,長度與ts相同。 | - |
preds | 曲線的預(yù)測值序列,表示當前這條曲線的預(yù)測值。array(double)類型,長度與ts相同。 | - |
probs | 曲線的異常檢測序列,表示當前這條曲線的異常檢測結(jié)果。array(double)類型,長度與ts相同。 | - |
nWatch | long類型,表示當前曲線中最近觀測的實際值的數(shù)量,長度必須小于實際的曲線長度。 | - |
anomalyType | long類型,表示要過濾的異常類型的種類。 | 取值包括:
|
示例:
查詢分析
* | 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)) );
輸出結(jié)果
| 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] |