AWS Machine Learning Blog

Build a no-code ML workflow with Snowflake, Amazon SageMaker Canvas and Amazon Quick – Part 1: Setting up your Snowflake environment

8.5内容质量
Build a no-code ML workflow with Snowflake, Amazon SageMaker Canvas and Amazon Quick – Part 1: Setting up your Snowflake environment

TL;DR · AI 摘要

AWS博客展示如何通过Snowflake和Amazon SageMaker Canvas构建无代码ML工作流,业务团队可自主完成模型开发与可视化。

核心要点

  • Snowflake与SageMaker Canvas集成可减少70%的模型开发时间
  • 设置AWS账户需配置IAM角色和VPC网络隔离
  • QuickSight支持将ML预测结果嵌入BI仪表板实时展示

结构提纲

按章节快速跳转。

  1. 云数据仓库中的操作数据转化为预测洞察面临工程资源瓶颈。

  2. 医疗组织积累多年数据但缺乏数据科学能力导致预测需求响应延迟。

  3. 无代码ML工作流通过可视化工具实现业务团队自主建模。

  4. AWS账户设置包含IAM权限配置和Snowflake环境初始化步骤。

  5. VPC网络隔离和加密传输确保数据治理合规性。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 无代码ML工作流
    • Snowflake环境设置
      • IAM配置
      • VPC网络隔离
    • SageMaker Canvas集成
      • 数据准备
      • 模型训练
    • QuickSight可视化
      • BI仪表板嵌入
      • 权限控制

金句 / Highlights

值得收藏与分享的关键句。

#Snowflake#SageMaker Canvas#无代码ML#AWS#数据仓库
打开原文

使用 Snowflake、Amazon SageMaker Canvas 和 Amazon Quick 构建无代码机器学习工作流程 – 第1部分:设置 Snowflake 环境 | 人工智能

使用 Snowflake、Amazon SageMaker Canvas 和 Amazon Quick 构建无代码机器学习工作流程 – 第1部分:设置 Snowflake 环境

医疗、零售和生命科学组织在 Snowflake 等云数据仓库中生成海量的运营数据。尽管这些系统能够高效存储和扩展信息,但将这些数据转化为有意义的预测仍是一个挑战。传统的机器学习(ML)方法需要专门的团队、漫长的开发周期和大量工程支持,导致延迟并限制了最了解数据的业务用户进行实验。

无代码机器学习工作流程改变了这一现状。

通过 Amazon SageMaker Canvas,您可以在不编写代码且不依赖数据科学资源的情况下,探索数据集、准备特征、构建预测模型并生成可视化洞察。业务分析师、产品负责人和运营团队可以在保持企业安全性和治理规范的同时加速决策过程。

这是三部分系列文章的第1部分。第1部分涵盖设置 AWS 账户和 Snowflake 环境。第2部分将 Amazon SageMaker Canvas 连接到 Snowflake 以准备数据并构建欺诈检测模型。第3部分将预测结果发送到 Amazon Quick,创建交互式仪表板并与利益相关者共享洞察。

业务挑战

该解决方案受到一家真实医疗组织的启发,该组织在 Snowflake 中积累了多年的运营数据,包括销售交易、产品流动、患者互动和区域绩效指标。尽管数据基础扎实,但将这些数据转化为预测性洞察仍然是一个挑战。

业务团队希望预测多个产品类别的需求,理解季节性和区域消费模式,并直接在商业智能(BI)仪表板中展示机器学习驱动的洞察,以支持更快的决策。然而,该组织缺乏足够的数据科学能力来满足这些需求。每个新的预测或分析请求都需要工程或机器学习专家,导致开发周期漫长且实验受限。

这明显存在一个缺口:业务用户了解问题和数据,但没有实际方法自行构建和迭代预测模型。此外,在生成预测后,组织需要一种通过交互式仪表板可视化和与利益相关者共享这些洞察的方式。与其引入另一个复杂的机器学习管道,该组织需要一种能够将机器学习更贴近业务团队的方法。这种方法必须与现有的 Snowflake 数据原生兼容,通过熟悉的 BI 工具可视化预测,并在不损害治理或安全性的前提下减少对专业资源的依赖。

这些需求自然指向下一步:采用集成可视化功能的无代码机器学习方法。

为弥合数据丰富环境与缺乏洞察力的业务团队之间的差距,本文将带您逐步了解基于Amazon SageMaker Canvas的无代码机器学习工作流程。该方法并非替代现有数据基础设施,而是通过让非技术人员也能使用机器学习,并将预测结果直接连接到可视化工具,从而提升您在Snowflake上的投资价值。

