<model_name>!DETECT_ANOMALIES¶
检测并报告传递给方法的输入数据中的异常。这是通过执行 CREATE SNOWFLAKE.ML.ANOMALY_DETECTION 命令创建的异常检测器对象的一个方法。
该方法会返回一个表,该表将输入数据的每一行标记为异常或非异常。
语法¶
<model_name>!DETECT_ANOMALIES(
INPUT_DATA => <reference_to_data_to_analyze>,
TIMESTAMP_COLNAME => '<timestamp_column_name>',
TARGET_COLNAME => '<target_column_name>',
[ CONFIG_OBJECT => <configuration_object>, ]
[ SERIES_COLNAME => '<series_column_name>' ]
)
备注
model_name
是通过执行 CREATE SNOWFLAKE.ML.ANOMALY_DETECTION 命令创建的对象。
实参¶
必填:
INPUT_DATA => reference_to_data_to_analyze
对于返回待分析数据的表、视图或查询的 引用。
TIMESTAMP_COLNAME => 'timestamp_column_name'
时间序列数据中包含时间戳 (TIMESTAMP_NTZ) 的列的名称。
TARGET_COLNAME => 'target_column_name'
包含待分析的数据(类型 NUMERIC 或 FLOAT)的列的名称。
可选:
SERIES_COLNAME => 'series_column_name'
包含序列标识符的列的名称(对于多序列数据)。此列应为 VARIANT,因为它可以是任意类型的值,或者数组中多个列内任意类型的值组合。
CONFIG_OBJECT => config_object
OBJECT 包含用于配置异常检测作业的键值对。
键
类型
默认值
描述
prediction_interval
0.99
介于 0 和 1 之间的值,指定应标记为异常的观察结果的百分比:
对于不太严格的异常检测(即,将更少的观察结果标记为异常),请指定更高的值。
对于更严格的异常检测(即,将更多的观察结果标识为异常),请使用更小的值。
on_error
'ABORT'
指定异常检测任务的错误处理的字符串(常量)。这在检测多个系列中的异常时最有用。支持的值包括:
'abort'
:如果在任何时间序列中遇到错误,则终止操作。'skip'
:跳过异常检测出现错误的时间序列。这样就可以成功对其他时间序列进行异常检测。输出中不包含失败的序列
返回¶
该函数返回以下列:
列名称 |
数据类型 |
描述 |
---|---|---|
SERIES |
序列值(如果模型使用单个时间序列训练时,为 NULL)。 备注 您的单序列结果可能没有 SERIES 列。查看最近的变更。 |
|
TS |
TIMESTAMP_NTZ |
数据的时间戳 |
Y |
FLOAT |
时间序列的值 |
FORECAST |
FLOAT |
时间戳对应的预测值。 |
LOWER_BOUND |
FLOAT |
预测区间内的值下限。低于此值的值被标记为异常。 |
UPPER_BOUND |
FLOAT |
预测区间内的值上限。高于此值的值被标记为异常。 |
IS_ANOMALY |
BOOLEAN |
如果该值为异常,则为 True;否则,为 False。 |
PERCENTILE |
FLOAT |
给定预测区间的观测 Y 值的相应百分位数。 如果百分位数超出 如果未在配置对象中指定 |
DISTANCE |
FLOAT |
与 FORECAST 列的标准差(z 分数)的倍数 |
使用说明¶
CREATE SNOWFLAKE.ML.ANOMALY_DETECTION 命令中指定的数据的列(在 INPUT_DATA 构造函数实参中)必须与此方法 INPUT_DATA 实参中所指定的数据的列匹配。
例如,如果将 SERIES_COLNAME 实参传递给 CREATE SNOWFLAKE.ML.ANOMALY_DETECTION 命令,则还必须将 SERIES_COLNAME 实参传递给此方法。如果在命令中省略了 SERIES_COLNAME 实参,则必须在此处省略该实参。
如果 TIMESTAMP_COLNAME 或 TARGET_COLNAME 实参指定的列名在 INPUT_DATA 实参指定的表、视图或查询中不存在,则会发生错误。