モデルを作成する - Amazon Redshift

モデルを作成する

前提条件

CREATE MODEL ステートメントを使用する前に、Amazon Redshift ML を使用するためのクラスターの設定 の前提条件を満たしてください。前提条件の概要は次のとおりです。

  • AWS マネジメントコンソールまたは AWS Command Line Interface (AWS CLI) を使用して、Amazon Redshift クラスターを作成します。

  • クラスターの作成中に AWS Identity and Access Management (IAM) ポリシーをアタッチします。

  • Amazon Redshift と SageMaker が、他のサービスとやり取りするロールを引き受けることを許可するには、IAM ロールに適切な信頼ポリシーを追加します。

IAM ロール、信頼ポリシー、およびその他の前提条件の詳細については、「Amazon Redshift ML を使用するためのクラスターの設定」を参照してください。

以下では、CREATE MODEL ステートメントのさまざまなユースケースを見つけることができます。

必要な権限

CREATE MODEL に必要な権限を以下に示します。

  • スーパーユーザー

  • CREATE MODEL の権限を持つユーザー

  • GRANT CREATE MODEL の権限を持つロール

コスト管理

Amazon Redshift 機械学習は既存のクラスターリソースを使用して予測モデルを作成するため、追加料金は発生しません。ただし、クラスターのサイズを変更する必要がある場合、またはモデルをトレーニングする場合は、追加料金が発生する可能性があります。Amazon Redshift 機械学習は、モデルのトレーニングに Amazon SageMaker を使用します。これには追加費用がかかります。トレーニングにかかる最大時間を制限したり、モデルのトレーニングに使用するトレーニング例の数を制限したりするなど、追加料金を管理する方法があります。詳細については、「Amazon Redshift 機械学習を使用するためのコスト」を参照してください。

フル CREATE MODEL

以下に、完全な CREATE MODEL 構文の基本的なオプションをまとめます。

フル CREATE MODEL 構文

以下は、CREATE MODEL ステートメントの完全な構文です。

重要

CREATE MODEL ステートメントを使用してモデルを作成する場合は、次の構文内のキーワードの順序に従います。

CREATE MODEL model_name FROM { table_name | ( select_statement ) | 'job_name' } [ TARGET column_name ] FUNCTION function_name ( data_type [, ...] ) [ RETURNS super ] IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' } [ AUTO ON / OFF ] -- default is AUTO ON [ MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER | KMEANS | FORECAST } ] -- not required for non AUTO OFF case, default is the list of all supported types -- required for AUTO OFF [ PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION ) ] -- not supported when AUTO OFF [ OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1_Macro' | 'AUC' | 'reg:squarederror' | 'reg:squaredlogerror'| 'reg:logistic'| 'reg:pseudohubererror' | 'reg:tweedie' | 'binary:logistic' | 'binary:hinge', 'multi:softmax' | 'RMSE' | 'WAPE' | 'MAPE' | 'MASE' | 'AverageWeightedQuantileLoss' ) ] -- for AUTO ON: first 5 are valid -- for AUTO OFF: 6-13 are valid -- for FORECAST: 14-18 are valid [ PREPROCESSORS 'string' ] -- required for AUTO OFF, when it has to be 'none' -- optional for AUTO ON [ HYPERPARAMETERS { DEFAULT | DEFAULT EXCEPT ( Key 'value' (,...) ) } ] -- support XGBoost hyperparameters, except OBJECTIVE -- required and only allowed for AUTO OFF -- default NUM_ROUND is 100 -- NUM_CLASS is required if objective is multi:softmax (only possible for AUTO OFF) [ SETTINGS ( S3_BUCKET 'bucket', | -- required TAGS 'string', | -- optional KMS_KEY_ID 'kms_string', | -- optional S3_GARBAGE_COLLECT on / off, | -- optional, defualt is on. MAX_CELLS integer, | -- optional, default is 1,000,000 MAX_RUNTIME integer (, ...) | -- optional, default is 5400 (1.5 hours) HORIZON integer, | -- required if creating a forecast model FREQUENCY integer, | -- required if creating a forecast model PERCENTILES string -- optional if creating a forecast model ) ]

パラメータ

model_name

モデルの名前です。スキーマ内のモデル名は一意でなければなりません。

FROM { table_name | ( select_query ) | 'job_name'}

