

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# モデルを作成する
<a name="r_CREATE_MODEL"></a>

**Topics**
+ [前提条件](#r_create_model_prereqs)
+ [必要な権限](#r_simple_create_model-privileges)
+ [コスト管理](#r_create_model_cost)
+ [フル CREATE MODEL](#r_full_create_model)
+ [パラメータ](#r_create_model_parameters)
+ [使用に関する注意事項](r_create_model_usage_notes.md)
+ [ユースケース](r_create_model_use_cases.md)

## 前提条件
<a name="r_create_model_prereqs"></a>

CREATE MODEL ステートメントを使用する前に、[Amazon Redshift ML を使用するためのクラスターの設定](getting-started-machine-learning.md#cluster-setup) の前提条件を満たしてください。前提条件の概要は次のとおりです。
+ AWS マネジメントコンソールまたは AWS Command Line Interface (AWS CLI) を使用して、Amazon Redshift クラスターを作成します。
+ クラスターの作成中に AWS Identity and Access Management (IAM) ポリシーをアタッチします。
+ Amazon Redshift と SageMaker AI がロールを引き受けて他のサービスとやり取りできるようにするには、その IAM ロールに適切な信頼ポリシーを追加します。

IAM ロール、信頼ポリシー、およびその他の前提条件の詳細については、「[Amazon Redshift ML を使用するためのクラスターの設定](getting-started-machine-learning.md#cluster-setup)」を参照してください。

以下では、CREATE MODEL ステートメントのさまざまなユースケースを見つけることができます。
+ [単純な CREATE MODEL](r_create_model_use_cases.md#r_simple_create_model)
+ [ユーザーガイダンス付きの CREATE MODEL](r_create_model_use_cases.md#r_user_guidance_create_model)
+ [AUTO OFF 付きの CREATE XGBoost モデル](r_create_model_use_cases.md#r_auto_off_create_model)
+ [独自のモデルを持参 (BYOM) - ローカル推論](r_create_model_use_cases.md#r_byom_create_model)
+ [独自のモデルを持参 (BYOM) - リモート推論](r_create_model_use_cases.md#r_byom_create_model_remote)
+ [K-MEANS を使用した CREATE MODEL](r_create_model_use_cases.md#r_k-means_create_model)
+ [フル CREATE MODEL](#r_full_create_model)

## 必要な権限
<a name="r_simple_create_model-privileges"></a>

CREATE MODEL に必要な権限を以下に示します。
+ スーパーユーザー
+ CREATE MODEL の権限を持つユーザー
+ GRANT CREATE MODEL の権限を持つロール

## コスト管理
<a name="r_create_model_cost"></a>

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

## フル CREATE MODEL
<a name="r_full_create_model"></a>

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

### フル CREATE MODEL 構文
<a name="r_auto_off-create-model-synposis"></a>

以下は、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
    ) ]
```

## パラメータ
<a name="r_create_model_parameters"></a>

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 AI エンドポイントの名前。エンドポイント名がマルチモデルのエンドポイントを指している場合は、使用するモデルの名前を追加します。エンドポイントは、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 AI 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 AI API リファレンス*」の「[AutoMLJobObjective](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobObjective.html)」および XGBOOST ドキュメントの「[Learning task parameters](https://xgboost.readthedocs.io/en/latest/parameter.html#learning-task-parameters)」を参照してください。RMSE、WAPE、MAPE、MASE、および AverageWeightedQuantileLoss の値は、予測モデルにのみ適用されます。詳細については、[CreateAutoPredictor](https://docs.aws.amazon.com/forecast/latest/dg/API_CreateAutoPredictor.html#forecast-CreateAutoPredictor-request-OptimizationMetric) 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 のパラメータとそのデフォルトの例を示します。      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_CREATE_MODEL.html)

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 AI および Amazon Forecast で作成されたリソースへのタグ付けに使用できるキーと値のペアを、カンマ区切りのリストで指定します。タグを使用すると、リソースの整理やコストの割り当てに役立ちます。ペアの値はオプションであるため、`key=value` 形式を使用するか、単にキーを作成するだけで、タグを作成できます。Amazon Redshift のタグの詳細については、「[タグ付けの概要](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-tagging.html)」を参照してください。  
(オプション) 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 AI 呼び出しに対して 1 回のバッチリクエストで送信する最大行数。リモート推論を使用する BYOM でのみサポートされます。このパラメータの最小値は 1 です。最大値は `INT_MAX` または 2,147,483,647 です。このパラメータは、入力データ型と返されたデータ型の両方が *SUPER* である場合にのみ必要です。デフォルト値は `INT_MAX` または 2,147,483,647 です。