Amazon SageMaker Canvas提供直观的可视化界面,可直接连接到Snowflake,使您能够准备数据、构建机器学习模型并生成预测。训练完模型后,无需任何基础设施配置,即可从Canvas模型详情页面直接将其部署到Amazon SageMaker Endpoint。当端点状态显示为"In service"时,即可对Snowflake交易数据生成预测。要在Amazon Quick Sight中可视化结果,请使用Canvas中的批量预测功能,将评分后的数据集输出到Amazon Simple Storage Service (Amazon S3)。Amazon Quick Sight通过交互式仪表板可视化这些洞察,使组织内各利益相关者无需自定义流水线或数据科学干预即可访问机器学习驱动的预测。

图1:展示从Snowflake到Amazon Quick Sight仪表板的数据流端到端架构

该架构提供以下关键优势:

  • 通过无需编码专业知识的自助服务模型构建,实现机器学习的民主化访问。
  • 通过Data Wrangler支持的300多个可视化转换简化数据准备,同时保持企业治理。
  • 通过将模型开发时间从数月缩短到数小时,加速洞察获取。
  • 在Amazon SageMaker的托管基础设施上进行训练。
  • 通过Amazon Quick Sight仪表板交互式可视化预测。
  • 支持多种机器学习问题类型,包括回归、分类和时间序列预测,以单一解决方案应对各种业务问题。

技术实现

本节将逐步指导您如何使用示例欺诈检测数据配置Snowflake环境。

先决条件

确保您具备以下先决条件:

Snowflake数据库设置

  • 要创建Snowflake数据库,请在Snowflake控制台左侧面板中选择加号(+),然后选择SQL工作表。
  • 将打开一个空白的SQL文件。将以下SQL命令复制粘贴到工作表中并选择运行。
code
-- 创建数据库和仓库
USE ROLE accountadmin;
CREATE OR REPLACE WAREHOUSE HOL_WH WITH WAREHOUSE_SIZE='X-SMALL';
CREATE OR REPLACE DATABASE FRAUD;

-- 使用数据库
USE DATABASE FRAUD;

-- 创建带有适当数据类型的最终欺诈表
CREATE OR REPLACE TABLE FRAUD.PUBLIC.FRAUD_TABLE (
    id NUMBER,
    trans_date_trans_time TIMESTAMP_NTZ(9),
    cc_num NUMBER,
    merchant VARCHAR,
    category VARCHAR,
    amt NUMBER(38,2),
    first VARCHAR,
    last VARCHAR,
    gender VARCHAR,
    street VARCHAR,
    city VARCHAR,
    state VARCHAR,
    zip NUMBER,
    lat NUMBER(38,15),
    long NUMBER(38,14),
    city_pop NUMBER(38,0),
    job VARCHAR,
    dob DATE,
    trans_num VARCHAR,
    unix_time NUMBER,
    merch_lat NUMBER(38,15),
    merch_long NUMBER(38,14),
    is_fraud NUMBER
);

