ユースケース - Amazon Redshift

ユースケース

次のユースケースは、ニーズに合わせて CREATE MODEL を使用する方法を示しています。

単純な CREATE MODEL

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

単純な CREATE MODEL 構文

CREATE MODEL model_name FROM { table_name | ( select_query ) } TARGET column_name FUNCTION prediction_function_name IAM_ROLE { default } SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', [ MAX_CELLS integer ] )

単純な CREATE MODEL パラメータ

model_name

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

FROM { table_name | ( select_query ) }

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

TARGET column_name

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

FUNCTION prediction_function_name

CREATE MODEL によって生成され、このモデルを使用して予測を行うために使用される Amazon Redshift 機械学習関数の名前を指定する値。この関数は、モデルオブジェクトと同じスキーマで作成され、オーバーロードされる可能性があります。

Amazon Redshift の機械学習では、回帰および分類用の Xtreme Gradient Boosted ツリー (XgBoost) モデルなどのモデルがサポートされています。

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

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

S3_BUCKET 'amzn-s3-demo-bucket'

以前に作成した Amazon S3 バケットの名前は、Amazon Redshift と SageMaker の間でトレーニングデータとアーティファクトを共有するために使用されていました。Amazon Redshift は、トレーニングデータをアンロードする前に、このバケットにサブフォルダを作成します。トレーニングが完了すると、Amazon Redshift は作成したサブフォルダとその内容を削除します。

MAX_CELLS 整数

FROM 句からエクスポートするセルの最大数。デフォルトは 1,000,000 です。

セル数は、トレーニングデータ (FROM 句のテーブルまたはクエリによって生成される) の行数と列数を掛けた積です。トレーニングデータのセル数が max_cells パラメータで指定された数よりも多い場合、CREATE MODEL は FROM 句のトレーニングデータをダウンサンプリングして、トレーニングセットのサイズを MAX_CELLS 未満に減らします。大規模なトレーニングデータセットを許可すると、精度が高くなる可能性がありますが、モデルのトレーニングに時間がかかり、コストも高くなる可能性があります。

Amazon Redshift の使用コストについては、「Amazon Redshift 機械学習を使用するためのコスト」を参照してください。

さまざまなセル番号に関連するコストと無料トライアルの詳細については、Amazon Redshift の料金を参照してください。

ユーザーガイダンス付きの CREATE MODEL

以下に、単純な CREATE MODEL で説明されているオプションに加えて、CREATE MODEL オプションの説明を示します。

デフォルトでは、CREATE MODEL は特定のデータセットの前処理とモデルの最適な組み合わせを検索します。モデルに対して追加の制御が必要な場合や、追加のドメイン知識 (問題の種類や目的など) を導入する場合があります。顧客解約シナリオでは、「顧客がアクティブではない」という結果がまれである場合、精度目標よりも F1 目標が優先されることがよくあります。高精度モデルでは、常に「顧客がアクティブ」であると予測される可能性があるため、精度は高くなりますが、ビジネス価値はほとんどありません。F1 目標の詳細については、Amazon SageMaker API リファレンスAutoMLJobObjective を参照してください。

次に、CREATE MODELは、目標など、指定された側面に関する提案に従います。同時に、CREATE MODEL は最適なプリプロセッサと最適なハイパーパラメータを自動的に検出します。

ユーザーガイダンス構文付きの CREATE MODEL

CREATE MODEL を使用すると、指定できる側面と Amazon Redshift が自動的に検出する側面について、より柔軟性が高まります。

CREATE MODEL model_name FROM { table_name | ( select_statement ) } TARGET column_name FUNCTION function_name IAM_ROLE { default } [ MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER} ] [ PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION ) ] [ OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro' | 'AUC') ] SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | S3_GARBAGE_COLLECT { ON | OFF }, | KMS_KEY_ID 'kms_key_id', | MAX_CELLS integer, | MAX_RUNTIME integer (, ...) )

ユーザーガイダンスパラメータ付きの CREATE MODEL

MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER }

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

PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION )

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

OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro' | 'AUC')

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

MAX_CELLS 整数

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

MAX_RUNTIME 整数

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

S3_GARBAGE_COLLECT { ON | OFF }

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

KMS_KEY_ID 'kms_key_id'

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

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' )

