CREATE MODEL - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CREATE MODEL

必要條件

使用 CREATE MODEL 陳述式之前,請先完成 使用 Amazon Redshift ML 的叢集設定 中的先決條件。以下是先決條件的概要。

  • 使用 AWS 管理主控台或 AWS 命令列界面 (AWS CLI) 建立 Amazon Redshift 叢集。

  • 在建立叢集時連接 AWS Identity and Access Management (IAM) 政策。

  • 若要允許 Amazon Redshift 和 SageMaker AI 擔任角色以與其他 服務互動,請將適當的信任政策新增至 IAM 角色。

如需 IAM 角色、信任政策和其他先決條件的詳細資訊,請參閱 使用 Amazon Redshift ML 的叢集設定

接下來,你可以找到 CREATE MODEL 陳述式的不同使用案例。

所需權限

以下是 CREATE MODEL 所需的權限:

  • 超級使用者

  • 具有 CREATE MODEL 權限的使用者

  • 具有 GRANT CREATE MODEL 權限的角色

成本控制

Amazon Redshift ML 會使用現有的叢集資源建立預測模型,因此您不必支付額外費用。但是,如果您需要調整叢集大小或想要訓練模型,則可能會產生額外費用。Amazon Redshift ML 使用 Amazon SageMaker AI 來訓練模型,這確實會產生額外的相關成本。有一些方法可以控制額外成本,例如限制訓練所耗用的時間上限,或限制用於訓練模型的訓練範例數量。如需詳細資訊,請參閱使用 Amazon Redshift 資料 API

完整的 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 查詢,並以括號括住,也就是 ()。查詢結果中至少必須有兩個資料列。

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

使用預設關鍵字,讓 Amazon Redshift 使用設定為預設並在執行 CREATE MODEL 命令時與叢集關聯的 IAM 角色。或者,您可以指定 IAM 角色的 ARN 以使用該角色。

[ AUTO ON / OFF ]

開啟或關閉預處理器、演算法和超參數選擇的 CREATE MODEL 自動探索。在建立預測模型時指定開啟,以使用 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: 用於二進制分類、將 Accuracy: 用於多類別分類。如需目標的詳細資訊,請參閱 XGBOOST 文件中的 Amazon SageMaker AI API 參考學習任務參數中的 AutoMLJobObjective。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

Integer

多類別分類所需。

N/A

num_round

Integer

100

N/A

tree_method

字串 Auto N/A

max_depth

Integer 6 [0 , 10]
min_child_weight Float 1 MinValue:0、MaxValue:120
子範例 Float 1 MinValue:0.5、MaxValue:1
Gamma Float 0 MinValue:0、MaxValue:5
alpha Float 0 MinValue:0、MaxValue:1000
eta Float 0.3 MinValue:0.1、MaxValue:0.5
colsample_byleve Float 1 MinValue:0.1、MaxValue:1
colsample_bynode Float 1 MinValue:0.1、MaxValue:1
colsample_bytree Float 1 MinValue:0.5、MaxValue:1
lambda Float 1 MinValue:0、MaxValue:1000
max_delta_step Integer 0 [0, 10]
SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | TAGS 'string', | KMS_KEY_ID 'kms_string' , | S3_GARBAGE_COLLECT on / off, | MAX_CELLS 整數 , | MAX_RUNTIME (,...) , | HORIZON 整數, | FREQUENCY forecast_frequency, | 字串 PERCENTILES 陣列)

S3_BUCKET 子句會指定用來儲存中繼結果的 Amazon S3 位置。

(選用) TAGS 參數是以逗號分隔的索引鍵/值對清單,可用來標記在 Amazon SageMaker AI 和 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 中的成品。預設值為 ON。

(選擇性) 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.99 之間的分位數,增量單位為 0.01 或更高。您也可以使用平均值指定平均預測。您最多可以指定五種預測類型。

MAX_BATCH_ROWS 整數

(選用) Amazon Redshift 在單一批次請求中針對單一 SageMaker AI 調用傳送的資料列數上限。只有具有遠端推論的 BYOM 才支援此功能。此參數的最小值為 1。最大值為 INT_MAX、 或 2,147,483,647。只有在輸入和傳回的資料類型皆為 SUPER 時,才需要此參數。預設值為 INT_MAX、 或 2,147,483,647。