ANOMALY_DETECTION

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

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

CREATE SNOWFLAKE.ML.ANOMALY_DETECTION

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

구문

CREATE [ OR REPLACE ] SNOWFLAKE.ML.ANOMALY_DETECTION <name>(
  [ SERIES_COLNAME => '<series_column_name>' , ]
  INPUT_DATA => <reference_to_training_data>,
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  LABEL_COLNAME => '<label_column_name>'
)
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여야 합니다.

사용법 노트

  • 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

모델의 버전으로, 현재는 1임

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 형식으로) 정규화되지 않은 경우 이 명령은 세션의 현재 스키마에서 모델을 찾습니다.

사용법 노트

  • 삭제된 모델은 복구할 수 없으며, 다시 만들어야 합니다.

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

참고

model_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 => configuration_object

이 오브젝트에 대한 구성 설정을 지정하는 OBJECT 입니다.

오브젝트 상수 또는 OBJECT_CONSTRUCT 함수 중 하나를 사용하여 이 오브젝트를 생성할 수 있습니다.

이 오브젝트에서 다음 키와 값을 설정할 수 있습니다.

값에 대한 설명

'prediction_interval'

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

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

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

기본값: 0.99(데이터의 1%가 변칙으로 표시됨)

출력

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

열 이름

데이터 타입

설명

TS

TIMESTAMP_NTZ

데이터의 타임스탬프

Y

FLOAT

시계열의 값

FORECAST

FLOAT

타임스탬프의 예측 값

이 함수는 이러한 값을 사용하여 변칙적인 데이터 요소를 식별하는 예측 구간을 생성합니다.

LOWER_BOUND

FLOAT

예측 구간 내 값의 하한

이보다 낮은 값은 변칙으로 플래그 지정됩니다.

UPPER_BOUND

FLOAT

예측 구간 내 값의 상한

이보다 높은 값은 변칙으로 플래그 지정됩니다.

IS_ANOMALY

BOOLEAN

값이 변칙이면 True이고 그렇지 않으면 False임

PERCENTILE

FLOAT

Y 값에 대한 예측 구간의 해당 백분위수

백분위수가 ((1-prediction_interval)/2, (1-prediction_interval)/2 + prediction_interval을 벗어나면 값이 변칙으로 플래그 지정되지 않습니다.

prediction_interval 필드가 구성 오브젝트에 지정되지 않은 경우 기본 예측 구간은 0.99입니다. 예를 들어 백분위수가 0.96이고 예측 구간이 0.95인 경우 관찰된 값이 변칙으로 플래그 지정됩니다.

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 인자로 지정된 테이블, 뷰 또는 쿼리에 존재하지 않을 경우 오류가 발생합니다.

<model_name>!EXPLAIN_FEATURE_IMPORTANCE

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

구문

<model_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

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