关于分析:Amazon-Redshift-ML现已正式推出使用SQL创建机器学习模型并通过您的数据进行预测

26次阅读

共计 9297 个字符,预计需要花费 24 分钟才能阅读完成。

借助 Amazon Redshift,您能够应用 SQL 在您的数据仓库、操作数据库 数据湖 中查问和合并数 EB 的结构化和 半结构化 数据。当初,AQUA(高级查问加速器)已全面推出 ,您能够将您的查问性能最高进步 10 倍,而无需额定的费用和代码更改。事实上,Amazon Redshift 提供比其余云数据仓库 高出三倍的性价比

  • Amazon Redshift
    https://aws.amazon.com/redshift/
  • 操作数据库
    https://aws.amazon.com/blogs/…
  • 数据湖
    https://docs.aws.amazon.com/r…
  • 半结构化
    https://aws.amazon.com/blogs/…
  • AQUA(高级查问加速器)
    https://aws.amazon.com/blogs/…
  • 高出三倍的性价比
    https://aws.amazon.com/blogs/…

然而,如果您想更进一步,解决这些数据以训练 机器学习 (ML) 模型并应用这些模型从仓库中的数据生成见解,该怎么办?例如,要施行预测支出、预测客户散失和检测异样等应用案例?过来,您须要将训练数据从 Amazon Redshift 导出到 Amazon Simple Storage Service(Amazon S3) 存储桶,而后配置并开始机器学习训练过程(例如,应用 Amazon SageMaker)。这个过程须要许多不同的技能,通常须要多个人才能实现。咱们能将这个过程简化吗?

  • Amazon Simple Storage Service(Amazon S3)
    https://aws.amazon.com/s3/
  • Amazon SageMaker
    https://aws.amazon.com/sagema…

📢 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的 2021 亚马逊云科技中国峰会!点击图片报名吧~

近期,Amazon Redshift ML 已正式推出 ,可帮忙您间接从 Amazon Redshift 集群创立、训练和部署机器学习模型。要创立机器学习模型,您能够应用简略的 SQL 查问来指定要用于训练模型的数据以及要预测的输入值。例如, 要创立预测市场营销流动成功率的模型,您能够通过抉择蕴含客户配置文件和以前营销流动后果的列 (在一个或多个表格中) 来定义输出,以及您想预测的输入列。在此示例中,输入列能够是显示客户是否对流动体现出趣味的列。

  • Amazon Redshift ML
    https://aws.amazon.com/redshi…

运行 SQL 命令创立模型后,Amazon Redshift ML 会将指定的数据从 Amazon Redshift 中平安地导出到 Amazon S3 存储桶,并调用 Amazon SageMaker Autopilot 来筹备数据(预处理和特色工程),而后抉择适当的预构建算法,并将该算法利用于模型训练。您能够选择性地指定要应用的算法,例如XGBoost

  • Amazon SageMaker Autopilot
    https://aws.amazon.com/sagema…
  • XGBoost
    https://docs.aws.amazon.com/s…

Amazon Redshift ML 解决 Amazon Redshift、Amazon S3 与 Amazon SageMaker 之间的所有交互,包含训练和编译中波及的所有步骤。模型训练实现后,Amazon Redshift ML 应用 Amazon SageMaker Neo 来优化模型以进行部署,并将其作为 SQL 函数提供。您能够应用 SQL 函数将机器学习模型利用于查问、报告和控制面板中的数据。

  • Amazon SageMaker Neo
    https://aws.amazon.com/sagema…

Amazon Redshift ML 当初包含许多在预览期间未提供的新性能,包含 Amazon Virtual Private Cloud(VPC) 反对。例如:

  • Amazon Virtual Private Cloud(VPC)
    https://aws.amazon.com/vpc/

当初,您能够将 Amazon SageMaker 模型 导入您的 Amazon Redshift 集群中(本地推理)。

  • Amazon SageMaker 模型
    https://docs.aws.amazon.com/r…

您还能够创立应用现有 Amazon SageMaker终端节点 进行预测 SQL 函数(近程推理)。在这种状况下,Amazon Redshift ML 正在批处理对终端节点的调用以放慢处理速度。

  • 终端节点
    https://docs.aws.amazon.com/s…