Amazon Redshift では、次のトランスフォーマをサポートしています。

  • OneHotEncoder – 通常、離散値をゼロ以外の値を持つバイナリベクトルにエンコードするために使用されます。このトランスフォーマは、多くの機械学習モデルに適しています。

  • OrdinalEncoder – 離散値を 1 つの整数にエンコードします。このトランスフォーマは、MLP や線形学習など特定の機械学習モデルに適しています。

  • NumericPassthrough – 入力をそのままモデルに渡します。

  • Imputer – 数値 (NaN) の値ではなく、欠損値を記入します。

  • ImputerWithIndicator – 欠損値と NaN 値を埋めます。このトランスフォーマは、値が欠落して入力されているかどうかを示すインジケータも作成します。

  • Normalizer – 値を正規化します。これにより、多くの機械学習アルゴリズムのパフォーマンスが向上します。

  • DateTimeVectorizer – 機械学習モデルで使用できる日時データ型の列を表すベクトル埋め込みを作成します。

  • PCA – できるだけ多くの情報を保持しながら、特徴の数を減らすためにデータを低い次元空間に投影します。

  • StandardScaler – 平均を除去し、単位分散にスケーリングして、特徴を標準化します。

  • MinMax – それぞれの特徴を指定された範囲にスケーリングすることで、特徴を変換します。

Amazon Redshift ML は、トレーニング済みのトランスフォーマを保存し、予測クエリの一部として自動的に適用します。モデルから予測を生成するときにそれらを指定する必要はありません。

AUTO OFF 付きの CREATE XGBoost モデル

AUTO OFF CREATE MODEL の目的は、通常、デフォルトの CREATE MODEL の目的とは異なります。

使用するモデル型と、これらのモデルをトレーニングする際に使用するハイパーパラメータを既に把握している上級ユーザーであれば、CREATE MODEL で AUTO OFF を指定することで、プリプロセッサとハイパーパラメータに関する CREATE MODEL による自動検出をオフにすることができます。そのためには、明示的にモデルタイプを指定します。XGBoost は現在、AUTO が OFF に設定されている場合にサポートされる唯一のモデルタイプです。ハイパーパラメータを指定できます。Amazon Redshift では、指定したハイパーパラメータにデフォルト値が使用されます。

AUTO OFF 構文を使用する CREATE XGBoost モデル

CREATE MODEL model_name FROM { table_name | (select_statement ) } TARGET column_name FUNCTION function_name IAM_ROLE { default } AUTO OFF MODEL_TYPE XGBOOST OBJECTIVE { 'reg:squarederror' | 'reg:squaredlogerror' | 'reg:logistic' | 'reg:pseudohubererror' | 'reg:tweedie' | 'binary:logistic' | 'binary:hinge' | 'multi:softmax' | 'rank:pairwise' | 'rank:ndcg' } HYPERPARAMETERS DEFAULT EXCEPT ( NUM_ROUND '10', ETA '0.2', NUM_CLASS '10', (, ...) ) PREPROCESSORS 'none' SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | S3_GARBAGE_COLLECT { ON | OFF }, | KMS_KEY_ID 'kms_key_id', | MAX_CELLS integer, | MAX_RUNTIME integer (, ...) )

AUTO OFF パラメータ付き CREATE XGBoost モデル

AUTO OFF

プリプロセッサ、アルゴリズム、およびハイパーパラメータの選択での、CREATE MODEL による自動検出をオフにします。

MODEL_TYPE XGBOOST

XGBOOST を使用してモデルをトレーニングするよう指定します。

OBJECTIVE str

アルゴリズムによって認識される目標を指定します。Amazon Redshift は reg:squarederror、reg:squaredlogerror、reg:logistic、reg:pseudohubererror、reg:tweedie、binary:logistic、binary:hinge、multi:softmax をサポートしています。これらの目的の詳細については、XGBoost のドキュメントからラーニングタスクのパラメータを参照してください。

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]

次の例では、XGBoost 用のデータを準備します。

DROP TABLE IF EXISTS abalone_xgb; CREATE TABLE abalone_xgb ( length_val float, diameter float, height float, whole_weight float, shucked_weight float, viscera_weight float, shell_weight float, rings int, record_number int); COPY abalone_xgb FROM 's3://redshift-downloads/redshift-ml/abalone_xg/' REGION 'us-east-1' IAM_ROLE default IGNOREHEADER 1 CSV;

