使用 Amazon Redshift ML 执行高级分析 - AWS Prescriptive Guidance

使用 Amazon Redshift ML 执行高级分析

Po Hong 和 Chyanna Antonio,Amazon Web Services

摘要

在 Amazon Web Services (AWS) Cloud,您可使用 Amazon Redshift machine learning (Amazon Redshift ML) 对存储在 Amazon Redshift cluster 或 Amazon Simple Storage Service (Amazon S3) 的数据执行机器学习分析。Amazon Redshift ML 支持有监督学习,这种学习常用于高级分析。Amazon Redshift ML 用例包括收入预测、信用卡欺诈检测以及客户生命周期价值 (CLV) 或客户流失预测。

Amazon Redshift ML 使数据库用户可以轻松地使用标准的 SQL 命令创建、训练和部署 ML 模型。Amazon Redshift ML 使用 Amazon SageMaker Autopilot 自动训练和调整最佳 ML 模型,以根据您的数据进行分类或回归,同时保持控制和可见性。

Amazon Redshift、Amazon S3 和 Amazon SageMaker 之间的所有交互都采用抽象形式,并且自动化。ML 模型经过训练和部署后,它将作为用户定义函数 (UDF) 在 Amazon Redshift 中使用,并可用于 SQL 查询。 

此模式补充了 AWS Blog 中使用 SQL 和 Amazon Redshift ML 在 Amazon Redshift 中构建、训练和部署 ML 模型,以及 资源中心入门中的通过 Amazon SageMaker 构建、培训和部署 ML 模型

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • Amazon Redshift 表内现有数据

技能

  • 熟悉 Amazon Redshift ML 使用的术语和概念,包括机器学习培训预测。有关这方面的更多信息,请参阅 Amazon Machine Learning (Amazon ML) 文档中的ML 模型培训

  • 体验 Amazon Redshift 用户设置、访问管理以及标准 SQL 语法。有关的更多信息,请参阅 Amazon Redshift 文档中的 Amazon Redshift 入门

  • Amazon S3 和 AWS Identity and Acess Management (IAM) 方面的专长和经验。 

  • 在 AWS 命令行界面(AWS CLI)中运行命令也是有益的,但不是必需的。

限制

  • Amazon Redshift 集群与 S3 存储桶必须位于同一 AWS 区域。

  • 此模式方法仅支持有监督学习模型,例如回归、二进制分类以及多类分类。 

架构

工作流说明了 Amazon Redshift ML 如何与 SageMaker 配合构建、训练和部署 ML 模型。

以下步骤说明了 Amazon Redshift ML 如何与 SageMaker 配合构建、训练和部署 ML 模型: 

  1. Amazon Redshift 将训练数据导出到 S3 存储桶中。

  2. SageMaker Autopilot 自动预处理训练数据。

  3. 调用 CREATE MODEL 语句后,Amazon Redshift ML 会使用 SageMaker 进行训练。

  4. SageMaker Autopilot 搜索并推荐用于优化评估指标的机器学习算法与最佳超参数。

  5. Amazon Redshift ML 会在 Amazon Redshift 集群中将输出 ML 模型注册为 SQL 函数。

  6. ML 模型的函数可用于 SQL 语句。 

技术堆栈

  • Amazon Redshift

  • SageMaker

  • Amazon S3

工具

  • Amazon Redshift – Amazon Redshift 是一种完全托管的企业 PB 级数据仓库服务。

  • Amazon Redshift ML – Amazon Redshift 机器学习 (Amazon Redshift ML) 是一种基于云的稳健服务,能够让所有技能水平的分析人员和数据科学家都能轻松使用 ML 技术。

  • Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一项面向互联网的存储服务。 

  • Amazon SageMaker – SageMaker 是一项完全托管式机器学习服务。 

  • Amazon SageMaker Autopilot — SageMaker Autopilot 是一款功能集,可自动执行自动机器学习 (AutoML) 进程的关键任务。

代码

您可使用以下代码,在 Amazon Redshift 中创建受监管的 ML 模型:

"CREATE MODEL customer_churn_auto_model FROM (SELECT state, account_length, area_code, total_charge/account_length AS average_daily_spend, cust_serv_calls/account_length AS average_daily_cases, churn FROM customer_activity WHERE record_date < '2020-01-01' ) TARGET churn FUNCTION ml_fn_customer_churn_auto IAM_ROLE 'arn:aws:iam::XXXXXXXXXXXX:role/Redshift-ML' SETTINGS ( S3_BUCKET 'your-bucket' );")
注意

SELECT 状态可以指 Amazon Redshift 常规表或 Amazon Redshift Spectrum 外部表,或者同时参考两者。

操作说明

任务描述所需技能

准备训练与测试数据集。

登录 AWS 管理控制台,打开 Amazon SageMaker 控制台。按照构建、训练和部署机器学习模型教程创建包含标签列(监督训练)且没有标题的 .csv 或 Apache Parquet 文件。 

注意

我们建议您将原始数据集进行打乱,并拆分为用于模型训练的训练集(70%)和用于模型性能评估的测试集(30%)。

数据科学家
任务描述所需技能

创建和配置 Amazon Redshift 集群。

在 Amazon Redshift 控制台,根据您的要求创建集群。有关更多信息,请参阅 Amazon Redshift 文档中的创建集群。 

重要

Amazon Redshift 集群必须使用 SQL_PREVIEW 维护轨道创建。有关预览轨道的更多信息,请参阅 Amazon Redshift 文档中的选择集群维护轨道

数据库管理员、云架构师

创建 S3 存储桶以存储训练数据和模型构件。

在 Amazon S3 控制台,创建 S3 存储桶以训练和测试数据。有关创建 S3 存储桶的更多信息,请参阅 AWS 快速入门中的创建 S3 存储桶。 

重要

请确保您的 Amazon Redshift 集群与 S3 存储桶位于同一区域。 

数据库管理员、云架构师

创建 IAM policy,并将其附加至 Amazon Redshift 集群。

创建 IAM policy,以允许 Amazon Redshift 集群访问 SageMaker 和 Amazon S3。有关说明和步骤,请参阅 Amazon Redshift 文档中的使用 Amazon Redshift ML 的集群设置

数据库管理员、云架构师

允许 Amazon Redshift 用户和群组访问架构和表格。

授予权限,允许 Amazon Redshift 中的用户和群组访问内部和外部架构和表格。有关步骤和说明,请参阅 Amazon Redshift 文档的管理权限和所有权

数据库管理员
任务描述所需技能

在 Amazon Redshift 中创建和训练 ML 模型。

在 Amazon Redshift ML 中创建和训练您的 ML 模型。有关更多信息,请参阅 Amazon Redshift 文档中的 CREATE MODEL 语句。

开发人员、数据科学家
任务描述所需技能

使用生成的 ML 模型函数执行推理。

有关使用生成 ML 模型函数执行推理的更多信息,请参阅 Amazon Redshift 文档中的预测

数据科学家、商业智能用户

相关资源

准备训练与测试数据集

准备与配置技术堆栈

在 Amazon Redshift 中创建和训练 ML 模型

在 Amazon Redshift 中执行批量推理与预测

其他资源