table_name またはトレーニングデータを指定するクエリ。これらは、システム内の既存のテーブル、または丸括弧で囲まれた Amazon RedShift 互換の SELECT クエリ、つまり () のいずれかです。クエリ結果には少なくとも 2 つの列が必要です。

TARGET column_name

予測対象となる列の名前。列は、FROM 句内に存在する必要があります。

FUNCTION function_name ( data_type [, ...] )

作成する関数の名前と、入力引数のデータ型。関数名の代わりに、データベース内のスキーマのスキーマ名を指定できます。

RETURNS SUPER (プレビュー)

モデルから返されるデータの型。返される SUPER データ型はリモート BYOM モデルにのみ適用されます。

IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' }

デフォルトキーワードを使用して、CREAT MODEL コマンドの実行時にデフォルトとして設定され、クラスターに関連付けられた IAM ロールの使用を、Amazon Redshift に指示します。または、IAM ロールの ARN を指定して、そのロールを使用することもできます。

[ AUTO ON / OFF ]

プリプロセッサ、アルゴリズム、およびハイパーパラメータの選択での、CREATE MODEL による自動検出をオンまたはオフにします。予測モデルを作成するときに on を指定すると、AutoPredictor を使用することを示します。ここで、Amazon Forecast は、データセット内の各時系列に最適なアルゴリズムの組み合わせを適用します。

MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER | KMEANS | FORECAST }

(オプション) モデルタイプを指定します。XGBoost、多層パーセプトロン (MLP)、KMEANS、線形学習など (すべては Amazon SageMaker Autopilot でサポートされているアルゴリズム)、特定のモデルタイプのモデルをトレーニングするかを指定できます。パラメータを指定しない場合、トレーニング中にサポートされているすべてのモデルタイプが最適なモデルを検索します。Redshift ML で予測モデルを作成して、正確な時系列予測を作成することもできます。

PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION )

(オプション) 問題の種類を指定します。問題の種類がわかっている場合は、Amazon Redshift をその特定のモデルタイプの最適なモデルだけを検索するように制限できます。このパラメータを指定しない場合、トレーニング中にデータに基づく問題の種類が検出されます。

OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro' | 'AUC' | 'reg:squarederror' | 'reg:squaredlogerror' | 'reg:logistic' | 'reg:pseudohubererror' | 'reg:tweedie' | 'binary:logistic' | 'binary:hinge' | 'multi:softmax' | 'RMSE' | 'WAPE' | 'MAPE' | 'MASE' | 'AverageWeightedQuantileLoss' )

(オプション) 機械学習システムの予測品質を測定するために使用する目標メトリクスの名前を指定します。このメトリクスは、トレーニング中に最適化され、データからモデルパラメータ値の最良の推定値を提供します。メトリクスを明示的に指定しない場合、デフォルトの動作では、MSE が回帰に、F1 がバイナリ分類に、精度がマルチクラス分類に自動的に使用されます。目標の詳細については、Amazon SageMaker API リファレンスの「AutoMLJobObjective」および XGBOOST ドキュメントの「Learning task parameters」を参照してください。RMSE、WAPE、MAPE、MASE、および AverageWeightedQuantileLoss の値は、予測モデルにのみ適用されます。詳細については、CreateAutoPredictor API オペレーションを参照してください。

PREPROCESSORS 'string'

(オプション) 特定の列セットに対するプリプロセッサの特定の組み合わせを指定します。形式は、columnSets のリストであり、各列のセットに適用される適切な変換です。Amazon Redshift は、特定のトランスフォーマのリスト内にあるすべてのトランスフォーマを対応する ColumnSet 内のすべての列に適用します。例えば、Imputer を使用した OneHotEncoder を列 t1 と t2 に適用するには、次のサンプルコマンドを使用します。

CREATE MODEL customer_churn FROM customer_data TARGET 'Churn' FUNCTION predict_churn IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' } PROBLEM_TYPE BINARY_CLASSIFICATION OBJECTIVE 'F1' PREPROCESSORS '[ ... {"ColumnSet": [ "t1", "t2" ], "Transformers": [ "OneHotEncoder", "Imputer" ] }, {"ColumnSet": [ "t3" ], "Transformers": [ "OneHotEncoder" ] }, {"ColumnSet": [ "temp" ], "Transformers": [ "Imputer", "NumericPassthrough" ] } ]' SETTINGS ( S3_BUCKET 'bucket' )
HYPERPARAMETERS { DEFAULT | DEFAULT EXCEPT ( key ‘value’ (,..) ) }

