ANOMALY_DETECTION

정규화된 이름: SNOWFLAKE.ML.ANOMALY_DETECTION

변칙 검색을 통해 머신 러닝 알고리즘을 사용하여 시계열 데이터에서 이상값을 감지할 수 있습니다. CREATE SNOWFLAKE.ML.ANOMALY_DETECTION 을 사용하여 감지 모델을 만들고 학습시킨 다음 <name>!DETECT_ANOMALIES 메서드를 사용하여 변칙을 검색합니다.

중요

법적 고지. 이 Snowflake Cortex ML 기반 함수는 머신 러닝 기술을 기반으로 합니다. 제공된 머신 러닝 기술 및 결과는 부정확하거나 부적절하거나 편향될 수 있습니다. 자동 파이프라인에 내장된 결과를 포함하여 머신 러닝 출력을 기반으로 한 의사 결정에는 모델 생성 콘텐츠가 정확하도록 보장하기 위해 사람의 감독 및 검토 프로세스가 있어야 합니다. Snowflake Cortex ML 기반 함수 쿼리는 다른 SQL 쿼리로 처리되며 메타데이터 로 간주될 수 있습니다.

메타데이터. Snowflake Cortex ML 기반 함수를 사용하면 Snowflake는 메타데이터 필드 에 언급된 내용 외에 ML 함수에서 반환된 일반 오류 메시지를 로그에 기록합니다. 이러한 오류 로그는 발생하는 문제를 해결하고 이러한 함수를 개선하여 더 나은 서비스를 제공하는 데 도움이 됩니다.

CREATE SNOWFLAKE.ML.ANOMALY_DETECTION

변칙 검색에 사용하는 오브젝트를 만들거나 동일한 이름의 변칙 검색 오브젝트를 바꿉니다.

구문

CREATE [ OR REPLACE ] SNOWFLAKE.ML.ANOMALY_DETECTION <name>(
  INPUT_DATA => <reference_to_training_data>,
  [ SERIES_COLNAME => '<series_column_name>', ]
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  LABEL_COLNAME => '<label_column_name>',
  [ CONFIG_OBJECT => <config_object> ]
)
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
Copy

매개 변수

name

변칙 검색 오브젝트의 식별자(이름)를 지정하며, 오브젝트가 생성되는 스키마에 대해 고유해야 합니다.

또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: "My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다. 자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

생성자 인자

필수:

INPUT_DATA => reference_to_training_data

모델을 위한 학습 데이터를 반환하는 테이블, 뷰 또는 쿼리에 대한 참조 를 지정합니다.

이 참조를 생성하려면 SYSTEM$REFERENCE 또는 SYSTEM$QUERY_REFERENCE 를 호출하십시오.

TIMESTAMP_COLNAME => 'timestamp_column_name'

시계열 데이터에서 타임스탬프(TIMESTAMP_NTZ)가 포함된 열의 이름을 지정합니다.

TARGET_COLNAME => 'target_column_name'

분석할 데이터를 포함한 열의 이름을 지정합니다(NUMERIC 또는 FLOAT).

LABEL_COLNAME => 'label_column_name'

데이터에 대한 레이블을 포함한 열의 이름을 지정합니다. 레이블은 주어진 행이 알려진 변칙인지 여부를 나타내는 부울(true/false) 값입니다. 레이블이 지정된 데이터가 없는 경우 이 인자에 대해 빈 문자열('')을 전달하십시오.

선택 사항:

SERIES_COLNAME => 'series_column_name'

(다중 시계열의 경우) 계열의 식별자를 포함하는 열의 이름입니다. 이 열은 어떤 유형의 값이든 될 수 있거나 배열에 있는 둘 이상의 열에서 가져온 값의 조합일 수 있으므로 VARIANT여야 합니다.

CONFIG_OBJECT => config_object

모델 학습 작업 구성에 사용되는 키-값 페어를 포함한 OBJECT 입니다.

타입

기본값

설명

on_error

STRING

'ABORT'

학습 시 오류 처리 방법을 지정하는 문자열(상수)입니다. 이는 여러 계열을 학습할 때 가장 유용합니다. 지원되는 값은 다음과 같습니다.

  • 'abort': 시계열에서 오류가 발생하면 학습을 중단합니다.

  • 'skip': 학습에서 오류가 발생하는 시계열을 건너뜁니다. 이를 통해 다른 시계열에 대한 학습이 성공할 수 있습니다. 모델 학습 중에 어떤 계열이 실패했는지 확인하려면 모델의 <name>!SHOW_TRAINING_LOGS 메서드를 호출하십시오.

