モデルを作成する
前提条件
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 data_type ] -- supported only for BYOM [ SAGEMAKER 'endpoint_name'[:'model_name']] -- supported only for BYOM remote inference 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 'amzn-s3-demo-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 MAX_BATCH_ROWS integer -- optional for BYOM remote inference ) ]
パラメータ
- 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 data_type
-
モデルの関数から返されるデータ型。返される
SUPER
データ型はリモート推論を使用する BYOM モデルにのみ適用されます。 - SAGEMAKER 'endpoint_name'[:'model_name']
-
Amazon SageMaker エンドポイントの名前。エンドポイント名がマルチモデルのエンドポイントを指している場合は、使用するモデルの名前を追加します。エンドポイントは、Amazon Redshift クラスターと同じ AWS リージョン 内でホストされる必要があります。
- IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>'}
-
デフォルトキーワードを使用して、CREATE 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 'amzn-s3-demo-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 'amzn-s3-demo-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 つの予測タイプを指定できます。
- MAX_BATCH_ROWS 整数
-
(オプション) Amazon Redshift が 1 回の SageMaker 呼び出しに対して 1 回のバッチリクエストで送信する最大行数。リモート推論を使用する BYOM でのみサポートされます。このパラメータの最小値は 1 です。最大値は
INT_MAX
または 2,147,483,647 です。このパラメータは、入力データ型と返されたデータ型の両方が SUPER である場合にのみ必要です。デフォルト値はINT_MAX
または 2,147,483,647 です。