次の例では、MODEL_TYPE、OBJECTIVE、PREPROCESSORS など、指定された詳細オプションを使用して XGBoost モデルを作成します。

DROP MODEL abalone_xgboost_multi_predict_age; CREATE MODEL abalone_xgboost_multi_predict_age FROM ( SELECT length_val, diameter, height, whole_weight, shucked_weight, viscera_weight, shell_weight, rings FROM abalone_xgb WHERE record_number < 2500 ) TARGET rings FUNCTION ml_fn_abalone_xgboost_multi_predict_age IAM_ROLE default AUTO OFF MODEL_TYPE XGBOOST OBJECTIVE 'multi:softmax' PREPROCESSORS 'none' HYPERPARAMETERS DEFAULT EXCEPT (NUM_ROUND '100', NUM_CLASS '30') SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket');

次の例では、推論クエリを使用して、レコード番号が 2500 より大きい魚の年齢を予測します。上記のコマンドで作成した関数 ml_fn_abalone_xgboost_multi_predict_age を使用します。

select ml_fn_abalone_xgboost_multi_predict_age(length_val, diameter, height, whole_weight, shucked_weight, viscera_weight, shell_weight)+1.5 as age from abalone_xgb where record_number > 2500;

独自のモデルを持参 (BYOM) - ローカル推論

Amazon Redshift 機械学習では、ローカルの推論において独自のモデルを持参 (BYOM) できるようサポートしています。

次に、BYOM の CREATE MODEL 構文のオプションをまとめます。Amazon Redshift の外部でトレーニングされたモデルを Amazon SageMaker とともに使用して、Amazon Redshift でローカルにデータベース内推論を行うことができます。

ローカル推論のための CREATE MODEL 構文

以下では、ローカル推論のための CREATE MODEL 構文について説明します。

CREATE MODEL model_name FROM ('job_name' | 's3_path' ) FUNCTION function_name ( data_type [, ...] ) RETURNS data_type IAM_ROLE { default } [ SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | --required KMS_KEY_ID 'kms_string') --optional ];

Amazon Redshift は現在、BYOM 用に事前トレーニングされた XGBoost MLP および線形学習モデルのみをサポートしています。このパスを使用して、ローカル推論のために SageMaker Autopilot と Amazon SageMaker で直接トレーニングされたモデルをインポートできます。

ローカル推論のための CREATE MODEL パラメータ

model_name

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

FROM ('job_name' | 's3_path' )

job_name では、入力として Amazon SageMaker のジョブ名を指定します。ジョブ名は、Amazon SageMaker トレーニングジョブ名または Amazon SageMaker Autopilot ジョブ名のいずれかです。ジョブは、Amazon Redshift クラスターを所有するのと同じ AWS アカウントで作成する必要があります。ジョブ名を見つけるには、Amazon SageMaker を起動します。[トレーニング] ドロップダウンメニューで、[トレーニングジョブ] を選択します。

's3_path' では、モデルの作成時に使用される .tar.gz モデルアーティファクトファイルを格納する S3 の場所を指定します。

FUNCTION function_name ( data_type [, ...] )

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

RETURNS data_type

関数によって返される値のデータ型。

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

デフォルトキーワードを使用して、CREATE MODEL コマンドの実行時にデフォルトとして設定され、同時にクラスターに関連付けられた IAM ロールを、Amazon Redshift が使用するようにします。

クラスターが認証と認可に使用する IAM ロールの Amazon リソースネーム (ARN) を使用します。

SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | KMS_KEY_ID 'kms_string')

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

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

詳細については、「ユーザーガイダンス付きの CREATE MODEL」を参照してください。

ローカル推論のための CREATE MODEL 例

次の例では、Amazon Redshift 以外の Amazon SageMaker で以前にトレーニングされたモデルを作成します。モデル型は Amazon Redshift ML によってローカル推論用にサポートされているため、以下の CREATE MODEL では、Amazon Redshift でローカルで使用できる関数を作成します。SageMaker のトレーニングジョブ名を指定できます。

CREATE MODEL customer_churn FROM 'training-job-customer-churn-v4' FUNCTION customer_churn_predict (varchar, int, float, float) RETURNS int IAM_ROLE default SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket');

