CREATE MODEL
先决条件
在使用 CREATE MODEL 语句之前,请完成 用于使用 Amazon Redshift ML 的集群设置 中的先决条件。下面简要概述了这些先决条件。
使用 Amazon 管理控制台或 Amazon 命令行界面 (Amazon CLI).创建 Amazon Redshift 集群。
在创建集群时附加 Amazon 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 [, ...] ) IAM_ROLE { default } [ AUTO ON / OFF ] -- default is AUTO ON [ MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER | KMEANS } ] -- 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' ) ] -- for AUTO ON: first 5 are valid -- for AUTO OFF: 6-13 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 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) ) ]
参数
- model_name
-
模型的名称。schema 中的模型名称必须是唯一的。
- FROM { table_name | ( select_query ) | 'job_name'}
-
指定训练数据的 table_name 或查询。它们可以是系统中的现有表,也可以是用括号(即 ())括起来的兼容 Amazon RedShift 的 SELECT 查询。查询结果中必须至少有两列。
- TARGET column_name
-
成为预测目标的列的名称。FROM 子句中必须存在该列。
- FUNCTION function_name ( data_type [, ...] )
-
要创建的函数的名称以及输入参数的数据类型。您可以提供 schema 名称。
- IAM_ROLE { default }
-
使用默认关键字让 Amazon Redshift 使用设置为默认值并在 CREAT MODEL 命令运行时与集群关联的 IAM 角色。
- [ AUTO ON / OFF ]
-
打开或关闭预处理器、算法和超参数选择的 CREATE MODEL 自动发现。
- MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER | KMEANS }
-
(可选)指定模型类型。您可以指定是否要训练特定模型类型的模型,如 XGBoost、多层感知机 (MLP, Multilayer Perceptron)、KMEANS 或线性学习器,这些都是 Amazon SageMaker Autopilot 支持的算法。如果未指定参数,则在训练期间搜索所有受支持的模型类型,以找到最佳模型。
- 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' | 'rank:pairwise' | 'rank:ndcg' )
-
(可选)指定用于测量机器学习系统预测质量的目标指标的名称。此指标在训练过程中进行了优化,以便从数据中为模型参数值提供最佳估计值。如果未明确指定指标,则默认行为是自动使用 MSE:用于回归,F1:用于二进制分类,精度:用于多类分类。有关目标的更多信息,请参阅《Amazon SageMaker API 参考》中的 AutoMLJobObjective以及 XGBOOST 文档中的了解任务参数
。 - 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 } 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
整数 对于多类分类是必需的。
不适用 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 'bucket', | KMS_KEY_ID 'kms_string' , | S3_GARBAGE_COLLECT on / off, | MAX_CELLS integer , | MAX_RUNTIME (,...) )
-
S3_BUCKET 子句指定用于存储中间结果的 Amazon S3 位置。
(可选)KMS_KEY_ID 指定 Amazon Redshift 是否将服务器端加密与 Amazon KMS 键结合使用来保护静态数据。传输中的数据由安全套接字层 (SSL) 保护。
(可选)S3_GARBAGE_COLLECT { ON | OFF } 指定 Amazon Redshift 是否对用于训练模型的生成数据集和模型执行垃圾回收。如果设置为 OFF,则用于训练模型的生成数据集和模型将保留在 Simple Storage Service(Amazon S3)中,并可用于其他目的。如果设置为 ON,则 Amazon Redshift 会在训练完成后删除 Simple Storage Service(Amazon S3)中的构件。默认为 ON。
(可选)MAX_CELLS 指定训练数据中的单元格的数量。此值是记录数(在训练查询或表中)乘以列数的乘积。默认值为 1000000。
(可选)MAX_RUNTIME 指定最长训练时间。根据数据集的大小,训练任务通常可以更早完成。这将指定训练所需的最长时间。默认值为 5400(90 分钟)。