CREATE MODEL
先决条件
在使用 CREATE MODEL 语句之前,请完成 用于使用 Amazon Redshift ML 的集群设置 中的先决条件。下面简要概述了这些先决条件。
使用 AWS 管理控制台或 AWS 命令行界面 (AWS CLI) 创建 Amazon Redshift 集群。
在创建集群时附加 AWS Identity and Access Management (IAM) policy。
要允许 Amazon Redshift 和 SageMaker 代入角色以便与其他服务交互,请向 IAM 角色添加相应的信任策略。
有关 IAM 角色、信任策略和其他先决条件的详细信息,请参阅用于使用 Amazon Redshift ML 的集群设置。
您可以在下面找到 CREATE MODEL 语句的不同使用案例。
所需的权限
以下是 CREATE MODEL 所需的权限:
Superuser
具有 CREATE MODEL 权限的用户
具有 GRANT CREATE MODEL 权限的角色
成本控制
Amazon Redshift ML 使用现有集群资源创建预测模型,因此您无需支付额外费用。但是,如果您需要调整集群的大小或训练模型,则可能需要支付额外费用。Amazon Redshift ML 使用 Amazon SageMaker 来训练模型,这确实会产生额外的相关费用。可以通过多种方法控制额外成本,例如,限制训练可花费的最长时间,或限制用于训练模型的训练样本数量。有关更多信息,请参阅使用 Amazon Redshift ML 的成本。
Full CREATE MODEL
下面总结了完整的 CREATE MODEL 语法的基本选项。
Full 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
-
模型的名称。schema 中的模型名称必须是唯一的。
- 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 端点的名称。如果端点名称指向多模型端点,请添加要使用的模型名称。端点必须与 Amazon Redshift 集群托管于同一 AWS 区域。
- IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>'}
-
使用默认关键字让 Amazon Redshift 使用 IAM 角色,该角色设置为默认值并在 CREATE MODEL 命令运行时与集群关联。或者,您可以指定 IAM 角色的 ARN 来使用该角色。
- [ AUTO ON / OFF ]
-
打开或关闭预处理器、算法和超参数选择的 CREATE MODEL 自动发现。在创建预测模型时指定 On 表示使用 AutoPredictor,其中 Amazon Forecast 会将算法的最佳组合应用于数据集中的每个时间序列。
- MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER | KMEANS | FORECAST }
-
(可选)指定模型类型。您可以指定是否要训练特定模型类型的模型,如 XGBoost、多层感知机 (MLP)、KMEANS 或线性学习器,这些都是 Amazon SageMaker 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 API 参考》中的 AutoMLJobObjective以及 XGBOOST 文档中的了解任务参数
。值 RMSE、WAPE、MAPE、MASE 和 AverageWeightedQuantileLoss 仅适用于预测模型。有关更多信息,请参阅 CreateAutoPredictor API 操作。 - PREPROCESSORS 'string'
-
(可选)将预处理器的某些组合指定为某些列的集合。格式是 columnSet 的列表,以及要应用于每组列的适当转换。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
整数 对于多类分类是必需的。
不适用 num_round
整数 100
不适用 tree_method
字符串 自动 不适用 max_depth
整数 6 [0, 10] min_child_weight Float 1 最小值:0,最大值:120 subsample Float 1 最小值:0.5,最大值:1 gamma Float 0 最小值:0,最大值:5 alpha Float 0 最小值:0,最大值:1000 eta Float 0.3 最小值:0.1,最大值:0.5 colsample_byleve Float 1 最小值:0.1,最大值:1 colsample_bynode Float 1 最小值:0.1,最大值:1 colsample_bytree Float 1 最小值:0.5,最大值:1 lambda Float 1 最小值:0,最大值:1000 max_delta_step 整数 0 [0, 10] - 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 和 Amazon Forecast 中创建的资源。标签有助于组织资源和分配成本。键/值对中的值是可选的,因此您可以使用格式
key=value
或只是通过创建键来创建标签。有关 Amazon Redshift 中的标签的更多信息,请参阅标记概述。(可选)KMS_KEY_ID 指定 Amazon Redshift 是否将服务器端加密与 AWS KMS 键结合使用来保护静态数据。传输中的数据由安全套接字层 (SSL) 保护。
(可选)S3_GARBAGE_COLLECT { ON | OFF } 指定 Amazon Redshift 是否对用于训练模型的生成数据集和模型执行垃圾回收。如果设置为 OFF,则用于训练模型的生成数据集和模型将保留在 Amazon S3 中,并可用于其他目的。如果设置为 ON,则 Amazon Redshift 会在训练完成后删除 Amazon S3 中的构件。默认为 ON。
(可选)MAX_CELLS 指定训练数据中的单元格的数量。此值是记录数(在训练查询或表中)乘以列数的乘积。默认值是 1000000。
(可选)MAX_RUNTIME 指定最长训练时间。根据数据集的大小,训练任务通常可以更早完成。这将指定训练所需的最长时间。默认值为 5400(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 调用发送的最大行数。只有具有远程推理功能的 BYOM 才支持此项。此参数的最小值为 1。最大值为
INT_MAX
,即 2147483647。仅当输入和返回的数据类型均为 SUPER 时,才需要此参数。默认值为INT_MAX
,即 2147483647。