Amazon SageMaker功能商店 是一种专门构建的服务,用于存储和检索供机器学习 (ML) 模型使用的特征数据。 Feature Store 提供了一个能够低延迟、高吞吐量读写的在线商店,以及一个提供对所有历史记录数据的批量访问的离线商店。 Feature Store 处理在线和离线商店之间的数据同步。
由于模型开发是一个迭代的过程,客户会频繁查询线下门店,构建各种数据集进行模型训练。 目前,有几种方法可以访问离线商店中的功能,包括运行 SQL 查询 亚马逊雅典娜 或者在 Apache Spark 中使用 Spark SQL。 但是,这些模式需要编写临时的(有时是复杂的)SQL 语句,这并不总是适合数据科学家角色。
功能商店 最近扩展 SageMaker Python SDK 可以更轻松地从离线商店创建数据集。 在此版本中,您可以使用 SDK 中的一组新方法来创建数据集,而无需编写 SQL 查询。 这些新方法支持时间旅行、过滤重复记录和加入多个特征组等常见操作,同时确保时间点的准确性。
在本文中,我们演示了如何使用 SageMaker Python SDK 构建 ML-ready 数据集,而无需编写任何 SQL 语句。
解决方案概述
为了演示新功能,我们使用两个数据集:潜在客户和网络营销指标。 这些数据集可用于构建一个模型,根据为该潜在客户捕获的营销活动和指标,预测该潜在客户是否会转化为销售。
潜在客户数据包含有关使用以下方式识别的潜在客户的信息 Lead_ProspectID
. 线索的特征(例如, LeadSource
) 可以随时间更新,从而为该潜在客户生成新记录。 这 Lead_EventTime
表示创建每条记录的时间。 以下屏幕截图显示了此数据的示例。
网络营销指标数据跟踪潜在客户的参与指标,其中每个潜在客户都使用 Web_ProspectID
。 该 Web_EventTime
表示创建记录的时间。 与潜在客户功能组不同,此功能组中每个潜在客户只有一条记录。 以下屏幕截图显示了此数据的示例。
我们遍历的关键部分 sagemaker-feature-store-offline-sdk.ipynb
笔记本,它演示了以下步骤:
- 从要素组创建数据集。
- 加入多个功能组。
- 根据特定时间戳的一组事件在要素组和数据集之间创建时间点连接。
- 检索特定时间范围内的功能历史记录。
- 检索特定时间戳的特征。
先决条件
您需要满足以下先决条件:
我们假设已经使用现有的线索数据创建了一个特征组 FeatureGroup.create
方法,并且可以使用变量来引用 base_fg
. 有关功能组的更多信息,请参阅 创建特征组.
从要素组创建数据集
要使用 SageMaker SDK 创建数据集,我们使用新的 FeatureStore
类,其中包含 create_dataset
方法。 此方法接受可以与其他功能组或 DataFrame 连接的基本功能组。 我们首先提供潜在客户功能组作为基础和 亚马逊简单存储服务 (Amazon S3) 存储数据集的路径:
create_dataset
方法返回一个 DatasetBuilder
对象,可用于从一个或多个特征组(我们将在下一节中演示)生成数据集。 要创建仅包含潜在客户特征的简单数据集,我们调用 to_csv_file
方法。 这会在 Athena 中运行查询以从离线存储中检索功能,并将结果保存到指定的 S3 路径。
加入多个功能组
借助 SageMaker SDK,您可以轻松加入多个功能组以构建数据集。 您还可以在现有 Pandas DataFrame 与单个或多个功能组之间执行连接操作。 这 基础特征组 是连接的一个重要概念。 基本特征组是具有其他特征组或 Pandas DataFrame 加入其中的特征组。
在使用创建数据集时 create_dataset
函数,我们使用 with_feature_group
方法,它使用基特征组中的记录标识符和目标特征名称在基特征组和另一个特征组之间执行内部连接。 在我们的示例中,基本功能组是潜在客户功能组,目标功能组是网络营销功能组。 这 with_feature_group
方法接受以下参数:
- 功能组 – 这是我们要加入的功能组。 在我们的代码示例中,目标功能组是使用网络营销数据集创建的。
- 库中的目标特征名称 – 我们在连接中用作键的基本特征组中的特征名称。 我们用
Lead_ProspectID
作为基本要素组的记录标识符。 - 包含的功能名称 – 这是基本特征组的特征名称列表。 我们使用这个字段来指定我们想要包含在数据集中的特征。
以下代码显示了通过将基本要素组与目标要素组联接来创建数据集的示例:
您可以通过添加 with_feature_group
前面代码示例末尾的方法,并为新功能组定义所需的参数。 您还可以通过将基础定义为现有 Pandas DataFrame 并加入感兴趣的功能组来对现有 DataFrame 执行连接操作。 以下代码示例显示了如何使用现有 Pandas DataFrame 和现有功能组创建数据集:
有关这些不同配置的更多示例,请参阅 从您的要素组创建数据集.
创建时间点连接
此增强功能最强大的功能之一是可以简单地执行时间点连接,而无需编写复杂的 SQL 代码。 在构建 ML 模型时,数据科学家需要避免 数据泄漏 或目标泄漏,这是在模型训练期间意外使用了在预测时不可用的数据。 例如,如果我们试图预测信用卡欺诈,我们应该排除在我们试图预测的欺诈性收费之后到达的交易,否则经过训练的模型可以使用这种欺诈后信息来改变模型,使其泛化不太好。
检索时间点准确的要素数据需要您提供一个实体 DataFrame,该实体 DataFrame 提供一组记录 ID(或主键)和相应的事件时间,作为事件的截止时间。 这种检索机制有时被称为 行级时间旅行,因为它允许为每个行键应用不同的时间约束。 要使用 SageMaker SDK 执行时间点连接,我们使用 数据集生成器 类并提供实体 DataFrame 作为构造函数的基本参数。
在下面的代码中,我们创建了一个包含两条记录的简单实体 DataFrame。 我们设置事件时间,用来表示截止时间,靠近时间序列数据的中间位置(2023 年 XNUMX 月中旬):
当我们使用 point_in_time_accurate_join
功能与 create_dataset
调用时,内部查询排除所有时间戳晚于提供的截止时间的记录,返回事件发生时可用的最新特征值:
请注意,时间点连接返回的 DataFrame 中只有两条记录。 这是因为我们在实体DataFrame中只提交了两个记录ID,一个对应一个 Lead_ProspectID
我们想找回。 时间点标准指定记录的事件时间(存储在 Lead_Eventtime
字段)必须包含一个小于截止时间的值。
此外,我们指示查询仅检索满足此条件的最新记录,因为我们应用了 with_number_of_recent_records_by_record_identifier
方法。 当与 point_in_time_accurate_join
方法,这允许调用者指定从满足时间点连接条件的记录中返回多少记录。
将时间点连接结果与 Athena 查询结果进行比较
验证 SageMaker SDK 返回的输出 point_in_time_accurate_join
函数,我们将其与 Athena 查询的结果进行比较。 首先,我们使用绑定到特征存储运行时创建的特定表的 SELECT 语句创建标准 Athena 查询。 这个表名可以通过引用找到 table_name
实例化后的字段 athena_query
来自 FeatureGroup
API:
Athena 查询不包含任何时间点连接语义,因此它返回与指定的匹配的所有记录 record_id
(Lead_ProspectID
).
接下来,我们使用 Pandas 库按事件时间对 Athena 结果进行排序,以便于比较。 时间戳晚于实体 DataFrame 中指定的事件时间的记录(例如, 2023-01-15T00:00:00Z
) 提交给 point_in_time_accurate_join
不要出现在时间点结果中。 因为我们另外指定我们只想要来自前面的单个记录 create_dataset
代码,我们只获取截止时间之前的最新记录。 通过将 SageMaker SDK 结果与 Athena 查询结果进行比较,我们看到时间点连接函数返回了正确的记录。
因此,我们有信心可以使用 SageMaker SDK 进行行级时间旅行,避免目标泄漏。 此外,此功能适用于多个功能组,这些功能组可能会在完全不同的时间线上进行更新。
检索特定时间范围内的特征历史记录
我们还想演示在加入特征组以形成数据集时指定时间范围窗口的用法。 时间窗口是使用 with_event_time_range
,它接受两个输入, starting_timestamp
和 ending_timestamp
,并返回一个数据集生成器对象。 在我们的代码示例中,我们将检索时间窗口设置为 1 整天 2022-07-01 00:00:00
直到 2022-07-02 00:00:00
.
以下代码显示了如何在将基本特征组与目标特征组连接时创建具有指定事件时间窗口的数据集:
我们还确认了使用创建的数据集大小之间的差异 with_event_time_range
通过使用导出到 Pandas DataFrame to_dataframe()
方法和显示数据。 请注意结果集如何只包含原始 10,020 条记录的一小部分,因为它只检索其记录 event_time
在 1 天的时间段内。
检索特定时间戳的特征
DatasetBuilder as_of
方法从满足基于时间戳的约束的数据集中检索特征,调用者将其作为参数提供给函数。 此机制适用于以下场景:对先前收集的数据重新运行实验、回溯测试时间序列模型,或从离线商店的先前状态构建数据集以进行数据审计。 此功能有时被称为时间旅行,因为它实质上是将数据存储回滚到更早的日期和时间。 这个时间限制也被称为 截止时间戳.
在我们的示例代码中,我们首先通过读取 write_time
写入特征存储的最后一条记录的值,用 put_record
. 然后我们将这个截止时间戳提供给 DatasetBuilder
作为对 as_of
方法:
请务必注意, as_of
方法将时间约束应用于内部 write_time
字段,由 Feature Store 自动生成。 这 write_time
字段表示将记录写入数据存储时的实际时间戳。 这不同于其他方法,例如 point-in-time-accurate-join
和 with_event_time_range
使用客户端提供的 event_time
字段作为比较器。
清理
请务必删除作为本示例的一部分创建的所有资源,以避免产生持续费用。 这包括功能组和包含离线存储数据的 S3 存储桶。
SageMaker Python SDK 体验与编写 SQL
SageMaker Python SDK 中的新方法允许您在 ML 生命周期中快速创建数据集并快速进入训练步骤。 为了显示可以节省的时间和精力,让我们检查一个用例,在该用例中我们需要加入两个功能组,同时在指定的时间范围内检索功能。 下图比较了离线特征存储上的 Python 查询与用于创建 Python 查询背后的数据集的 SQL。
如您所见,连接两个功能组的相同操作要求您创建一个长而复杂的 SQL 查询,而仅使用 with_feature_group
和 with_event_time_range
SageMaker Python SDK 中的方法。
结论
Python SageMaker SDK 中的新离线存储方法允许您查询离线功能,而无需编写复杂的 SQL 语句。 这为习惯于在模型开发期间编写 Python 代码的客户提供了无缝体验。 有关功能组的更多信息,请参阅 从您的要素组创建数据集 和 特征存储 API:特征组.
这篇文章中的完整示例可以在 GitHub存储库. 试一试,在评论中告诉我们您的反馈。
作者简介
保罗·哈吉斯 他在多家公司专注于机器学习,包括 AWS、亚马逊和 Hortonworks。 他喜欢构建技术解决方案并教人们如何利用它们。 Paul 喜欢帮助客户扩展他们的机器学习计划以解决现实世界的问题。 在加入 AWS 之前,他是 Amazon Exports and Expansions 的首席架构师,帮助 amazon.com 改善国际购物者的体验。
梅西特冈戈尔 是 AWS 的 AI/ML 专家解决方案架构师,帮助客户大规模设计和构建 AI/ML 解决方案。 他涵盖了广泛的电信客户 AI/ML 用例,目前专注于生成 AI、LLM 以及训练和推理优化。 经常可以看到他在荒野徒步旅行或在空闲时间与朋友一起玩棋盘游戏。
Tony Chen 是 AWS 的机器学习解决方案架构师,帮助客户在云中设计可扩展且强大的机器学习功能。 作为一名前数据科学家和数据工程师,他利用自己的经验帮助解决组织在实施机器学习方面面临的一些最具挑战性的问题。
索维克·库马尔·纳特 是 AWS 的 AI/ML 解决方案架构师。 他在机器学习的端到端设计和解决方案方面拥有丰富的经验; 财务、运营和营销分析中的业务分析; 卫生保健; 供应链; 和物联网。 工作之余,Sovik 喜欢旅行和看电影。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- EVM财务。 去中心化金融的统一接口。 访问这里。
- 量子传媒集团。 IR/PR 放大。 访问这里。
- 柏拉图爱流。 Web3 数据智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/build-machine-learning-ready-datasets-from-the-amazon-sagemaker-offline-feature-store-using-the-amazon-sagemaker-python-sdk/
- :具有
- :是
- :在哪里
- $UP
- 1
- 10
- 100
- 11
- 14
- 15%
- 16
- 2023
- 22
- 24
- 7
- 8
- a
- 关于
- 接受
- ACCESS
- 完成
- 精准的
- 横过
- 活动
- 实际
- Ad
- 添加
- 另外
- 后
- AI
- AI / ML
- 所有类型
- 让
- 允许
- 还
- 时刻
- Amazon
- 亚马逊SageMaker
- 亚马逊网络服务
- an
- 分析
- 和
- 另一个
- 任何
- 阿帕奇
- API
- APIs
- 应用的
- 保健
- 论点
- 参数
- AS
- At
- 审计
- 自动
- 可使用
- 避免
- AWS
- 背部
- 回溯测试
- 基地
- 基于
- BE
- 因为
- 很
- 背后
- 之间
- 板
- 棋盘游戏
- 建立
- 建设者
- 建筑物
- 商业
- by
- 呼叫
- 呼叫者
- CAN
- 能力
- 能力
- 捕获
- 卡
- 案件
- 例
- 链
- 挑战
- 充
- 收费
- 程
- 云端技术
- 码
- 注释
- 相当常见
- 公司
- 比较
- 比较
- 对照
- 完全
- 复杂
- 概念
- 信心
- 确认
- 结合
- 组成
- 包含
- 包含
- 兑换
- 相应
- 可以
- 盖
- 创建信息图
- 创建
- 创造
- 信用
- 信用卡
- 标准
- 目前
- 合作伙伴
- data
- 数据科学家
- 数据集
- 日期
- 日期时间
- 天
- 定义
- 定义
- 演示
- 演示
- 设计
- 设计
- 研发支持
- 差异
- 不同
- 显示
- 不会
- 别
- ,我们将参加
- 每
- 此前
- 更容易
- 容易
- 易
- 努力
- 工作的影响。
- 结束
- 端至端
- 订婚
- 工程师
- 保证
- 实体
- 时代
- 本质上
- 活动
- 事件
- 检查
- 例子
- 例子
- 现有
- 扩大
- 体验
- 实验
- 出口
- 延长
- 广泛
- 丰富的经验
- 面部彩妆
- 专栏
- 特征
- 特色商店
- 反馈
- 部分
- 数字
- 文件
- 过滤
- 金融
- (名字)
- 重点
- 重点
- 以下
- 针对
- 申请
- 前
- 发现
- 分数
- FRAME
- 骗局
- 欺诈
- 自由的
- 频繁
- 朋友
- 止
- ,
- 功能
- 功能
- 此外
- Games
- 生成
- 产生
- 生成的
- 生成式人工智能
- 得到
- 给
- 特定
- 团队
- 组的
- 手柄
- 有
- 有
- he
- 医疗保健
- 帮助
- 帮助
- 他的
- 历史的
- 历史
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- 确定
- 识别码
- IDS
- if
- 进口
- 重要
- 改善
- in
- 包括
- 包括
- 包含
- 表明
- 信息
- 项目
- 输入
- 例
- 有兴趣
- 内部
- 国际
- 成
- 物联网
- IT
- 加入
- 加盟
- 加盟
- 加入
- JPG
- 只是
- 键
- 知道
- (姓氏)
- 后来
- 最新
- 铅
- 信息
- 学习
- 减
- 让
- 杠杆作用
- 杠杆
- 自学资料库
- 生命周期
- 喜欢
- 喜欢
- 清单
- 圖書分館的位置
- 长
- 机
- 机器学习
- 使
- 制作
- 许多
- 营销
- 匹配
- 可能..
- 机制
- 满足
- 会见
- 方法
- 方法
- 指标
- 中间
- ML
- 模型
- 模型
- 更多
- 最先进的
- 移动
- 电影
- 多
- 必须
- 姓名
- 名称
- 近
- 需求
- 全新
- 下页
- 笔记本
- 注意..
- 对象
- of
- 这一点在线下监测数字化产品的影响方面尤为明显。
- 经常
- on
- 一
- 正在进行
- 在线
- 仅由
- 操作
- 操作
- 运营
- 优化
- or
- 组织
- 原版的
- 其他名称
- 除此以外
- 我们的
- 产量
- 学校以外
- 超过
- 大熊猫
- 部分
- 部分
- 通过
- 径
- 模式
- 保罗
- 员工
- 演出
- 施行
- 期间
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 播放
- 帖子
- 强大
- 预测
- 预测
- 预测
- 先决条件
- 以前
- 先前
- 小学
- 先
- 问题
- 过程
- 正确
- 预期
- 提供
- 提供
- 优
- 目的
- 蟒蛇
- 查询
- 很快
- 范围
- 阅读
- 真实的世界
- 记录
- 记录
- 引用
- 简称
- 释放
- 代表
- 要求
- 必须
- 需要
- 资源
- 导致
- 成果
- 回报
- 返回
- 回报
- 健壮
- 角色
- 卷
- 行
- 运行
- sagemaker
- 盐
- 同
- 可扩展性
- 鳞片
- 情景
- 科学家
- 科学家
- SDK
- 无缝的
- 秒
- 部分
- 看到
- 语义
- 系列
- 服务
- 服务
- 特色服务
- 集
- 设置
- 格局
- 几个
- 应该
- 显示
- 作品
- 简易
- 只是
- 单
- 尺寸
- So
- 方案,
- 解决方案
- 解决
- 一些
- 火花
- 专家
- 具体的
- 指定
- 标准
- 开始
- 州/领地
- 个人陈述
- 声明
- 步
- 步骤
- 存储
- 商店
- 存储
- 商店
- 提交
- 这样
- 合适的
- 提供
- 供应
- 供应链
- SUPPORT
- 同步
- 表
- 滑车
- 目标
- 教诲
- 专业技术
- 电信
- 比
- 这
- 其
- 他们
- 然后
- 那里。
- 博曼
- Free Introduction
- 那些
- 通过
- 绑
- 次
- 时间序列
- 时间旅行
- 时间表
- 时
- 时间戳
- 至
- 托尼
- 熟练
- 产品培训
- 交易
- 旅行
- 旅游
- 尝试
- 二
- UNIX
- 不像
- 直到
- 更新
- us
- 使用
- 用例
- 用过的
- 运用
- 折扣值
- 价值观
- 各个
- 确认
- vs
- 想
- 是
- 观看
- 方法
- we
- 卷筒纸
- Web服务
- 井
- ,尤其是
- 而
- 这
- 而
- WHO
- 谁的
- 宽
- 大范围
- 维基百科上的数据
- 将
- 中
- 也完全不需要
- 工作
- 合作
- 将
- 写
- 写作
- 书面
- 完全
- 您一站式解决方案
- 和风网