在钻研如何在实践中应用这些新性能之前,让咱们先看看 Amazon Redshift ML 与亚马逊云科技数据库和剖析服务中的相似性能之间的区别。

  • Amazon Redshift ML
    https://aws.amazon.com/redshi…
  • Amazon Aurora ML
    https://aws.amazon.com/rds/au…
  • Amazon Athena ML
    https://docs.aws.amazon.com/a…
  • 联结关系数据库
    https://aws.amazon.com/blogs/…
  • Amazon Redshift Spectrum
    https://docs.aws.amazon.com/r…
  • 与 MySQL 或 PostgreSQL
    https://docs.aws.amazon.com/A…
  • Athena 联结查问
    https://docs.aws.amazon.com/a…
  • 终端节点
    https://docs.aws.amazon.com/s…
  • Amazon Comprehend
    https://aws.amazon.com/compre…

应用 Amazon Redshift ML 构建机器学习模型

咱们来构建一个模型,预测客户是承受还是回绝营销优惠。

要治理与 Amazon S3 和 Amazon SageMaker 之间的交互,Amazon Redshift ML 须要拜访这些资源的权限。我创立了一个 Amazon Identity and Access Management(IAM) 角色,如 文档中所述 。我将RedshiftML 用于角色名称。请留神,该 角色的信赖策略 同时容许 Amazon Redshift 和 Amazon SageMaker 代入角色,以与其余亚马逊云科技服务交互。

  • Amazon Identity and Access Management(IAM)
    https://aws.amazon.com/iam/
  • 文档所述
    https://docs.aws.amazon.com/r…
  • 该角色的信赖策略
    https://aws.amazon.com/blogs/…

我从 Amazon Redshift 控制台 中创立一个集群。在集群权限中,我关联 Amazon Redshift ML IAM 角色。当集群可用时,我将加载我的共事 Julien 在 Amazon SageMaker Autopilot 发表推出时撰写的这篇超级乏味的 博客文章 中应用的数据集。

  • Amazon Redshift 控制台
    https://console.aws.amazon.co…
  • 博客文章
    https://aws.amazon.com/blogs/…

我正在应用的文件 (bank-additional-full.csv) 为 CSV 格局。每一行都形容了与客户进行的间接营销流动。最初一列 (y) 形容流动的后果(客户是否订阅了向他们营销的服务)。

  • CSV
    https://en.wikipedia.org/wiki…

上面的该文件的前几行。第一行蕴含题目。

age,job,marital,education,default,housing,loan,contact,month,day_of_week,duration,campaign,pdays,previous,poutcome,emp.var.rate,cons.price.idx,cons.conf.idx,euribor3m,nr.employed,y 56,housemaid,married,basic.4y,no,no,no,telephone,may,mon,261,1,999,0,nonexistent,1.1,93.994,-36.4,4.857,5191.0,no
57,services,married,high.school,unknown,no,no,telephone,may,mon,149,1,999,0,nonexistent,1.1,93.994,-36.4,4.857,5191.0,no
37,services,married,high.school,no,yes,no,telephone,may,mon,226,1,999,0,nonexistent,1.1,93.994,-36.4,4.857,5191.0,no
40,admin.,married,basic.6y,no,no,no,telephone,may,mon,151,1,999,0,nonexistent,1.1,93.994,-36.4,4.857,5191.0,no

我将文件存储在我的其中一个 Amazon S3 存储桶中。Amazon S3 存储桶用于卸载数据和存储 Amazon SageMaker 训练构件。

而后,我应用控制台中的 Amazon Redshift 查问编辑器创建表格来加载数据。

  • Amazon Redshift 查问编辑器
    https://docs.aws.amazon.com/r…
CREATE TABLE direct_marketing (
    age DECIMAL NOT NULL,
    job VARCHAR NOT NULL,
    marital VARCHAR NOT NULL,
    education VARCHAR NOT NULL,
    credit_default VARCHAR NOT NULL,
    housing VARCHAR NOT NULL,
    loan VARCHAR NOT NULL,
    contact VARCHAR NOT NULL,
    month VARCHAR NOT NULL,
    day_of_week VARCHAR NOT NULL,
    duration DECIMAL NOT NULL,
    campaign DECIMAL NOT NULL,
    pdays DECIMAL NOT NULL,
    previous DECIMAL NOT NULL,
    poutcome VARCHAR NOT NULL,
    emp_var_rate DECIMAL NOT NULL,
    cons_price_idx DECIMAL NOT NULL,
    cons_conf_idx DECIMAL NOT NULL,
    euribor3m DECIMAL NOT NULL,
    nr_employed DECIMAL NOT NULL,
    y BOOLEAN NOT NULL
);

我应用 COPY 命令 将数据加载到表格中。我能够应用之前创立的雷同 IAM 角色 (RedshiftML),因为我应用雷同的 Amazon S3 存储桶来导入和导出数据。

  • COPY 命令
    https://docs.aws.amazon.com/r…
