连接SageMaker Canvas与Snowflake,使用Data Wrangler可视化数据处理,训练XGBoost欺诈检测模型,全流程无代码。
第 1 部分涵盖了 Snowflake 数据库设置,并为这个无代码机器学习(ML)工作流建立了基础架构。
本博客系列第 2 部分涵盖了使用 Amazon SageMaker Canvas 完成完整的数据准备和模型构建工作流,演示了如何直接连接到 Snowflake 数据源,使用 Data Wrangler 的可视化转换来转换和准备数据,以及如何使用 XGBoost 算法构建欺诈检测模型。
Amazon SageMaker Canvas 是一个可视化、无代码的机器学习服务,使业务分析师和领域专家能够构建准确的 ML 模型并生成预测。Amazon SageMaker Canvas 为数据准备、模型训练和预测生成提供了直观的界面,在整个组织中民主化了机器学习的访问,同时维护了企业安全与治理。
此解决方案指导您完成使用 Amazon SageMaker Canvas 准备数据并构建机器学习模型的完整工作流,并直接集成到您的 Snowflake 数据仓库。
在开始本文之前,请完成第 1 部分的 Snowflake 环境设置。您需要第 1 部分中的 Snowflake 账户凭证和连接详情来完成本文中的步骤。
打开 AWS Management Console 并搜索 Amazon SageMaker Canvas。从列表中选择它,或按 Enter 键。
域为 Amazon SageMaker 环境提供了基础组织单元。它作为一个专用工作区,容纳用户配置文件、存储配置和安全设置。每个域提供隔离的资源和访问控制,用于管理团队协作和数据治理。
在左侧窗格中导航到环境配置,然后选择域。
选择创建域。
选择为单个用户设置(快速设置)以自动创建您的域和用户配置文件。
从左侧窗格中选择 Canvas。
选择您创建的域和用户配置文件。
等待 3–5 分钟,同时 Canvas 准备您的工作区。
图 1:打开画布后 Amazon SageMaker Canvas 工作区的加载状态
Amazon SageMaker Data Wrangler 简化了机器学习工作流的数据准备工作。通过内置转换和直观的可视化界面,Data Wrangler 减少了传统上花在数据准备和分析上的时间。对于从金融服务到医疗保健的各种行业,这种能力释放了重大价值,使主题专家能够直接准备数据进行分析。
与 Snowflake 的集成减少了数据移动挑战,用户可以直接连接到 Snowflake 数据仓库,在 Canvas 中转换数据,然后直接进入模型构建。这种统一的无代码环境加速了洞察时间,同时维护了数据治理和安全。
在本节中,您将 Amazon SageMaker Canvas 连接到 Snowflake 数据源。
导航到 Amazon SageMaker Canvas 并从左侧导航窗格中选择 Data Wrangler。选择导入并准备,然后选择表格以处理结构化数据集。
图 2:Amazon SageMaker Data Wrangler 导入和准备屏幕,选中了表格
指定表格数据集的来源。从数据源菜单中,选择 Snowflake 作为连接类型。然后选择添加连接以在 Amazon SageMaker Canvas 和 Snowflake 环境之间建立链接。通过这种集成,您可以直接在 Canvas 中访问您的云数据仓库。它避免了手动数据导出,并确保您始终使用 Snowflake 实例中最新的数据。
图 3:在 Data Wrangler 中选择 Snowflake 作为数据源并添加连接
在 Snowflake 连接弹出菜单中,提供以下内容:
账户 ID,设置为您的 Snowflake 组织值,加上连字符,再加上 Snowflake 账户 ID。
您之前设置的 Snowflake 账户用户名。
您之前设置的密码。
图 4:带有连接名称、账户 ID、用户名和密码字段的 Snowflake 连接对话框
连接建立后,您将创建卡级别的异常阈值来识别每张信用卡和类别组合的异常消费模式。这有助于模型检测交易金额何时明显偏离持卡人的典型行为。复制 SQL 查询以准备欺诈检测数据集。
select
CC_NUM,
CATEGORY,
avg(AMT) + (3* stddev_pop(AMT)) as amt_outlier,
case when sum(is_fraud)>1 then 1 else 0 end as fraud_history
from
FRAUD.PUBLIC.FRAUD_TABLE
where trans_date_trans_time<'2020-12-01'
group by
CC_NUM,
CATEGORY
运行查询:选择右上角的在 SQL 中编辑以打开 SQL 编辑器。将 SQL 查询粘贴到编辑器中。选择运行 SQL 以运行和预览结果。选择导入以将数据集引入您的 Canvas 工作区。
选择右上角的在 SQL 中编辑以打开 SQL 编辑器。
将 SQL 查询粘贴到编辑器中。
选择运行 SQL 以运行和预览结果。
选择导入以将数据集引入您的 Canvas 工作区。
图 5:Data Wrangler 中的 SQL 编辑器,显示异常阈值查询结果已准备好导入
在以下步骤中,您将用交易级别特征和商户特定的欺诈指标来丰富数据集。
选择数据流以添加更多数据。在右上角,选择添加数据,然后选择表格。
图 6:数据流画布,带有用于添加第二个数据源的添加数据和表格选项
选择数据源为 Snowflake 以及您之前创建的现有连接。
图 7:为第二个数据源选择现有的 Snowflake 连接
在编辑 SQL 窗口中,粘贴 SQL 查询。此查询提供时间模式(一天中的小时、星期几)、人口统计信息(年龄类别)和商户级别的异常阈值,所有这些都是欺诈检测的关键信号。选择运行 SQL,然后选择导入。
select
t.MERCHANT,
t.CC_NUM,
'H'||extract(hour from t.TRANS_DATE_TRANS_TIME) as TRANS_HOUR,
'D'||extract(dow from t.TRANS_DATE_TRANS_TIME) as TRANS_DOW,
t.state,
t.gender,
'A'||FLOOR(DATEDIFF(YEAR, DATEADD(DAY, 1, CAST(t.dob AS DATE)), CAST(t.TRANS_DATE_TRANS_TIME AS DATE)) / 5) * 5 AS age_category,
t.CATEGORY,
t.IS_FRAUD,
t.AMT,
m.merchant_amt_outlier,
m.merchant_fraud_history
from
FRAUD.PUBLIC.FRAUD_TABLE t
left join (
select
MERCHANT,
avg(AMT) + (3* stddev_pop(AMT)) as merchant_amt_outlier,
case when sum(is_fraud)>1 then 1 else 0 end as merchant_fraud_history
from
FRAUD.PUBLIC.FRAUD_TABLE
where trans_date_trans_time<'2020-12-01'
group by MERCHANT
) m on t.MERCHANT = m.MERCHANT
where t.trans_date_trans_time<'2020-12-01'
图 8:Data Wrangler 预览显示带有时间、人口统计和商户特征的丰富化查询结果
在本节中,您将把数据连接在一起。
在数据流屏幕上,您会看到从 Snowflake 导入的两个数据源。选择第一个数据类型并选择其旁边的加号图标。选择合并数据,然后选择连接。当右侧面板打开时,从数据流中选择要连接的第二个数据类型。
图 9:数据流显示两个 Snowflake 数据源之间的合并数据和连接选项
选择左向外连接作为连接类型。添加连接键,选择 Category 作为左右连接键。
图 10:连接配置,选择左向外连接类型,Category 作为连接键
选择预览以查看连接后的数据。选择添加以继续。
图 11:在添加到数据流之前预览连接后的数据集
接下来,您将创建异常特征并删除敏感列。
返回数据流屏幕,选择连接,选择加号(+)旁边的图标,然后选择添加转换。
图 12:在数据流的连接节点上添加转换
界面打开后,在右侧面板中选择添加转换,然后选择自定义公式。
图 13:在添加转换面板中选择自定义公式
此选项让您可以使用 Spark SQL 表达式灵活地添加列。在主页选项卡上复制并粘贴以下公式。输入输出列名为 CC_FLAG,然后选择添加。
CASE WHEN AMT > AMT_OUTLIER THEN 1 ELSE 0 END
图 14:使用卡异常阈值创建 CC_FLAG 列的自定义公式
要添加另一列,重复相同步骤输入自定义公式,然后复制并粘贴此查询,将输出列命名为 MERCHANT_AMT_FLAG。
CASE WHEN AMT > MERCHANT_AMT_OUTLIER THEN 1 ELSE 0 END
图 15:使用自定义公式根据商户异常阈值创建 MERCHANT_AMT_FLAG 列
为确保模型不包含敏感信息(如卡号、商户名称以及与卡片或商户相关的异常金额),请使用内置转换功能移除这些列。选择 Add transform,然后选择 Manage Columns。将 Transform type 选择为 Drop column。从数据集中选择要移除的列。选择 Add 以应用转换。CC_NUM。AMT_OUTLIER。MERCHANT。MERCHANT_AMT_OUTLIER。
选择 Add transform 并选择 Manage Columns
将 Transform type 选择为 Drop column
从数据集中选择要移除的列
选择 Add 以应用转换。CC_NUM。AMT_OUTLIER。MERCHANT。MERCHANT_AMT_OUTLIER。
MERCHANT_AMT_OUTLIER。
图 16:Manage Columns 转换从数据集中移除敏感列
D. 质量分析与模型导出
数据准备完成后,运行质量分析报告以获取数据洞察。洞察报告可识别常见数据问题,如目标泄漏或类别不平衡,帮助用户在工作流早期解决这些问题。
要启动分析,请选择 Analyses 标签页。在右侧面板中,从 Analysis type 列表中选择 Data Quality and Insights Report。
选择 IS_FRAUD 作为目标列。这将告诉 Canvas 你要预测哪个变量。然后在 Problem type 下选择 Classification 选项。Data size 应保持为 Sampled Dataset。最后,选择 Create 以启动分析。
图 17:Data Quality and Insights Report 配置,IS_FRAUD 为目标列,Classification 为问题类型
几分钟后,将生成一份详细的分析报告,其中包含数据快速摘要、特征摘要、重复行、异常样本等。在 Quick model 部分,查看训练和验证数据集中的准确率指标。准确率统计后附有混淆矩阵。这个报告的作用是:在任何数据工程之后使用它,观察数据工程如何影响模型质量。
图 18:数据质量和洞察报告,包含 Quick model 准确率指标和混淆矩阵
特征摘要部分展示了特征重要性。在实际应用中,如果有预测能力较弱的特征,你可以选择删除这些特征。
图 19:洞察报告的特征摘要部分,展示特征重要性
导出用于模型构建
你已经合并了两个数据源、工程化了新特征、移除了不必要的特征,并通过运行分析预览了模型的潜在准确率。数据准备完成后,就到了构建预测模型的时候了。
首先,返回 Data flow 标签页,选择最终转换节点旁边的加号 (+),然后选择 Create model。
图 20:从数据流中最终转换节点创建模型
在 Model name 下输入一个描述性名称,然后选择 Export and create model。导出过程可能需要几分钟,因为 Canvas 会实时处理整个数据集。
图 21:在 Canvas 中输入模型名称并执行 Export and create model 操作
几分钟后,Build 屏幕将打开。
图 22:导出准备好的数据集后的 Canvas Build 屏幕
选择 IS_FRAUD 作为 Target Column。
在 Model type 下选择 Configure model。将 model type 选择为 2-category model。
图 23:在 Canvas 中配置 2-category 模型类型
接下来,选择 Ensemble 作为训练方法,XGBoost 作为算法,这是一个平衡准确率和效率的战略选择。
图 24:选择 Ensemble 训练方法与 XGBoost 算法
取消选择 FRAUD_HISTORY 和 MERCHANT_FRAUD_HISTORY 列,然后选择 Standard build 开始训练。模型训练大约需要 15–30 分钟。
图 25:取消选择历史列并开始 Standard build
模型训练完成后,导航到 Analyze 标签页查看结果。在这里,你可以检查哪些特征对预测影响最大,并探索散点图和图表,以理解数据值与欺诈分类之间的关系。
图 26:Canvas Analyze 标签页,展示特征影响和欺诈分类图表
选择 Advanced Metrics 以进一步了解模型性能。
图 27:训练好的欺诈检测模型的高级指标视图
接下来,使用训练好的模型对未见过的数据集进行预测。下载示例预测 CSV 文件。导航到 Predict 标签页。选择 Manual,然后选择 Create Dataset。
图 28:Predict 标签页,使用 Manual 数据集创建来生成预测
上传数据集,选择 Preview dataset,然后选择 Create dataset。数据集加载完成后,选择该数据集并选择 Generate Predictions。模型需要几分钟来完成预测。等待任务状态变为 Ready。
要使用 Amazon QuickSight 对结果进行可视化分析,必须首先验证以下前提条件(详见此处):验证 AWS 区域一致性:你的 QuickSight 账户必须设置在与 Amazon SageMaker Canvas 域相同的 AWS 区域中。将 Amazon QuickSight 权限添加到 Amazon SageMaker 执行角色:附加到 Amazon SageMaker 域的 AWS Identity and Access Management (IAM) 执行角色需要额外权限才能将预测结果发送到 Amazon QuickSight。导航到 IAM 控制台,找到与你的 Amazon SageMaker 域关联的执行角色(在最初设置 Amazon SageMaker 域时创建),并按此处描述添加所需的以内联策略。授予 Quick Sight 对 Amazon SageMaker S3 存储桶的访问权限:导航到 Quick Sight,转到 Manage Accounts,然后从左侧导航窗格选择 AWS Resources。确保 Amazon Simple Storage Service (Amazon S3) 处于选中状态,并选择包含 Amazon SageMaker Canvas 生成的预测结果的适当 S3 存储桶,名称为 sagemaker-{region}-{account_id}。添加 Quick Sight 用户:确保你要与之分享预测结果的用户已以 Author 或 Admin 角色添加到你的 QuickSight 账户。转到 Manage Quick Sight 并导航到 Manage users 以邀请新用户或验证现有用户。有关详细信息,请参阅管理用户访问。在发送预测时输入他们的用户名。
验证 AWS 区域一致性:你的 QuickSight 账户必须设置在与 Amazon SageMaker Canvas 域相同的 AWS 区域中。
将 Amazon QuickSight 权限添加到 Amazon SageMaker 执行角色:附加到 Amazon SageMaker 域的 AWS Identity and Access Management (IAM) 执行角色需要额外权限才能将预测结果发送到 Amazon QuickSight。导航到 IAM 控制台,找到与你的 Amazon SageMaker 域关联的执行角色(在最初设置 Amazon SageMaker 域时创建),并按此处描述添加所需的以内联策略。
授予 Quick Sight 对 Amazon SageMaker S3 存储桶的访问权限:导航到 Quick Sight,转到 Manage Accounts,然后从左侧导航窗格选择 AWS Resources。确保 Amazon Simple Storage Service (Amazon S3) 处于选中状态,并选择包含 Amazon SageMaker Canvas 生成的预测结果的适当 S3 存储桶,名称为 sagemaker-{region}-{account_id}。
添加 Quick Sight 用户:确保你要与之分享预测结果的用户已以 Author 或 Admin 角色添加到你的 QuickSight 账户。转到 Manage Quick Sight 并导航到 Manage users 以邀请新用户或验证现有用户。有关详细信息,请参阅管理用户访问。在发送预测时输入他们的用户名。
接下来,选择 Job name 并选择 Send to Amazon QuickSight。
图 29:选择预测任务并将结果发送到 Amazon QuickSight
在新窗口中,添加先前已授予 Amazon QuickSight 权限的用户作为仪表板的查看者,然后选择 Send。
图 30:在将预测结果发送到 Amazon QuickSight 之前添加仪表板查看者
第二部分涵盖了 Amazon SageMaker Canvas 中完整的数据准备和模型构建工作流,从连接到 Snowflake 数据源、使用 Data Wrangler 可视化转换进行特征工程,到合并多个数据源、分析数据质量以及训练欺诈检测模型,全程无需机器学习编程专业知识。训练好的模型现在正在对未见过的数据生成预测,第三部分的基础已经奠定——届时这些由机器学习驱动的洞察将通过 Amazon QuickSight 的交互式仪表板呈现出来。
第一部分 – 使用 Snowflake、Amazon SageMaker Canvas 和 Amazon QuickSight 构建无代码机器学习工作流 – 第一部分:设置 Snowflake 环境
这是三部分系列文章的第三部分。在第一部分中,我们介绍了如何使用 Snowflake 和 Amazon SageMaker Canvas 设置无代码 ML 工作流。在第二部分中,我们展示了如何使用 Snowflake 和 SageMaker Canvas 构建 ML 模型并生成预测。在本文中,我们演示如何使用 Amazon QuickSight 可视化 ML 预测结果,并与利益相关者共享。
在开始之前,你应具备以下条件:
Amazon QuickSight 是一个云端驱动的商业分析服务,可以轻松构建可视化、执行临时分析并从数据中快速获取洞察。它连接到广泛的数据源(包括 Snowflake),并提供无需管理服务器的体验,支持自动扩展。
要开始使用 QuickSight,首先需要注册该服务。由于 QuickSight 是一个完全托管的服务,无需配置或管理服务器。你只需按使用量付费,选项包括按会话和按用户定价。
QuickSight 的直观界面允许你创建多种图表类型和仪表板,无需编写代码。你可以直接连接到 Snowflake 数据并立即开始探索 ML 预测结果。
构建可视化后,你可以通过电子邮件报告、仪表板或嵌入式分析与利益相关者共享。QuickSight 提供细粒度的访问控制,确保正确的人看到正确的数据。
为避免不必要的费用,当不再需要时应删除创建的资源。你可以通过 QuickSight 控制台或使用 AWS CLI 完成此操作。
本文展示了如何使用 Amazon QuickSight 可视化从第一部分和第二部分生成的 ML 预测结果中获取洞察。QuickSight 使得无需管理基础设施即可轻松构建和共享分析。
Raju Gogh,: Sr. Partner Solutions Architect, AWS
Sanjay N,: Sr. Partner Solutions Architect, AWS
Read the full series:
