FORECAST¶
完全修飾名: SNOWFLAKE.ML.FORECAST
予測モデルは、単一または複数の時系列の予測を作成します。 CREATE SNOWFLAKE.ML.FORECAST を使用し、予測モデルを作成してトレーニングした後で、モデルの <name>!FORECAST メソッドを使用して予測を作成します。 <name>!EXPLAIN_FEATURE_IMPORTANCE メソッドは、トレーニングデータの各特徴量が予測にどのように影響するかについての情報を提供します。 <name>!SHOW_TRAINING_LOGS メソッドは、モデルの適合に失敗した時系列のエラーメッセージを提供します。 例 メソッドは、サンプル外のデータに対する評価メトリクスを提供します。
重要
法律上の注意点。 このSnowflake Cortex ML ベースの機能は、機械学習技術によって実現されています。機械学習技術と提供される結果は、不正確、不適切であったり、偏っていたりする可能性があります。自動パイプラインに組み込まれたものも含め、機械学習の出力に基づく決定には、モデルが生成したコンテンツが正確であることを保証するために、人間によるモニタリングとレビュープロセスが必要です。Snowflake Cortexの ML ベースの関数クエリは、他の SQL クエリと同様に扱われ、 メタデータ と見なされる可能性があります。
メタデータ。 Snowflake Cortex ML ベース関数を使用する場合、Snowflakeのログは メタデータフィールド に述べられている内容に加えて、 ML 関数によって返される一般的なエラーメッセージを記録します。これらのエラーログは、発生した問題のトラブルシューティングや、お客様により良いサービスを提供するための機能改善に役立ちます。
詳細については、 Snowflake AI の信頼と安全 FAQ をご参照ください。
CREATE SNOWFLAKE.ML.FORECAST¶
提供するトレーニングデータから新しい予測モデルを作成するか、同名の予測モデルを置き換えます。
構文¶
CREATE [ OR REPLACE ] SNOWFLAKE.ML.FORECAST [ IF NOT EXISTS ] <name>(
INPUT_DATA => <input_data>,
[ SERIES_COLNAME => '<series_colname>', ]
TIMESTAMP_COLNAME => '<timestamp_colname>',
TARGET_COLNAME => '<target_colname>',
[ CONFIG_OBJECT => <config_object> ]
)
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
注釈
名前付き引数を使用すると引数の順序が関係なくなり、読みやすいコードになります。ただし、次の例のように位置引数を使うこともできます。
CREATE SNOWFLAKE.ML.FORECAST <name>(
'<input_data>', '<series_colname>', '<timestamp_colname>', '<target_colname>'
);
パラメーター¶
name
モデルの識別子を指定します。これは、モデルが作成されるスキーマに対して一意にする必要があります。
モデル識別子が完全修飾されていない場合(
db_name.schema_name.name
またはschema_name.name
の形式)、コマンドは、セッションの現在のスキーマにモデルを作成します。また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
コンストラクター引数¶
必須:
INPUT_DATA => input_data
入力データへの 参照。参照を使用すると、制限付き権限で実行されるトレーニングプロセスで、ご自身の権限を使用してデータにアクセスできるようになります。データがすでにそのような形式になっている場合は、テーブルまたはビューへの参照を使用できます。または、 クエリ参照 を使用して、データを取得するために実行するクエリを指定することもできます。
参照されるデータは、予測モデルによって消費されるトレーニングデータ全体です。
input_data
に、timestamp_colname
、target_colname
、またはseries_colname
という名前以外の列が含まれている場合、それらは外生変数(追加特徴量)とみなされます。入力データの列の順番は重要ではありません。入力データには、ユースケースに適した型の列が必要です。各ユースケースの詳細については、 例 をご参照ください。
ユースケース
列および型
単一時系列
タイムスタンプ列: TIMESTAMP_NTZ。
ターゲット値列: FLOAT。
複数時系列
系列の列: 数値とテキストを含む VARIANT。
タイムスタンプ列: TIMESTAMP_NTZ。
ターゲット値列: FLOAT。
外生変数を含む単一時系列
タイムスタンプ列: TIMESTAMP_NTZ。
ターゲット値列: FLOAT。
外生変数を含む複数時系列
系列の列: 数値とテキストを含む VARIANT。
タイムスタンプ列: TIMESTAMP_NTZ。
ターゲット値列: FLOAT。
TIMESTAMP_COLNAME => 'timestamp_colname'
input_data
でタイムスタンプを含む列の名前。TARGET_COLNAME => 'target_colname'
input_data
でターゲット(依存値)を含む列の名前。
オプション:
SERIES_COLNAME => 'series_colname'
複数時系列モデルの場合は、
input_data
内の複数時系列を定義する列の名前。この列は、 複数系列の予測 に示すように、1つ以上の異なる列からの任意の型による値または値の配列にすることができます。位置的に引数を提供する場合、これは 2番目 の引数にする必要があります。
CONFIG_OBJECT => config_object
モデルトレーニングジョブの構成に使用されるキーと値のペアを含む OBJECT。
キー
型
デフォルト
説明
on_error
'ABORT'
モデルトレーニングタスクのエラー処理メソッドを指定する文字列(定数)。これは、複数の系列をトレーニングする場合に最も役に立ちます。サポートされる値は次のとおりです。
'abort'
: いずれかの時系列でエラーが発生した場合、トレーニング操作を中止します。'skip'
: トレーニングでエラーが発生した時系列はスキップします。これにより、他の時系列でもモデルトレーニングを成功させることができます。どの系列が失敗したかを確認するには、モデルの <name>!SHOW_TRAINING_LOGS メソッドを使用します。
evaluate
TRUE
評価メトリクスを生成すべきかどうか。TRUE の場合、
evaluation_config
のパラメーターを使用して、クロスバリデーション用の追加モデルがトレーニングされます。evaluation_config
以下の 評価構成 をご参照ください。
サンプル外評価メトリクスを生成する方法を指定するオプションの構成オブジェクト。
評価構成¶
evaluation_config
オブジェクトには、クロスバリデーションを構成するキーと値のペアが含まれています。これらのパラメーターは、scikit-learnの TimeSeriesSplit に由来します。
使用上の注意¶
クラスインスタンスの 複製 は現在サポートされていません。
SHOW SNOWFLAKE.ML.FORECAST¶
すべての予測モデルをリストします。
構文¶
SHOW SNOWFLAKE.ML.FORECAST [ 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.FORECAST¶
指定されたモデルを現在のスキーマまたは指定されたスキーマから削除します。ドロップされたモデルは復元できません。再作成する必要があります。
構文¶
DROP SNOWFLAKE.ML.FORECAST [ IF EXISTS ] <name>;
パラメーター¶
name
ドロップするモデルの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
モデル識別子が完全修飾されていない場合(
db_name.schema_name.name
またはschema_name.name
の形式)、コマンドは、セッションの現在のスキーマにあるモデルを探します。
<name>!FORECAST¶
以前に学習したモデル name
から予測を生成します。
構文¶
必要な引数は、モデルがどのようなユースケースに対してトレーニングされたかによって異なります。
外生変数なしの単一系列モデルの場合:
<name>!FORECAST(
FORECASTING_PERIODS => <forecasting_periods>,
[ CONFIG_OBJECT => <config_object> ]
);
外生変数ありの単一系列モデルの場合:
<name>!FORECAST(
INPUT_DATA => <input_data>,
TIMESTAMP_COLNAME => '<timestamp_colname>',
[ CONFIG_OBJECT => <config_object> ]
);
外生変数なしの複数系列モデルの場合:
<name>!FORECAST(
SERIES_VALUE => <series>,
FORECASTING_PERIODS => <forecasting_periods>,
[ CONFIG_OBJECT => <config_object> ]
);
外生変数ありの複数系列モデルの場合:
<name>!FORECAST(
SERIES_VALUE => <series>,
SERIES_COLNAME => <series_colname>,
INPUT_DATA => <input_data>,
TIMESTAMP_COLNAME => '<timestamp_colname>',
[ CONFIG_OBJECT => <config_object> ]
);
引数¶
必須:
以下の引数のすべてが、すべてのユースケースに必要なわけではありません。
FORECASTING_PERIODS => forecasting_periods
外生変数なしの予測に必要。
予測に先立つステップの数。ステップとステップの間隔は、トレーニング中にモデルによって推測されます。
INPUT_DATA => input_data
外生変数ありの予測に必要。
モデルのトレーニング時に
input_data
として渡された、外生変数(ユーザーが提供する追加特徴量)の将来のタイムスタンプと値を含むテーブル、ビュー、クエリへの 参照。参照を使用すると、制限付き権限で実行される予測プロセスで、ご自身の権限を使用してデータにアクセスできるようになります。列はこの引数と元の外生トレーニングデータとの間で名前によってマッチングされます。TIMESTAMP_COLNAME => 'timestamp_colname'
外生変数ありの予測に必要。
タイムスタンプを含む
input_data
の列の名前。SERIES_COLNAME => 'series_colname'
外生変数ありの複数系列の予測に必要。
系列を指定する
input_data
の列の名前。SERIES_VALUE => series
複数系列の予測に必要。
予測する時系列。単一値(例:
'Series A'::variant
)でも VARIANT でもかまいませんが、モデルをトレーニングした系列を指定する必要があります。指定しない場合は、すべてのトレーニング済み系列が予測されます。
オプション:
CONFIG_OBJECT => config_object
予測ジョブの構成に使用されるキーと値のペアを含む OBJECT。
キー
型
デフォルト
説明
prediction_interval
0.95
0.0以上および1.0未満の値。デフォルト値は0.95で、将来のポイントの95%が予測結果から区間 [lower_bound, upper_bound] 内に収まると予測されることを意味します。
on_error
'ABORT'
エラー処理メソッドを指定する文字列(定数)。これは、複数の系列を予測する場合に最も役に立ちます。サポートされる値は次のとおりです。
'abort'
: いずれかの時系列でエラーが発生した場合、モデル予測操作を中止します。'skip'
: 予測でエラーが発生した時系列はスキップします。これにより、他の時系列でも予測を成功させることができます。失敗した系列はモデル出力から除外されます。
出力¶
SERIES 列は複数系列の予測にのみ存在します。単一系列の予測にはこの列はありません。
列 |
型 |
説明 |
---|---|---|
SERIES |
系列値(モデルが複数時系列でトレーニングされた場合) |
|
TS |
タイムスタンプ。 |
|
FORECAST |
予想ターゲット値。 |
|
LOWER_BOUND |
予測区間の下限。 |
|
UPPER_BOUND |
予測区間の上限。 |
<name>!EXPLAIN_FEATURE_IMPORTANCE¶
モデルが使用する各特徴量の相対的な特徴量の重要度を返します。
構文¶
<name>!EXPLAIN_FEATURE_IMPORTANCE();
出力¶
SERIES 列は複数系列の予測にのみ存在します。単一系列の予測にはこの列はありません。
列 |
型 |
説明 |
---|---|---|
SERIES |
系列値(モデルが複数時系列でトレーニングされた場合) |
|
RANK |
特定の系列に対する特徴量の重要度ランク。 |
|
FEATURE_NAME |
モデル |
|
IMPORTANCE_SCORE |
特徴量の重要度スコア: [0, 1]の値で、0が最も低く、1が最も高い重要度。 |
|
FEATURE_TYPE |
特徴量のソース。次のいずれか:
|
<name>!SHOW_EVALUATION_METRICS¶
時系列クロスバリデーションを使用して生成されたサンプル外の評価メトリクスを返します。メトリックスは、モデル構築中に CONFIG_OBJECT
に evaluate=TRUE
が表示された場合のみ利用可能です(これがデフォルトです)。
構文¶
<name>!SHOW_EVALUATION_METRICS();
出力¶
SERIES 列は複数系列の予測にのみ存在します。単一系列の予測にはこの列はありません。
列 |
型 |
説明 |
---|---|---|
SERIES |
系列値(モデルが複数時系列でトレーニングされた場合のみ) |
|
ERROR_METRIC |
使用されるエラーメトリクスの名前。このメソッドは、次のメトリクスを返します。 ポイントメトリクス:
間隔メトリクス: これらのメトリクスは 評価構成 の
|
|
LOGS |
エラーまたは警告メッセージが含まれます。 |
<name>!SHOW_TRAINING_LOGS¶
モデルトレーニングのログを返します。出力が NULL 以外になるのは、トレーニング CONFIG_OBJECT
で 'ON_ERROR' = 'SKIP'
が設定されたときのみです。それ以外の場合、モデル全体のトレーニングが失敗します。
構文¶
<name>!SHOW_TRAINING_LOGS();
出力¶
SERIES 列は複数系列モデルにのみ存在します。単一系列モデルにはこの列はありません。
列 |
型 |
説明 |
---|---|---|
SERIES |
系列値(モデルが複数時系列でトレーニングされた場合) |
|
LOGS |
トレーニング中に発生したエラーを含むオブジェクト。現在、唯一のキーはエラーの配列である |
例¶
例 をご参照ください。