COPY direct_marketing 
FROM 's3://my-bucket/direct_marketing/bank-additional-full.csv' 
DELIMITER ',' IGNOREHEADER 1
IAM_ROLE 'arn:aws:iam::123412341234:role/RedshiftML'
REGION 'us-east-1';

当初,我应用新的 CREATE MODEL 语句 从 SQL 界面中间接创立模型:

  • CREATE MODEL 语句
    https://docs.aws.amazon.com/r…
CREATE MODEL direct_marketing
FROM direct_marketing
TARGET y
FUNCTION predict_direct_marketing
IAM_ROLE 'arn:aws:iam::123412341234:role/RedshiftML'
SETTINGS (S3_BUCKET 'my-bucket');

在此 SQL 命令中,我指定创立模型所需的参数:

  • FROM–我抉择 direct_marketing 表格中的所有行,但我能够将表格的名称替换为嵌套查问(请参见上面的示例)。
  • TARGET–这是我想预测的列(在此案例中为 y)。
  • FUNCTION–要进行预测的 SQL 函数的名称。
  • IAM_ROLEAmazon Redshift 和 Amazon SageMaker 代入的 IAM 角色,用于创立、训练和部署模型。
  • S3_BUCKET – 长期存储训练数据的 Amazon S3 存储桶,以及您抉择保留模型构件的正本时存储模型构件的地位。
  • Amazon Redshift 和 Amazon SageMaker 代入的 IAM 角色
    https://docs.aws.amazon.com/r…

在这里,我将 简略语法 用于 CREATE MODEL 语句。对于更高级的用户,还能够应用 其余选项,例如:

  • 简略语法
    https://docs.aws.amazon.com/r…
  • 其余选项
    https://docs.aws.amazon.com/r…
  • MODEL_TYPE–应用指定模型类型进行训练,例如 XGBoost 或多层感知器 (MLP)。如果我没有指定此参数,Amazon SageMaker Autopilot 会抉择适当模型类来应用.
  • PROBLEM_TYPE–定义要解决的问题类型: 回归、二进制分类或多级分类。如果我不指定此参数,则会依据我的数据在训练期间发现问题类型。
  • OBJECTIVE–用于测量模型品质的指标指标。此指标在训练期间进行了优化,以便依据数据提供最佳预计。如果我不指定指标,则默认行为为应用 均方误差 (MSE) 进行回归,应用 F1 评分 进行二进制分类,以及应用准确性进行多类分类。其余可用选项包含 F1Macro(用于将 F1 评分利用于多类分类)和 曲线下面积(AUC)。无关指标指标的更多信息,请参阅Amazon SageMaker 文档
  • XGBoost
    https://docs.aws.amazon.com/s…
  • 均方误差(MSE)
    https://en.wikipedia.org/wiki…
  • F1 评分
    https://en.wikipedia.org/wiki…
  • 曲线下面积(AUC)
    https://en.wikipedia.org/wiki…
  • Amazon SageMaker 文档
    https://docs.aws.amazon.com/s…

依据模型的复杂性和数据量,模型可能须要一些工夫能力应用。我应用 SHOW MODEL 命令查看模型何时可用:

  • SHOW MODEL
    https://docs.aws.amazon.com/r…

SHOW MODEL direct_marketing

当我应用控制台中的查问编辑器执行此命令时,我取得以下输入:

正如预期的那样,模型目前处于 TRAINING 状态。

当我创立此模型时,我将表格中的所有列选为输出参数。我想晓得如果我创立一个应用较少输出参数的模型会产生什么?我处于云中,并没有因为无限的资源被拖慢速度,所以我应用表格中的列子集创立另一个模型:

CREATE MODEL simple_direct_marketing
FROM (
        SELECT age, job, marital, education, housing, contact, month, day_of_week, y
       FROM direct_marketing
)
TARGET y
FUNCTION predict_simple_direct_marketing
IAM_ROLE 'arn:aws:iam::123412341234:role/RedshiftML'
SETTINGS (S3_BUCKET 'my-bucket');

一段时间后,我的第一个模型准备就绪,我从 SHOW MODEL 取得了此输入。控制台中的理论输入处于多个页面中,我将后果合并到此处,以便更容易遵循它们:

从输入中,我看到模型已被正确辨认为 BinaryClassification,且F1 被选为指标。F1 评分 是同时思考 精度和召回 的指标。它返回介于 1(完满精度和召回)和 0(最低评分)之间的值。模型的最终评分 (validation:f1) 为 0.79。在此表格中,我还找到了为模型创立的 SQL 函数的名称 (predict_direct_marketing),它的参数及其类型和训练老本的评估。

  • F1 评分
    https://en.wikipedia.org/wiki…
  • 精度和召回
    https://en.wikipedia.org/wiki…

