You need to enable JavaScript to run this app.
导航
预测与异常检测函数
最近更新时间:2024.11.22 11:13:38首次发布时间:2024.08.02 11:36:30

本文介绍日志服务支持的预测与异常检测函数语法及常见场景的使用示例。

说明

目前,机器学习函数正处于公测阶段。

函数列表

函数

说明

ts_anomaly_filter

通过自定义的异常模式对异常检测结果进行筛选,高效定位异常曲线。

ts_predicate_simple

通过默认参数完成数据建模,进行数据预测与异常点检测。

ts_predicate_ar

通过自回归模型完成数据建模,进行数据预测与异常点检测。

ts_predicate_arima

对具有周期性的时序数据进行准确预测。

ts_regression_predict

基于定义的异常模式过滤异常检测结果,有助于快速找出异常曲线。

ts_anomaly_filter

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

    当前曲线中最近观测到的实际值数量,长度需小于实际的曲线长度,即需小于 ts 参数长度。

    anomalyType

    long

    待过滤的异常类型。

    • 0:关注全部异常。
    • 1:关注上升沿异常。
    • -1:下降沿异常。
  • 返回值说明
    如果输入值为 NULL,则将返回 NULL。

函数示例

  • 检索与分析语句

    *| SELECT res.name, res.ts, res.ds, res.preds, res.probs  FROM (select ts_anomaly_filter(name, ts, ds, preds, probs, cast(1 as bigint), cast(1 as bigint)) as res 
           from (
             select 'aa' as name, array[1731294220,1731294221,1731294222] as ts, array[1,2,3] as ds, array[3,2,1] as preds, array[4,4,4] as probs ))
    
  • 检索与分析结果
    Image

ts_predicate_simple

ts_predicate_simple 函数是通过默认参数完成数据建模,进行数据预测与异常点检测。

函数语法

  • 语法格式

    ts_predicate_simple(x, y, nPred, isSmooth) 
    
  • 参数说明

    参数

    数据类型

    说明

    x

    String

    时间列的列名。格式为 Unixtime 时间戳,单位为秒。

    y

    String

    数值列的列名,对应某时刻的数据。

    nPred

    Long

    未来数据点的数量。取值大于等于 1。

    isSmooth

    Boolean

    是否需要对原始数据做滤波操作。
    默认为 true,表示对原始数据做滤波操作。

  • 返回值说明
    如果输入值为 NULL,则将返回 NULL。

函数示例

  • 检索与分析语句

    *| SELECT ts_predicate_simple(stamp, value, 10) FROM(SELECT stamp, value LIMIT 500)
    
  • 检索与分析结果
    Image

    结果列

    说明

    unixtime

    时间列,单位为秒。

    src

    原始数据。

    predict

    通过预测得到的数据。

    upper

    预测数据的上界。当前置信度固定为 0.85。

    lower

    预测数据的下界。当前置信度固定为 0.85。

    anomaly_prob

    该数据点为异常点的概率。

ts_predicate_ar

ts_predicate_ar 函数通过自回归模型完成数据建模,进行数据预测与异常点检测。

函数语法

  • 语法格式

    ts_predicate_ar(x, y, p, nPred, isSmooth) 
    
  • 参数说明

    参数

    数据类型

    说明

    x

    String

    时间列的列名。格式为 Unixtime 时间戳,单位为秒。

    y

    String

    数值列的列名,对应某时刻的数据。

    p

    Long

    自回归模型的阶数。取值范围为 2~8。

    nPred

    Long

    未来数据点的数量。取值范围为 1~5**p。*

    isSmooth

    Boolean

    是否需要对原始数据做滤波操作。
    默认为 true,表示对原始数据做滤波操作。

  • 返回值说明
    如果输入值为 NULL,则将返回 NULL。

函数示例

  • 检索与分析语句

    *| SELECT ts_predicate_ar(stamp, value, 6,10) FROM(SELECT stamp, value LIMIT 500)
    
  • 检索与分析结果
    Image

    结果列

    说明

    unixtime

    时间列,单位为秒。

    src

    原始数据。

    predict

    通过预测得到的数据。

    upper

    预测数据的上界。当前置信度固定为 0.85。

    lower

    预测数据的下界。当前置信度固定为 0.85。

    anomaly_prob

    该数据点为异常点的概率。

ts_predicate_arima

ts_predicate_arima 函数用于对具有周期性的时序数据进行准确预测。

函数语法

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

参数说明如下表所示:

参数

数据类型

说明

x

String

时间列的列名。格式为 Unixtime 时间戳,单位为秒。

y

String

数值列的列名,对应某时刻的数据。

p

Long

自回归模型的阶数。取值范围为 2~8。

d

Long

差分模型的阶数。取值范围为 1~3。

q

Long

移动平均模型的阶数。取值范围为 2~8。

nPred

Long

未来数据点的数量。取值范围为 1~5**p*。

isSmooth

Boolean

是否需要对原始数据做滤波操作。
默认为 true,表示对原始数据做滤波操作。

  • 返回值说明
    如果输入值为 NULL,则将返回 NULL。

函数示例

  • 检索与分析语句

    *| SELECT ts_predicate_arima(stamp, value, 6,1,4,10) FROM(SELECT stamp, value LIMIT 500)
    
  • 检索与分析结果
    Image

    结果列

    说明

    unixtime

    时间列,单位为秒。

    src

    原始数据。

    predict

    通过预测得到的数据。

    upper

    预测数据的上界。当前置信度固定为 0.85。

    lower

    预测数据的下界。当前置信度固定为 0.85。

    anomaly_prob

    该数据点为异常点的概率。

ts_regression_predict

ts_regression_predict 函数在进行时序数据异常检测后,能基于定义的异常模式过滤异常检测结果,有助于快速找出异常曲线。

函数语法

  • 语法格式

    ts_regression_predict(x, y, nPred, algotype,processType)
    
  • 参数说明

    参数

    数据类型

    说明

    x

    String

    时间列的列名。格式为 Unixtime 时间戳,单位为秒。

    y

    String

    数值列的列名,对应某时刻的数据。

    nPred

    Long

    未来数据点的数量。取值范围为 1~500。

    algotype

    String

    预测算法类型,可选值包括:

    • origin:使用 GBRT(Gradient Boosted Regression Tree)算法进行预测。
    • forest:使用 STL 序列分解的结果,将分解得到的趋势序列使用 GBRT 算法进行预测,再将分解出来的序列按照加法模型进行求和后返回。
    • linear:使用 STL 序列分解的结果,将分解得到趋势序列使用 Linear Regression 算法进行预测,再将分解出来的序列按照加法模型进行求和后返回。

    processType

    String

    数据预处理类型,可选值包括:

    • 0:不进行任何额外的数据预处理。
    • 1:对数据去除异常后再进行预测处理。
  • 返回值说明
    如果输入值为 NULL,则将返回 NULL。

函数示例

  • 检索与分析语句

    * | SELECT ts_regression_predict(stamp, value, 200, 'forest', 0) FROM(SELECT stamp, value LIMIT 500)
    
  • 检索与分析结果
    Image

    结果字段

    说明

    unixtime

    时间列,单位为秒。

    src

    原始数据。

    predict

    通过预测得到的数据。