本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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。