CREATE MODEL - Amazon Redshift

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。