사용법 노트

  • TIMESTAMP_COLNAME, TARGET_COLNAME 또는 LABEL_COLNAME 인자로 지정된 열 이름이 INPUT_DATA 인자로 지정된 테이블, 뷰 또는 쿼리에 존재하지 않을 경우 오류가 발생합니다.

  • 클래스 인스턴스의 복제 는 현재 지원되지 않습니다.

SHOW SNOWFLAKE.ML.ANOMALY_DETECTION

모든 변칙 검색 모델을 나열합니다.

구문

SHOW SNOWFLAKE.ML.ANOMALY_DETECTION [ LIKE <pattern> ];
  [ IN
      {
        ACCOUNT                  |

        DATABASE                 |
        DATABASE <database_name> |

        SCHEMA                   |
        SCHEMA <schema_name>     |
        <schema_name>
      }
   ]
Copy

매개 변수

LIKE 'pattern'

오브젝트 이름으로 명령 출력을 선택적으로 필터링합니다. 이 필터는 SQL 와일드카드 문자(%_) 지원과 함께 대/소문자를 구분하지 않는 패턴 일치를 사용합니다.

예를 들어, 다음 패턴은 같은 결과를 반환합니다.

... LIKE '%testing%' ...
... LIKE '%TESTING%' ...

. 기본값: 값 없음(출력에 필터링이 적용되지 않음).

[ IN ... ]

선택적으로 명령의 범위를 지정합니다. 다음 중 하나를 지정합니다.

ACCOUNT

전체 계정의 레코드를 반환합니다.

DATABASE, . DATABASE db_name

현재 사용 중인 데이터베이스 또는 지정된 데이터베이스(db_name)의 레코드를 반환합니다.

db_name 없이 DATABASE 를 지정하고 사용 중인 데이터베이스가 없는 경우 키워드는 출력에 아무런 영향도 주지 않습니다.

SCHEMA, . SCHEMA schema_name, . schema_name

현재 사용 중인 스키마 또는 지정된 스키마(schema_name)의 레코드를 반환합니다.

데이터베이스가 사용 중이거나 정규화된 schema_name (예: db.schema)을 지정하는 경우 SCHEMA 는 선택 사항입니다.

사용 중인 데이터베이스가 없으면 SCHEMA 를 지정해도 출력에 아무런 영향도 주지 않습니다.

기본값: 세션에 현재 사용 중인 데이터베이스가 있는지 여부에 따라 다릅니다.

  • 데이터베이스: DATABASE 가 기본값입니다(즉, 이 명령은 데이터베이스에서 볼 권한이 있는 오브젝트를 반환함).

  • 데이터베이스 없음: ACCOUNT 가 기본값입니다(즉, 이 명령은 계정에서 볼 권한이 있는 오브젝트를 반환함).

출력

다음 열의 모델 속성 및 메타데이터.

설명

created_on

모델이 생성된 날짜 및 시간

name

모델의 이름

데이터베이스_이름

모델이 저장되는 데이터베이스

스키마_이름

모델이 저장되는 스키마

current_version

모델 알고리즘의 버전

comment

모델에 대한 설명

owner

모델을 소유한 역할

DROP SNOWFLAKE.ML.ANOMALY_DETECTION

현재 스키마 또는 지정된 스키마에서 지정된 모델을 제거합니다. 삭제된 모델은 복구할 수 없으며, 다시 만들어야 합니다.

구문

DROP SNOWFLAKE.ML.ANOMALY_DETECTION [IF EXISTS] <name>;
Copy

매개 변수

name

삭제할 모델의 식별자를 지정합니다. 식별자에 공백, 특수 문자 또는 대/소문자가 혼합된 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

모델 식별자가 (db_name.schema_name.name 또는 schema_name.name 형식으로) 정규화되지 않은 경우 이 명령은 세션의 현재 스키마에서 모델을 찾습니다.

<name>!DETECT_ANOMALIES

메서드에 전달된 입력 데이터의 변칙을 검색하고 그에 대해 보고합니다. 이것은 CREATE SNOWFLAKE.ML.ANOMALY_DETECTION 명령을 실행하여 생성하는 변칙 검색기 오브젝트의 메서드입니다.

이 메서드는 입력 데이터의 각 행을 정상적인지 여부를 레이블로 표시해주는 테이블을 반환합니다.

구문

<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>' ]
)
Copy

참고

nameCREATE 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

FLOAT

0.99

변칙으로 표시해야 하는 관측값의 백분율을 지정하는 0과 1 사이의 값입니다.

  • 덜 엄격한 변칙 검색(즉, 변칙으로 표시된 더 적은 수의 관측값 식별)의 경우 더 높은 값을 지정합니다.

  • 더 엄격한 변칙 검색(즉, 더 많은 관측값을 변칙으로 식별)의 경우 이 값을 줄이십시오.

on_error

STRING

'ABORT'

