CREATE SNOWFLAKE.ML.ANOMALY_DETECTION

提供されたトレーニングデータを使用して、新しい異常検出モデルを作成するか、既存のモデルを置き換えます。

構文

CREATE [ OR REPLACE ] SNOWFLAKE.ML.ANOMALY_DETECTION <model_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

パラメーター

model_name

異常検出オブジェクトの識別子(モデル名)を指定します。オブジェクトが作成されるスキーマに対して一意にする必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。

コンストラクター引数

必須:

INPUT_DATA => reference_to_training_data

モデルのトレーニングデータを返すテーブル、ビュー、クエリへの 参照 を指定します。

この参照を作成するには、 TABLE キーワード をテーブル名、ビュー名、クエリと共に使用するか、 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

キー

デフォルト

説明

aggregation_categorical

STRING

'MODE'

カテゴリ特徴量の集計方法。サポートされる値は次のとおりです。

  • 'MODE': 最も頻度の高い値。

  • 'FIRST': 最も古い値。

  • 'LAST': 最も新しい値。

aggregation_numeric

STRING

'MEAN'

数値特徴量の集計方法。サポートされる値は次のとおりです。

  • 'MEAN': 平均値。

  • 'MEDIAN': 中間値。

  • MODE: 最も頻度の高い値。

  • 'MIN': 最も小さい値。

  • 'MAX': 最も大きい値。

  • 'SUM': 合計値。

  • 'FIRST': 最も古い値。

  • 'LAST': 最も新しい値。

aggregation_target

STRING

指定がない場合は aggregation_numeric、 または 'MEAN' と同じ。

目標値の集計方法。サポートされる値は次のとおりです。

  • 'MEAN': 平均値。

  • 'MEDIAN': 中間値。

  • MODE: 最も頻度の高い値。

  • 'MIN': 最も小さい値。

  • 'MAX': 最も大きい値。

  • 'SUM': 合計値。

  • 'FIRST': 最も古い値。

  • 'LAST': 最も新しい値。

evaluate

BOOLEAN

TRUE

評価メトリクスを生成すべきかどうか。TRUE の場合は、 evaluation_config のパラメーターを使用して、交差検証用の追加モデルがトレーニングされます。

evaluation_config

OBJECT

評価構成 をご参照ください。

サンプル外評価メトリクスを生成する方法を指定するオプションの構成オブジェクト。次のセクションをご参照ください。

frequency

STRING

なし

時系列の頻度。指定がない場合は、モデルが頻度を推測します。値は '1 day' などの、期間を表す文字列でなければなりません。サポートされる単位は、seconds、minutes、hours、days、weeks、months、quarters、およびyearsです。単数形("hour")でも複数形("hours")でもかまいませんが、省略形は使用できません。

on_error

STRING

'ABORT'

トレーニングのエラー処理メソッドを指定する文字列(定数)。これは、複数の系列をトレーニングする場合に最も役に立ちます。サポートされる値は次のとおりです。

  • 'abort': いずれかの時系列でエラーが発生した場合、トレーニングを中断します。

  • 'skip': トレーニングでエラーが発生した時系列はスキップします。これにより、他の時系列でもトレーニングを成功させることができます。モデルのトレーニング中にどの系列が失敗したかを確認するには、モデルの <モデル名>!SHOW_TRAINING_LOGS メソッドを呼び出します。

評価構成

evaluation_config オブジェクトには、クロスバリデーションを構成するキーと値のペアが含まれています。これらのパラメーターは、scikit-learn TimeSeriesSplit クロスバリデーターからのものです。

キー

デフォルト

説明

n_splits

INTEGER

5

スプリットの数。

max_train_size

INTEGER またはNULL(最大値なし)。

NULL

単一トレーニングセットの最大サイズ。

test_size

INTEGER または NULL。

NULL

テストセットのサイズを制限するために使用。

gap

INTEGER

0

テストセットの前に各トレーニングセットの最後から除外するサンプル数。

prediction_interval

FLOAT

0.95

間隔メトリクスの計算に使用される予測区間。

使用上の注意

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

  • レプリケーション は、 CUSTOM_CLASSIFIER クラスのインスタンス以外のクラスインスタンスではサポートされません。

代表的な例については、 異常検出の例 をご参照ください。