第二个模型准备就绪时,我比拟了 F1 评分。第二个模型的 F1 得分低于第一个模型 (0.66)。然而,因为参数较少,SQL 函数更容易利用于新数据。与机器学习常常存在的状况一样,我必须在复杂性和可用性之间找到适当的均衡。

应用 Amazon Redshift ML 进行预测

既然这两个模型已准备就绪,我能够应用 SQL 函数进行预测。应用第一个模型,我查看在将模型利用于训练的雷同数据时,我失去了多少误报(谬误的阳性预测)和漏报(谬误的阴性预测):

SELECT predict_direct_marketing, y, COUNT(*)
  FROM (SELECT predict_direct_marketing(
                   age, job, marital, education, credit_default, housing,
                   loan, contact, month, day_of_week, duration, campaign,
                   pdays, previous, poutcome, emp_var_rate, cons_price_idx,
                   cons_conf_idx, euribor3m, nr_employed), y
          FROM direct_marketing)
 GROUP BY predict_direct_marketing, y;

查问的结果表明,该模型更长于预测阴性后果,而不是阳性后果。事实上,即便真正的阴性后果数量远远大于真正的阳性后果,但误报比漏报还是要多得多。我在上面的屏幕截图中增加了一些绿色和红色的评论,以廓清后果的含意。

应用第二种模式,我看到多少客户可能对营销流动感兴趣。现实状况下,我应该针对新客户数据运行此查问,而不是我用于训练的数据。

SELECT COUNT(*)
  FROM direct_marketing
 WHERE predict_simple_direct_marketing(
           age, job, marital, education, housing,
           contact, month, day_of_week) = true;

哇,看看后果,有 7000 多个潜在客户!

可用性和定价

Amazon Redshift ML现已在以下 Amazon 区域 推出:美国东部(俄亥俄)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、美国西部(旧金山)、加拿大(中部)、欧洲(法兰克福)、欧洲(爱尔兰)、欧洲(巴黎)、欧洲(斯德哥尔摩)、亚太地区(香港)、亚太地区(东京)、亚太地区(新加坡)、亚太地区(悉尼)和南美洲(圣保罗)。无关更多信息,请参阅Amazon 区域服务列表

  • Amazon Redshift ML
    https://aws.amazon.com/redshi…
  • Amazon 区域
    https://aws.amazon.com/about-…
  • Amazon 区域服务列表
    https://aws.amazon.com/about-…

应用 Amazon Redshift ML,您只需为使用量付费。训练新模型时,您须要为 Amazon SageMaker Autopilot 和 Amazon Redshift ML 应用的 Amazon S3 资源付费。进行预测时,如我在本博文中应用的示例所示,导入到 Amazon Redshift 集群中的模型不会产生额定费用。

  • Amazon SageMaker Autopilot
    https://aws.amazon.com/sagema…
  • Amazon S3
    https://aws.amazon.com/s3/
  • Amazon SageMaker
    https://aws.amazon.com/sagema…

Amazon Redshift ML 还容许您应用现有的 Amazon SageMaker终端节点进行推理。在此案例中,实用用于实时推理的通常 Amazon SageMaker 定价。在此,您能够找到 无关应用 Amazon Redshift ML 管制老本的几点提醒

要理解更多信息,您能够参阅 Amazon Redshift ML 预览版公布时撰写的此 博客文章 文档

应用 Amazon Redshift ML 开始从您的数据中取得更好的见解。

  • Amazon SageMaker 定价
    https://aws.amazon.com/sagema…
  • 无关应用 Amazon Redshift ML 管制老本的几点提醒
    https://docs.aws.amazon.com/r…
  • 博客文章
    https://aws.amazon.com/blogs/…
  • 文档
    https://docs.aws.amazon.com/r…
  • 应用 Amazon Redshift ML 开始从您的数据中取得更好的见解。
    https://aws.amazon.com/redshi…

本篇作者:

Danilo Poccia

Danilo 与不同规模的初创公司及大型企业单干,致力提供各类翻新反对。在负责亚马逊云科技首席布道师(欧洲、非洲与中东市场)期间,他利用本人的丰盛教训帮忙客户将创意灵感转化为事实。他次要关注无服务器架构与事件驱动编程,以及机器学习与边缘计算对于技术及业务的重大影响。他的论著《Amazon Lambda in Action》由曼宁出版社出版发行。

正文完
 0