モデルが作成されたら、指定された引数タイプで関数 customer_churn_predict を使用して予測を行うことができます。

独自のモデルを持参 (BYOM) - リモート推論

また、Amazon Redshift 機械学習では、リモート推論においても独自のモデルを持参 (BYOM) できるようサポートしています。

次に、BYOM の CREATE MODEL 構文のオプションをまとめます。

リモート推論のための CREATE MODEL 構文

次に、リモート推論用の CREATE MODEL 構文について説明します。

CREATE MODEL model_name FUNCTION function_name ( data_type [, ...] ) RETURNS data_type SAGEMAKER 'endpoint_name'[:'model_name'] IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' } [SETTINGS (MAX_BATCH_ROWS integer)];

リモート推論の CREATE MODEL パラメータ

model_name

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

FUNCTION fn_name ( [data_type] [, ...] )

関数の名前と入力引数のデータ型。サポートされているすべてのデータ型については、「データ型」を参照してください。Geographygeometryhllsketch はサポートされていません。

また、myschema.myfunction などの 2 つの部分からなる表記を使用して、スキーマ内に関数名を指定することもできます。

RETURNS data_type

関数によって返される値のデータ型。サポートされているすべてのデータ型については、「データ型」を参照してください。Geographygeometryhllsketch はサポートされていません。

SAGEMAKER 'endpoint_name'[:'model_name']

Amazon SageMaker エンドポイントの名前。エンドポイント名がマルチモデルのエンドポイントを指している場合は、使用するモデルの名前を追加します。エンドポイントは、Amazon Redshift クラスターと同じ AWS リージョン内でホストされる必要があります。エンドポイントを見つけるには、Amazon SageMaker を起動します。[推論] ドロップダウンメニューで、[エンドポイント] を選択します。

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

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

MAX_BATCH_ROWS 整数

Amazon Redshift が 1 回の SageMaker 呼び出しに対して 1 回のバッチリクエストで送信する最大行数。リモート推論を使用する BYOM でのみサポートされます。バッチ内の実際の行数は入力サイズにも依存しますが、この値以下です。このパラメータの最小値は 1 です。最大値は INT_MAX または 2,147,483,647 です。このパラメータは、入力データ型と返されたデータ型の両方が SUPER である場合にのみ必要です。デフォルト値は INT_MAX または 2,147,483,647 です。

モデルが SageMaker エンドポイントにデプロイされると、SageMaker は Amazon Redshift でモデルの情報を作成します。その後、外部関数を介して推論を実行します。SHOW MODEL コマンドを使用して、Amazon Redshift クラスターのモデル情報を表示できます。

リモート推論の使用上の注意のための CREATE MODEL

リモート推論に CREATE MODEL を使用する前に、次の点を考慮してください。

  • エンドポイントは、Amazon Redshift クラスターを所有するのと同じ AWS アカウントでホストされている必要があります。

  • Amazon SageMaker エンドポイントに Amazon Redshift からの推論呼び出しに対応するのに十分なリソースがあること、または Amazon SageMaker エンドポイントを自動的にスケーリングできることを確認してください。

  • SUPER データ型を入力として使用していない場合、モデルは SageMaker の text/CSV のコンテンツタイプに対応するカンマ区切り値 (CSV) 形式の入力のみを受け入れます。

  • SUPER データ型を入力として使用していない場合、モデルの出力は、関数の作成時に指定された型の単一の値です。出力は、SageMaker の text/CSV のコンテンツタイプを介してカンマ区切り値 (CSV) の形式です。VARCHAR データ型は引用符で囲むことはできません。また、新しい行を含めることはできず、各出力は新しい行に含める必要があります。

  • モデルは空の文字列として null を受け入れます。

  • 入力データ型が SUPER の場合、サポートされる入力引数は 1 つだけです。

  • 入力データ型が SUPER の場合、返されるデータ型も SUPER である必要があります。

  • MAX_BATCH_ROWS は、入力データ型と返されたデータ型の両方が SUPER の場合に必要です。

  • 入力データ型が SUPER のとき、エンドポイント呼び出しのコンテンツ型は、MAX_BATCH_ROWS が 1 の場合は application/json、それ以外の場合は application/jsonlines です。

  • 返されるデータ型が SUPER のとき、エンドポイント呼び出しの受け入れ型は、MAX_BATCH_ROWS が 1 の場合は application/json、それ以外の場合は application/jsonlines です。

