CREATE MODEL - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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 分钟)。