ANOMALY_DETECTION

完全修飾名: SNOWFLAKE.ML.ANOMALY_DETECTION

異常検出により、機械学習アルゴリズムを使用して、時系列データの外れ値を検出することができます。 CREATE SNOWFLAKE.ML.ANOMALY_DETECTION を使用して、検出モデルを作成し、トレーニングして、 <モデル名>!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

モデルの名前

database_name

モデルが格納されているデータベース

schema_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 の形式)、コマンドは、セッションの現在のスキーマにあるモデルを探します。

使用上の注意

  • ドロップされたモデルは復元できません。再作成する必要があります。

<モデル名>!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_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 => 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スコア)

使用上の注意

  • CREATE SNOWFLAKE.ML.ANOMALY_DETECTION コマンド(INPUT_DATA コンストラクター引数)で指定されたデータの列は、このメソッドの INPUT_DATA 引数で指定されたデータの列と一致する必要があります。

    たとえば、 CREATE SNOWFLAKE.ML.ANOMALY_DETECTION コマンドに SERIES_COLNAME 引数を渡した場合は、このメソッドにも SERIES_COLNAME 引数を渡す必要があります。コマンドで SERIES_COLNAME 引数を省略した場合は、このメソッドを呼び出す際にもその引数を省略する必要があります。

  • TIMESTAMP_COLNAME または TARGET_COLNAME 引数で指定された列名が、 INPUT_DATA 引数で指定されたテーブル、ビュー、またはクエリに存在しない場合はエラーが発生します。

<モデル名>!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

特徴量のソース。以下のうちの1つです。

  • user_provided

  • derived_from_timestamp

  • derived_from_endogenous

異常の検出 をご参照ください。