リモート推論のための CREATE MODEL 例

次の例では、SageMaker エンドポイントを使用して予測を行うモデルを作成します。エンドポイントが実行されていることを確認して予測を行い、CREATE MODEL コマンドでその名前を指定します。

CREATE MODEL remote_customer_churn FUNCTION remote_fn_customer_churn_predict (varchar, int, float, float) RETURNS int SAGEMAKER 'customer-churn-endpoint' IAM_ROLE default;

次の例では、大規模言語モデル (LLM) を使用してリモート推論で BYOM を作成します。Amazon SageMaker Jumpstart でホストされている LLM は、application/json コンテンツ型を受け入れて返し、呼び出しごとに単一の JSON をサポートします。入力データ型と返されるデータ型は SUPER で、MAX_BATCH_ROWS は 1 に設定する必要があります。

CREATE MODEL sample_super_data_model FUNCTION sample_super_data_model_predict(super) RETURNS super SAGEMAKER 'sample_super_data_model_endpoint' IAM_ROLE default SETTINGS (MAX_BATCH_ROWS 1);

K-MEANS を使用した CREATE MODEL

Amazon Redshift は、ラベル付けされていないデータをグループ化する K-Means アルゴリズムをサポートしています。このアルゴリズムは、データ内でグループを検出する際にクラスタリングで発生する問題を解決します。未分類のデータについては、その類似点と相違点に基づいたグループ分けと分割が行われます。

K-MEANS 構文による CREATE MODEL

CREATE MODEL model_name FROM { table_name | ( select_statement ) } FUNCTION function_name IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' } AUTO OFF MODEL_TYPE KMEANS PREPROCESSORS 'string' HYPERPARAMETERS DEFAULT EXCEPT ( K 'val' [, ...] ) SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', KMS_KEY_ID 'kms_string', | -- optional S3_GARBAGE_COLLECT on / off, | -- optional MAX_CELLS integer, | -- optional MAX_RUNTIME integer -- optional);

K-MEANS パラメータによる CREATE MODEL

AUTO OFF

プリプロセッサ、アルゴリズム、およびハイパーパラメータの選択での、CREATE MODEL による自動検出をオフにします。

MODEL_TYPE KMEANS

KMEANS を使用してモデルをトレーニングするよう指定します。

PREPROCESSORS 'string'

特定の列セットに対するプリプロセッサの特定の組み合わせを指定します。形式は、columnSets のリストであり、各列のセットに適用される適切な変換です。Amazon Redshift は、StandardScaler、MinMax、NumericPassthrough という、3 つの K-Means プリプロセッサをサポートしています。K-Means の前処理を適用しない場合は、トランスフォーマーとして明示的に NumericPassthrough を選択します。サポートされる変換の詳細については、「ユーザーガイダンスパラメータ付きの CREATE MODEL」を参照してください。

K-Means アルゴリズムは、ユークリッド距離を使用して類似度を計算します。データの前処理により、モデルの特徴が同じスケールに維持され、信頼性の高い結果が保証されます。

HYPERPARAMETERS DEFAULT EXCEPT ( K 'val' [, ...] )

K-Means パラメータを使用するかどうかを指定します。K-Means アルゴリズムを使用する際には、Kパラメータを指定する必要があります。詳細については、Amazon SageMaker デベロッパーガイドの「K-Means Hyperparameters」を参照してください。

次に、K-Means 用のデータを準備する際の例を示します。

CREATE MODEL customers_clusters FROM customers FUNCTION customers_cluster IAM_ROLE default AUTO OFF MODEL_TYPE KMEANS PREPROCESSORS '[ { "ColumnSet": [ "*" ], "Transformers": [ "NumericPassthrough" ] } ]' HYPERPARAMETERS DEFAULT EXCEPT ( K '5' ) SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket'); select customer_id, customers_cluster(...) from customers; customer_id | customers_cluster -------------------- 12345 1 12346 2 12347 4 12348

予測による CREATE MODEL