변칙 검색 작업의 오류 처리를 지정하는 문자열(상수)입니다. 이는 여러 계열에서 변칙 검색 시 가장 유용합니다. 지원되는 값은 다음과 같습니다.

  • 'abort': 시계열에서 오류가 발생하면 작업을 중단합니다.

  • 'skip': 변칙 검색에 오류가 발생하는 시계열을 건너뜁니다. 이를 통해 다른 시계열에 대한 변칙 검색에 성공할 수 있습니다. 실패한 계열에서 출력에서 빠지게 됩니다.

출력

이 함수는 다음 열을 반환합니다.

열 이름

데이터 타입

설명

TS

TIMESTAMP_NTZ

데이터의 타임스탬프

Y

FLOAT

시계열의 값

FORECAST

FLOAT

타임스탬프의 예측 값입니다.

LOWER_BOUND

FLOAT

예측 구간 내 값의 하한입니다. 이보다 낮은 값은 변칙으로 플래그 지정됩니다.

UPPER_BOUND

FLOAT

예측 구간 내 값의 상한입니다. 이보다 높은 값은 변칙으로 플래그 지정됩니다.

IS_ANOMALY

BOOLEAN

값이 변칙이면 True이고 그렇지 않으면 False입니다.

PERCENTILE

FLOAT

예측 구간이 주어졌을 때 관찰된 Y 값의 해당 백분위수입니다.

백분위수가 ((1 - alpha) / 2, 1 - (1 - alpha) / 2) 를 벗어나면 값이 변칙으로 플래그 지정됩니다. 예를 들어 예측 구간이 0.95인 경우 0.96의 백분위수는 변칙이 아니지만 0.98의 백분위수는 변칙입니다.

prediction_interval 필드가 구성 오브젝트에 지정되지 않은 경우 기본값은 0.99입니다.

DISTANCE

FLOAT

FORECAST 열에서 가져온 표준 편차의 배수(z-점수)입니다.

사용법 노트

  • (INPUT_DATA 생성자 인자에서) CREATE SNOWFLAKE.ML.ANOMALY_DETECTION 명령에 지정된 데이터의 열은 이 데이터의 INPUT_DATA 인자에 지정된 데이터에 대한 열과 일치해야 합니다.

    예를 들어, SERIES_COLNAME 인자를 CREATE SNOWFLAKE.ML.ANOMALY_DETECTION 명령에 전달한 경우 SERIES_COLNAME 인자도 이 메서드에 전달해야 합니다. 명령에서 SERIES_COLNAME 인자를 생략했다면 여기서 해당 인자를 생략해야 합니다.

  • TIMESTAMP_COLNAME 또는 TARGET_COLNAME 인자로 지정된 열 이름이 INPUT_DATA 인자로 지정된 테이블, 뷰 또는 쿼리에 존재하지 않을 경우 오류가 발생합니다.

<name>!EXPLAIN_FEATURE_IMPORTANCE

모델에서 사용하는 각 특징의 상대적인 특징 중요도를 반환합니다.

구문

<name>!EXPLAIN_FEATURE_IMPORTANCE();
Copy

출력

타입

설명

SERIES

VARIANT

계열 값(모델이 다중 시계열로 학습된 경우에만 존재함)

RANK

INTEGER

특정 계열에 대한 특징의 중요도 순위

FEATURE_NAME

VARCHAR

모델 학습에 사용되는 특징의 이름입니다. aggregated_endogenous_features 는 대상 변수의 변환으로 파생된 모든 특징을 나타냅니다.

IMPORTANCE_SCORE

FLOAT

특징의 중요도 점수: [0, 1]의 값으로, 0은 가능한 가장 낮은 중요도이고 1은 가능한 가장 높은 중요도입니다.

FEATURE_TYPE

VARCHAR

특징의 원본으로, 다음 중 하나입니다.

  • user_provided

  • derived_from_timestamp

  • derived_from_endogenous

<name>!SHOW_TRAINING_LOGS

모델 학습에서 로그를 반환합니다. 학습 CONFIG_OBJECT'ON_ERROR' = 'SKIP' 이 설정된 경우에만 출력이NULL이 아닙니다.

구문

<name>!SHOW_TRAINING_LOGS();
Copy

출력

SERIES 열은 다중 계열 모델에만 존재합니다. 단일 계열 모델에는 이 열이 없습니다.

타입

설명

SERIES

VARIANT

계열 값입니다. 모델이 다중 시계열로 학습된 경우에만 존재합니다.

LOGS

OBJECT

학습 중에 발생한 오류의 로그입니다. 키 Errors 의 값은 학습 오류의 배열입니다. 오류가 발생하지 않은 경우 LOGS 열은 NULL입니다.

변칙 검색하기 섹션을 참조하십시오.