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 假設該角色與其他服務互動,請將適當的信任政策新增至 IAM 角色。

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

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

所需權限

以下是 CREATE MODEL 所需的權限:

  • 超級使用者

  • 具有 CREATE MODEL 權限的使用者

  • 具有 GRANT CREATE MODEL 權限的角色

成本控制

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

參數

model_name

模型的名稱。結構描述中的模型名稱必須是唯一的。

FROM { table_name | ( select_query ) | 'job_name'}

指定訓練資料的 table_name 或查詢。這可以是系統中現有的資料表,也可以是與 Amazon RedShift 相容的 SELECT 查詢,並以括號括住,也就是 ()。查詢結果中至少必須有兩個資料列。

TARGET column_name

成為預測目標的資料欄名稱。該資料欄必須存在於 FROM 子句中。

FUNCTION function_name ( data_type [, ...] )

要建立的函數名稱和輸入引數的資料類型。您可以在資料庫中提供結構描述的結構描述名稱,而不是函數名稱。

RETURNS SUPER (預覽)

從模型傳回的資料類型。傳回的 SUPER 資料類型僅適用於遠端 BYOM 模型。

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

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

[ AUTO ON / OFF ]

開啟或關閉預處理器、演算法和超參數選擇的 CREATE MODEL 自動探索。在建立 Forecast 模型時指定開啟表示使用 AutoPredictor,其中 Amazon Forecast 會將最佳演算法組合套用至資料集中的每個時間序列。

MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER | KMEANS | FORECAST }

(選擇性) 指定模型類型。您可以指定是否要訓練特定模型類型的模型,例如 XGBoost、多層感知器 (MLP)、KMEANS 或線性學習器,這些都是 Amazon 自動駕駛儀支援的演算法。 SageMaker 如果未指定參數,則會在訓練期間搜尋所有支援的模型類型,以取得最佳模型。您也可以在 Redshift ML 中建立預測模型,以建立準確的時間序列預測。

PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION )

(選擇性) 指定問題類型。如果您知道問題類型,則可以將 Amazon Redshift 限制為僅搜尋該特定模型類型的最佳模型。如果未指定此參數,則訓練期間會根據您的資料探索問題類型。

目的('MSE' | '準確性' | 'F1' | 'F1 宏' | 'REC' | 'REG:方形錯誤' | '註冊:物流' | '註冊:偽大師' | 'REG:' 註釋:鑷子 '|「二進制:後勤」|「二進制:鉸鏈」|「RMSE」|「二進制」:鉸鏈「| 多軟最大」APE' | 'MAPE' | '馬斯' | ')AverageWeightedQuantileLoss

(選擇性) 指定用來測量機器學習系統預測品質的目標指標名稱。此指標會在訓練期間進行最佳化,從資料中提供模型參數值的最佳估計值。如果您沒有明確指定指標,則預設行為是自動將 MSE: 用於迴歸、將 F1: 用於二進制分類、將 Accuracy: 用於多類別分類。如需有關目標的詳細資訊,請參閱 Amazon SageMaker API 參考和 XGBOOST 文件中的學習任務參數中的 AutoML JobObjective。值 RMSE,WAPE,MAPE,MASE,並且 AverageWeightedQuantileLoss 僅適用於 Forecast 模型。如需詳細資訊,請參閱 CreateAutoPredictor API 操作。

PREPROCESSORS 'string'

(選擇性) 指定特定資料欄集的特定預處理器組合。格式會是 columnSets 清單,以及要套用到每一組資料欄的適當轉換。Amazon Redshift 將特定變壓器列表中的所有變壓器應用於相應 ColumnSet的所有列。例如,要使用輸入器應 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 '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
子範例 Float 1 MinValue MaxValue:半點
Gamma Float 0 MinValue: 0, MaxValue: 5
alpha Float 0 MinValue: 0, MaxValue
eta Float 0.3 MinValue:零 MaxValue
colsample_byleve Float 1 MinValue:零一 MaxValue
colsample_bynode Float 1 MinValue:零一 MaxValue
colsample_bytree Float 1 MinValue MaxValue:半點
lambda Float 1 MinValue: 0, MaxValue
max_delta_step Integer 0 [0, 10]
SETTINGS ( S3_BUCKET '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 中的成品。預設值為 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 或更高。您也可以使用平均值指定平均預測。您最多可以指定五種預測類型。