Redshift ML の予測モデルは Amazon Forecast を使用して正確な時系列予測を作成します。そうすることで、ある期間の履歴データを使用して将来のイベントを予測することができます。Amazon Forecast の一般的な使用例としては、小売製品データを使用して在庫の価格を決定する、製造数量データを使用して注文する商品の量を予測する、ウェブトラフィックデータを使用してウェブサーバーが受け取る可能性のあるトラフィック量を予測する、などが含まれます。

Amazon Redshift 予測モデルには、Amazon Forecast のクォータ制限が適用されます。例えば、予測の最大数は 100 ですが、調整可能です。予測モデルを削除しても、Amazon Forecast 内の関連リソースは自動的に削除されません。Redshift クラスターを削除すると、関連するモデルもすべて削除されます。

予測モデルは現在、以下のリージョンでのみ利用可能であることに注意してください。

  • 米国東部 (オハイオ) (us-east-2)

  • 米国東部 (バージニア北部) (us-east-1)

  • 米国西部 (オレゴン) (us-west-2)

  • アジアパシフィック (ムンバイ) (ap-south-1)

  • アジアパシフィック (ソウル) (ap-northeast-2)

  • アジアパシフィック (シンガポール) (ap-southeast-1)

  • アジアパシフィック (シドニー) (ap-southeast-2)

  • アジアパシフィック (東京) (ap-northeast-1)

  • ヨーロッパ (フランクフルト) (eu-central-1)

  • 欧州 (アイルランド) (eu-west-1)

予測構文による CREATE MODEL

CREATE [ OR REPLACE ] MODEL forecast_model_name FROM { table_name | ( select_query ) } TARGET column_name IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>'} AUTO ON MODEL_TYPE FORECAST SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', HORIZON integer, FREQUENCY forecast_frequency [PERCENTILES '0.1', '0.5', '0.9'] )

予測パラメータによる CREATE MODEL

forecast_model_name

モデルの名前です。モデル名は一意である必要があります。

FROM { table_name | ( select_query ) }

table_name またはトレーニングデータを指定するクエリ。これは、システム内の既存のテーブル、または丸かっこで囲まれた Amazon RedShift 互換の SELECT クエリのいずれかです。テーブルまたはクエリ結果には、少なくとも次の 3 つの列が必要です。(1) 時系列の名前を指定する varchar 列。各データセットには、複数の時系列を含めることができます。(2) datetime 列、(3) 予測する対象列。このターゲット列は int または float である必要があります。3 つ以上の列を含むデータセットを指定した場合、Amazon Redshift では、追加の列はすべて関連する時系列の一部であると見なします。関連する時系列は int 型または float 型である必要があることに注意してください。関連する時系列の詳細については、「関連する時系列データセットの使用」を参照してください。

TARGET column_name

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

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

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

AUTO ON

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

MODEL_TYPE FORECAST

FORECAST を使用してモデルをトレーニングするよう指定します。

S3_BUCKET 'amzn-s3-demo-bucket'

以前に作成した Amazon Simple Storage Service バケットの名前で、これは Amazon Redshift と Amazon Forecast の間でトレーニングデータとアーティファクトを共有するために使用されます。Amazon Redshift は、トレーニングデータをアンロードする前に、このバケットにサブフォルダを作成します。トレーニングが完了すると、Amazon Redshift は作成したサブフォルダとその内容を削除します。

HORIZON 整数

予測モデルが返すことができる予測の最大数。モデルのトレーニングが完了すると、この整数は変更できません。

FREQUENCY forecast_frequency

予測の詳細度を指定します。使用できるオプションは、Y | M | W | D | H | 30min | 15min | 10min | 5min | 1min です。予測モデルをトレーニングする場合は必須です。

PERCENTILES 文字列

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

次の例は、簡単な予測モデルを作成する方法を示しています。

CREATE MODEL forecast_example FROM forecast_electricity_ TARGET target IAM_ROLE 'arn:aws:iam::<account-id>:role/<role-name>' AUTO ON MODEL_TYPE FORECAST SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket', HORIZON 24, FREQUENCY 'H', PERCENTILES '0.25,0.50,0.75,mean', S3_GARBAGE_COLLECT OFF);

予測モデルを作成したら、予測データを含む新しいテーブルを作成できます。

CREATE TABLE forecast_model_results as SELECT Forecast(forecast_example)

その後、新しいテーブルをクエリして予測を取得できます。

SELECT * FROM forecast_model_results