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 関数によって返される一般的なエラーメッセージを記録します。これらのエラーログは、発生した問題のトラブルシューティングや、お客様により良いサービスを提供するための機能改善に役立ちます。
詳細については、 Snowflake AI の信頼と安全 FAQ をご参照ください。
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>' ]
パラメーター¶
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
'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>
}
]
パラメーター¶
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 |
モデルアルゴリズムのバージョン |
comment |
モデルのコメント |
owner |
モデルを所有するロールの名前 |
DROP SNOWFLAKE.ML.ANOMALY_DETECTION¶
指定されたモデルを現在のスキーマまたは指定されたスキーマから削除します。ドロップされたモデルは復元できません。再作成する必要があります。
構文¶
DROP SNOWFLAKE.ML.ANOMALY_DETECTION [IF EXISTS] <name>;
パラメーター¶
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>' ]
)
注釈
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'
: 異常検知でエラーが発生した時系列はスキップします。これにより、他の時系列でも異常検知を成功させることができます。失敗した系列は出力から除外されます。
出力¶
この関数は、次の列を返します。
列名 |
データ型 |
説明 |
---|---|---|
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 引数で指定されたデータの列と一致する必要があります。
たとえば、 CREATE SNOWFLAKE.ML.ANOMALY_DETECTION コマンドに SERIES_COLNAME 引数を渡した場合は、このメソッドにも SERIES_COLNAME 引数を渡す必要があります。コマンドで SERIES_COLNAME 引数を省略した場合は、ここでもその引数を省略する必要があります。
TIMESTAMP_COLNAME または TARGET_COLNAME 引数で指定された列名が、 INPUT_DATA 引数で指定されたテーブル、ビュー、またはクエリに存在しない場合はエラーが発生します。
<name>!EXPLAIN_FEATURE_IMPORTANCE¶
モデルが使用する各特徴量の相対的な特徴量の重要度を返します。
構文¶
<name>!EXPLAIN_FEATURE_IMPORTANCE();
出力¶
列 |
型 |
説明 |
---|---|---|
SERIES |
系列値(モデルが複数時系列でトレーニングされた場合のみ) |
|
RANK |
特定の系列に対する特徴量の重要度ランク |
|
FEATURE_NAME |
|
|
IMPORTANCE_SCORE |
特徴量の重要度スコア: [0, 1]の値で、0が最も低く、1が最も高い重要度。 |
|
FEATURE_TYPE |
特徴量のソース。以下のうちの1つです。
|
<name>!SHOW_TRAINING_LOGS¶
モデルトレーニングのログを返します。出力が NULL 以外になるのは、トレーニング CONFIG_OBJECT
で 'ON_ERROR' = 'SKIP'
が設定されたときのみです。
構文¶
<name>!SHOW_TRAINING_LOGS();
出力¶
SERIES 列は複数系列モデルにのみ存在します。単一系列モデルにはこの列はありません。
列 |
型 |
説明 |
---|---|---|
SERIES |
系列値。モデルが複数時系列でトレーニングされた場合のみ存在します。 |
|
LOGS |
トレーニング中に発生したエラーのログ。キー |
例¶
異常の検出 をご参照ください。