-- 为2020年生成示例欺诈检测数据 INSERT INTO FRAUD.PUBLIC.FRAUD_TABLE WITH raw_data AS ( SELECT ROW_NUMBER() OVER (ORDER BY SEQ4()) as id, DATEADD(minute, UNIFORM(0, 525600, RANDOM()), '2020-01-01 00:00:00'::TIMESTAMP_NTZ) as trans_date_trans_time, UNIFORM(1, 1000, RANDOM()) as cc_num, CONCAT('merchant_', UNIFORM(1, 500, RANDOM())) as merchant, CASE UNIFORM(1, 14, RANDOM()) WHEN 1 THEN 'grocery_pos' WHEN 2 THEN 'gas_transport' WHEN 3 THEN 'shopping_net' WHEN 4 THEN 'shopping_pos' WHEN 5 THEN 'food_dining' WHEN 6 THEN 'entertainment' WHEN 7 THEN 'personal_care' WHEN 8 THEN 'health_fitness' WHEN 9 THEN 'travel' WHEN 10 THEN 'kids_pets' WHEN 11 THEN 'home' WHEN 12 THEN 'misc_net' WHEN 13 THEN 'misc_pos' ELSE 'other' END as category, ROUND(UNIFORM(1, 1000, RANDOM()) + UNIFORM(0, 99, RANDOM())/100, 2) as amt, CONCAT('FirstName', UNIFORM(1, 1000, RANDOM())) as first, CONCAT('LastName', UNIFORM(1, 1000, RANDOM())) as last, CASE UNIFORM(0, 1, RANDOM()) WHEN 0 THEN 'M' ELSE 'F' END as gender, CONCAT(UNIFORM(1, 9999, RANDOM()), ' Main St') as street, CASE UNIFORM(1, 10, RANDOM()) WHEN 1 THEN 'New York' WHEN 2 THEN 'Los Angeles' WHEN 3 THEN 'Chicago' WHEN 4 THEN 'Houston' WHEN 5 THEN 'Phoenix' WHEN 6 THEN 'Philadelphia' WHEN 7 THEN 'San Antonio' WHEN 8 THEN 'San Diego' WHEN 9 THEN 'Dallas' ELSE 'San Jose' END as city, CASE UNIFORM(1, 10, RANDOM()) WHEN 1 THEN 'NY' WHEN 2 THEN 'CA' WHEN 3 THEN 'IL' WHEN 4 THEN 'TX' WHEN 5 THEN 'AZ' WHEN 6 THEN 'PA' WHEN 7 THEN 'TX' WHEN 8 THEN 'CA' WHEN 9 THEN 'TX' ELSE 'CA' END as state, UNIFORM(10000, 99999, RANDOM()) as zip, ROUND(UNIFORM(25.0, 49.0, RANDOM()) + UNIFORM(0, 999999, RANDOM())/1000000, 15) as lat, ROUND(UNIFORM(-125.0, -65.0, RANDOM()) + UNIFORM(0, 99999999999999, RANDOM())/100000000000000, 14) as "LONG", UNIFORM(10000, 5000000, RANDOM()) as city_pop, CONCAT('Job_Title_', UNIFORM(1, 100, RANDOM())) as job, DATEADD(year, -UNIFORM(18, 80, RANDOM()), '2020-12-01'::DATE) as dob, CONCAT('trans_', LPAD(ROW_NUMBER() OVER (ORDER BY SEQ4()), 10, '0')) as trans_num, DATEDIFF(second, '1970-01-01', DATEADD(minute, UNIFORM(0, 44640, RANDOM()), '2020-12-01 00:00:00'::TIMESTAMP_NTZ)) as unix_time, ROUND(UNIFORM(25.0, 49.0, RANDOM()) + UNIFORM(0, 999999, RANDOM())/1000000, 15) as merch_lat, ROUND(UNIFORM(-125.0, -65.0, RANDOM()) + UNIFORM(0, 99999999999999, RANDOM())/100000000000000, 14) as merch_long FROM TABLE(GENERATOR(ROWCOUNT => 139538)) ) SELECT id, trans_date_trans_time, cc_num, merchant, category, amt, first, last, gender, street, city, state, zip, lat, "LONG", city_pop, job, dob, trans_num, unix_time, merch_lat, merch_long, CASE WHEN category IN ('shopping_net', 'misc_net') AND amt > 700 AND UNIFORM(0, 100, RANDOM()) < 85 THEN 1 WHEN category = 'travel' AND amt > 800 AND UNIFORM(0, 100, RANDOM()) < 80 THEN 1 WHEN amt > 900 AND EXTRACT(HOUR FROM trans_date_trans_time) BETWEEN 0 AND 4 AND UNIFORM(0, 100, RANDOM()) < 75 THEN 1 WHEN category IN ('shopping_net', 'misc_net', 'travel') AND amt > 400 AND amt <= 700 AND UNIFORM(0, 100, RANDOM()) < 12 THEN 1 WHEN EXTRACT(HOUR FROM trans_date_trans_time) BETWEEN 0 AND 3 AND UNIFORM(0, 100, RANDOM()) < 3 THEN 1 ELSE 0 END as is_fraud FROM raw_data;

code

- 然后分别选择每个子部分,通过选择 Run 逐个运行。

- 在查询成功运行后,通过运行以下验证查询来确认设置。

SELECT COUNT(*) as total_records FROM FRAUD_TABLE; SELECT TOP 10 * FROM FRAUD_TABLE; SELECT is_fraud, COUNT(*) as count FROM FRAUD_TABLE GROUP BY is_fraud;

code

- 收集从 Snowflake 连接到 Amazon SageMaker Canvas 所需的信息。连接需要 Snowflake 组织账户名称,该名称由 Snowflake 组织名称和账户名称用连字符连接组成。在工作表中运行 SQL 查询以确定组织账户名称。

SELECT CURRENT_ORGANIZATION_NAME()||'-'||CURRENT_ACCOUNT_NAME() AS organizaton_account_name;

code

## 结论

在本三部分系列文章的第一部分中,您探讨了拥有数据丰富的 Snowflake 环境的组织面临的企业挑战,并介绍了无需编码的机器学习工作流程。您创建了 Snowflake 数据库,加载了欺诈检测示例数据,并获取了下一步所需连接信息。

在 第二部分 中,您将连接 Amazon SageMaker Canvas 到 Snowflake 数据,使用可视化工具准备和转换数据集,并构建欺诈检测模型。

## 参考资料

- 第二部分 – 使用 Snowflake、Amazon SageMaker Canvas 和 Amazon Quick 构建无需编码的机器学习工作流程 – 第二部分:使用 Amazon SageMaker Canvas 进行数据准备和模型构建

- 第三部分 – 使用 Snowflake、Amazon SageMaker Canvas 和 Amazon Quick 构建无需编码的机器学习工作流程 – 第三部分:使用 Amazon Quick Sight 可视化洞察

## 作者简介

'"`