デフォルトの XGBoost パラメータを使用するか、それをユーザー指定の値で上書きするかを指定します。値は一重引用符で囲む必要があります。以下に、XGBoost のパラメータとそのデフォルトの例を示します。

パラメータ名 パラメータ値 デフォルト値 コメント

num_class

整数

マルチクラス分類に必須です。

該当なし

num_round

整数

100

該当なし

tree_method

文字列 Auto 該当なし

max_depth

整数 6 [0 , 10]
min_child_weight 浮動小数点 1 MinValue: 0、MaxValue: 120
subsample 浮動小数点 1 MinValue: 0.5、MaxValue: 1
gamma 浮動小数点 0 MinValue: 0、MaxValue: 5
alpha 浮動小数点 0 MinValue: 0、MaxValue: 1000
eta 浮動小数点 0.3 MinValue: 0.1、MaxValue: 0.5
colsample_byleve 浮動小数点 1 MinValue: 0.1、MaxValue: 1
colsample_bynode 浮動小数点 1 MinValue: 0.1、MaxValue: 1
colsample_bytree 浮動小数点 1 MinValue: 0.5、MaxValue: 1
lambda 浮動小数点 1 MinValue: 0、MaxValue: 1000
max_delta_step 整数 0 [0, 10]
SETTINGS ( S3_BUCKET 'bucket', | TAGS 'string', | KMS_KEY_ID 'kms_string' , | S3_GARBAGE_COLLECT on / off, | MAX_CELLS integer , | MAX_RUNTIME (,...) , | HORIZON integer, | FREQUENCY forecast_frequency, | PERCENTILES array of strings )

S3_BUCKET 句は、中間結果の保存に使用される Amazon S3 の場所を指定します。

(オプション) TAGS パラメータは、キーと値のペアをカンマで区切ったリストで、Amazon SageMaker および Amazon Forecast で作成されたリソースにタグを付けるために使用できます。タグを使用すると、リソースの整理やコストの割り当てに役立ちます。ペアの値はオプションであるため、key=value 形式を使用するか、単にキーを作成するだけで、タグを作成できます。Amazon Redshift のタグの詳細については、「タグ付けの概要」を参照してください。

(オプション) KMS_KEY_ID は、Amazon Redshift が AWS KMS キーを使用したサーバー側の暗号化を使用して、保管中のデータを保護するかどうかを指定します。転送中のデータは Secure Sockets Layer (SSL) で保護されています。

(オプション) S3_GARBAGE_COLLECT { ON | OFF } は、Amazon Redshift がモデルのトレーニングに使用される結果のデータセットに対してガベージコレクションを実行するかどうかを指定します。OFF に設定すると、モデルとモデルのトレーニングに使用される結果のデータセットは Amazon S3 に残り、他の目的に使用できます。ON に設定すると、Amazon Redshift はトレーニングの完了後に Amazon S3 内のアーティファクトを削除します。デフォルトはオンです。

(オプション) MAX_CELLS は、トレーニングデータのセル数を指定します。この値は、(トレーニングクエリまたはテーブル内の) レコード数と列数の積です。デフォルトは 1,000,000 です。

(オプション) MAX_RUNTIME は、トレーニングする最大時間を指定します。トレーニングジョブは、データセットのサイズに応じてより早く完了することがよくあります。これは、トレーニングにかかる最大時間を指定します。デフォルトは 5,400 (90 分) です。

HORIZON は、予測モデルが返すことができる予測の最大数を指定します。モデルのトレーニングが完了すると、この整数は変更できません。このパラメータは、予測モデルをトレーニングする場合に必要です。

FREQUENCY は、予測の詳細度を時間単位で指定します。使用できるオプションは、Y | M | W | D | H | 30min | 15min | 10min | 5min | 1min です。このパラメータは、予測モデルをトレーニングする場合に必要です。

(オプション) PERCENTILES は、予測子のトレーニングに使用される予測タイプを指定するカンマ区切り文字列です。予測タイプは、0.01 以上の増分で 0.01 から 0.99 までの分位数にすることができます。mean で平均予測を指定することもできます。最大 5 つの予測タイプを指定できます。