本文介绍日志服务支持的预测与异常检测函数语法及常见场景的使用示例。
说明
目前,机器学习函数正处于公测阶段。
函数 | 说明 |
---|---|
通过自定义的异常模式对异常检测结果进行筛选,高效定位异常曲线。 | |
通过默认参数完成数据建模,进行数据预测与异常点检测。 | |
通过自回归模型完成数据建模,进行数据预测与异常点检测。 | |
对具有周期性的时序数据进行准确预测。 | |
基于定义的异常模式过滤异常检测结果,有助于快速找出异常曲线。 |
ts_anomaly_filter 函数用于通过自定义的异常模式对异常检测结果进行筛选,高效定位异常曲线。
语法格式
select ts_anomaly_filter(lineName, ts, ds, preds, probs, nWatch, anomalyType)
参数说明
参数 | 数据类型 | 说明 |
---|---|---|
lineName | varchar | 曲线的名称。 |
ts | array(double) | 时间序列,即当前曲线的时间信息,由小到大排列。 |
ds | array(double) | 实际值序列,即当前曲线的数值信息。长度需与 |
preds | array(double) | 预测值序列,即当前曲线的预测值。长度需与 |
probs | array(double) | 异常检测序列,即当前曲线的异常检测结果。长度需与 |
nWatch | long | 当前曲线中最近观测到的实际值数量,长度需小于实际的曲线长度,即需小于 |
anomalyType | long | 待过滤的异常类型。
|
返回值说明
如果输入值为 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 ))
检索与分析结果
ts_predicate_simple 函数是通过默认参数完成数据建模,进行数据预测与异常点检测。
语法格式
ts_predicate_simple(x, y, nPred, isSmooth)
参数说明
参数 | 数据类型 | 说明 |
---|---|---|
x | String | 时间列的列名。格式为 Unixtime 时间戳,单位为秒。 |
y | String | 数值列的列名,对应某时刻的数据。 |
nPred | Long | 未来数据点的数量。取值大于等于 1。 |
isSmooth | Boolean | 是否需要对原始数据做滤波操作。 |
返回值说明
如果输入值为 NULL,则将返回 NULL。
检索与分析语句
*| SELECT ts_predicate_simple(stamp, value, 10) FROM(SELECT stamp, value LIMIT 500)
检索与分析结果
结果列 | 说明 |
---|---|
unixtime | 时间列,单位为秒。 |
src | 原始数据。 |
predict | 通过预测得到的数据。 |
upper | 预测数据的上界。当前置信度固定为 0.85。 |
lower | 预测数据的下界。当前置信度固定为 0.85。 |
anomaly_prob | 该数据点为异常点的概率。 |
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 | 是否需要对原始数据做滤波操作。 |
返回值说明
如果输入值为 NULL,则将返回 NULL。
检索与分析语句
*| SELECT ts_predicate_ar(stamp, value, 6,10) FROM(SELECT stamp, value LIMIT 500)
检索与分析结果
结果列 | 说明 |
---|---|
unixtime | 时间列,单位为秒。 |
src | 原始数据。 |
predict | 通过预测得到的数据。 |
upper | 预测数据的上界。当前置信度固定为 0.85。 |
lower | 预测数据的下界。当前置信度固定为 0.85。 |
anomaly_prob | 该数据点为异常点的概率。 |
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 | 是否需要对原始数据做滤波操作。 |
检索与分析语句
*| SELECT ts_predicate_arima(stamp, value, 6,1,4,10) FROM(SELECT stamp, value LIMIT 500)
检索与分析结果
结果列 | 说明 |
---|---|
unixtime | 时间列,单位为秒。 |
src | 原始数据。 |
predict | 通过预测得到的数据。 |
upper | 预测数据的上界。当前置信度固定为 0.85。 |
lower | 预测数据的下界。当前置信度固定为 0.85。 |
anomaly_prob | 该数据点为异常点的概率。 |
ts_regression_predict 函数在进行时序数据异常检测后,能基于定义的异常模式过滤异常检测结果,有助于快速找出异常曲线。
语法格式
ts_regression_predict(x, y, nPred, algotype,processType)
参数说明
参数 | 数据类型 | 说明 |
---|---|---|
x | String | 时间列的列名。格式为 Unixtime 时间戳,单位为秒。 |
y | String | 数值列的列名,对应某时刻的数据。 |
nPred | Long | 未来数据点的数量。取值范围为 1~500。 |
algotype | String | 预测算法类型,可选值包括:
|
processType | String | 数据预处理类型,可选值包括:
|
返回值说明
如果输入值为 NULL,则将返回 NULL。
检索与分析语句
* | SELECT ts_regression_predict(stamp, value, 200, 'forest', 0) FROM(SELECT stamp, value LIMIT 500)
检索与分析结果
结果字段 | 说明 |
---|---|
unixtime | 时间列,单位为秒。 |
src | 原始数据。 |
predict | 通过预测得到的数据。 |