问题标签 [feature-store]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - 是否有可用于 SageMaker 的 REST API,或者是否可以通过 Amazon API Gateway 与 SageMaker 交互?
SageMaker 在 AWS 上提供完整的机器学习开发环境。它与Amazon SageMaker Python SDK一起使用,它允许 Jupyter Notebooks 与该功能进行交互。这也提供了使用Amazon SageMaker Feature Store的途径。
是否有任何可用于 SageMaker 的 REST API?假设有人想创建自己的自定义 UI,但仍使用 SageMaker 功能,这可能吗?
可以使用Amazon API Gateway完成吗?
mysql - 如何设计一个可以处理非结构化/多样化元数据的又高又窄的数据库表?
我正在设计一个数据库表来存储机器学习特征(即特征存储),并且正在考虑使用这个高/窄模式:event_date, feature_name, feature_value, creation_date
.
这适用于简单的功能,但似乎在更复杂的场景中有所不足。
让我们考虑一个示例场景,我们想要存储与商店相关的功能(商品购买,订单取消......),我们可能有看起来像的功能
活动日期 | 商店名称 | 特征名称 | 特征值 | 创建日期 |
---|---|---|---|---|
2021-01-01 | 食品公司 | items_sold | 10 | 2021-05-01 |
2021-01-02 | 食品公司 | items_sold | 5 | 2021-05-01 |
2021-01-01 | 补充剂公司 | items_sold | 8 | 2021-05-01 |
2021-01-02 | 补充剂公司 | items_sold | 3 | 2021-05-01 |
2021-01-01 | 食品公司 | 订单取消 | 2 | 2021-05-01 |
但是如果我想跟踪更精细的数据,例如产品名称或客户类型,该怎么办?上述模式是否足够灵活?我将如何存储额外的元数据?
架构提案 1
这将元数据包含在特征名称中,例如cheese_item_purchases_french_customer
表示cheese
从 a 购买项目french_customer
,将这两条元数据存储在feature_name
活动日期 | 商店名称 | 特征名称 | 特征值 | 创建日期 |
---|---|---|---|---|
2021-01-01 | 食品公司 | cheese_item_purchases_french_customer | 9 | 2021-05-01 |
2021-01-01 | 食品公司 | cheese_item_purchases_german_customer | 4 | 2021-05-01 |
2021-01-01 | 补充剂公司 | 维生素_d_item_purchases_french_customer | 7 | 2021-05-01 |
2021-01-01 | 补充剂公司 | 维生素_d_item_purchases_german_customer | 2 | 2021-05-01 |
2021-01-01 | 食品公司 | orders_cancelled_french_customer | 2 | 2021-05-01 |
似乎很难查询,需要知道 feature_name 列的确切结构
架构提案 2
添加元数据列
活动日期 | 商店名称 | 特征名称 | 元数据 | 特征值 | 创建日期 |
---|---|---|---|---|---|
2021-01-01 | 食品公司 | items_sold | {product_name:奶酪,customer_class:法国} | 9 | 2021-05-01 |
2021-01-01 | 食品公司 | items_sold | {product_name:奶酪,customer_class:德语} | 4 | 2021-05-01 |
2021-01-01 | 补充剂公司 | items_sold | {product_name:vitamin_d,customer_class:法语} | 7 | 2021-05-01 |
2021-01-01 | 补充剂公司 | items_sold | {product_name:vitamin_d,customer_class:德语} | 2 | 2021-05-01 |
2021-01-01 | 食品公司 | 订单取消 | {customer_class:法语} | 2 | 2021-05-01 |
查询似乎也很困难(而且效率低下?)
架构提案 3
使用两个表来存储特征值和特征元数据
特征存储表
活动日期 | 商店名称 | 特征名称哈希 | 特征值 | 创建日期 |
---|---|---|---|---|
2021-01-01 | 食品公司 | 特征_1 | 10 | 2021-05-01 |
2021-01-01 | 食品公司 | 特征_2 | 5 | 2021-05-01 |
2021-01-01 | 补充剂公司 | 特征_1 | 8 | 2021-05-01 |
2021-01-01 | 补充剂公司 | 特征_2 | 3 | 2021-05-01 |
2021-01-01 | 食品公司 | 特征_3 | 2 | 2021-05-01 |
特征元数据表
特征名称哈希 | 特征名称 | 元数据名称 | 元数据值 |
---|---|---|---|
特征_1 | items_sold | 产品名称 | 起司 |
特征_1 | items_sold | 客户类 | 法语 |
特征_2 | items_sold | 产品名称 | 起司 |
特征_2 | items_sold | 客户类 | 德语 |
特征_3 | 订单取消 | 客户类 | 法语 |
似乎是最灵活和最干净的,但会使查询可能更复杂。例如,我如何检索 have 中feature_store_table
的所有条目{'product_name': 'cheese', 'customer_class': 'french'}
?
当然,所有这些的替代方法是为每个功能使用多个短/宽表,但对于我的用例,我更喜欢坚持高/窄格式。
您对提议的方法或我错过的任何更好的方法有什么建议吗?不管上述前提如何,我一定要考虑转移到多个短/宽表吗?
谢谢
postgresql - 是否可以从 SageMaker Data Wrangler 连接到 Postgres 数据库?
我使用Amazon Relational Database Service (RDS)在 AWS 中设置了一个常规 Postgres 数据库。我想使用数据管理员来摄取这些数据以进行检查和进一步处理。
这可能吗?我只将 S3、Athena、Redshift 和 SnowFlake 视为数据摄取选项。这是否意味着我必须将数据从 Postgresql 移动到这 4 个选项之一,然后才能使用 Data Wrangler?
如果无法通过数据管理员,我可以通过 Jupyter 笔记本连接到我的 Postgres,使用连接字符串或类似的选项吗?我希望将数据用于 SageMaker Feature Store。
python - AWS SageMaker Feature Store 如何知道在摄取数据时要执行哪些转换?
在 SageMaker Feature Store 中创建功能组时,您需要执行以下步骤:
- 设置 SageMaker Python SDK 和 boto 客户端
- 检查我们想要使用的数据,并应用转换(例如删除 NA、整数等)
- 将转换后的数据提取到特征存储中
- 通过在功能组上运行 Athena 查询来构建训练数据
- 选择训练列
- 将训练数据集保存到 S3 存储桶
- 训练和部署模型
- 使用 GetRecord 功能对来自特征存储的最近数据进行预测。
您可以在此处查看详细的步骤示例。
但是,特征存储如何在进行预测之前将转换应用于数据?显然,新摄取的数据必须进行转换(因此与训练中的相同),但我们仅在第 2 步中进行了这些转换,然后才将任何内容添加到特征组。似乎遵循这些步骤并没有让特征存储对转换有任何了解。
例如,在链接的示例中,他们将转换后的数据添加到transaction_feature_group
如下:
所以我们可以看到转换后的数据是加载到特征组中的。但是随着时间的推移添加的新数据呢?这些新数据如何自动转换?
amazon-web-services - 如何按名称从 SageMaker 功能商店中删除功能组
使用 SageMaker Python SDK 删除特征组的方法如下:
但这只会删除您当前正在处理的功能组。如何从以前的会话中删除功能组?我尝试直接将它们从 S3 存储桶中删除,但它们仍然出现在 Feature Store UI 中。
如果可以通过 UI 删除功能组,那就太好了。但如果没有,有没有办法使用全名删除功能组?使用以下方法创建的那个:
amazon-web-services - SageMaker Feature Store 是否使用 Athena 查询(数据虚拟化)来提高其查询的性能?
SageMaker 拥有从批量和在线读取数据的快速性能。我想知道幕后发生了什么。这些 Athena 查询是否在功能存储使用的幕后?它是访问物化视图,还是这些查询直接针对 S3 中的分区数据运行(因此由于分区而不是物化视图而更快)?
amazon-web-services - 在 AWS Feature Store 中创建功能组时出现 413 错误
这个页面说每个特征组的特征定义数可以是 2500。我还遵循了所有约束,包括名称长度小于 64 的 feature_definition 约束。通过以下 API 创建具有 2100 个特征的特征组时:
错误:
但我尝试创建另一个具有 2100 个特征但名称长度非常小的特征组,例如“0”、“1”、“2”、...“2099”;它奏效了。功能组的创建没有错误。任何线索为什么它会因常规列名而失败?TIA
python - 我如何/在哪里可以转换/及时聚合我在 Google VertexAI 特征库中的特征?
我们正在研究 Google Cloud Platform 中的VertexAI 特征库,以便在我们公司中使用。但是文档非常薄弱!
在文档中,它仅展示了如何从 BigQuery/CSV/Arvo 提取特征,但没有举例说明/展示如何进行特征转换,例如及时特征聚合。
有没有人有这方面的经验或知道如何在特征库中做到这一点?或者我们应该已经转换特征并将转换后的特征提取到没有太大意义的特征库中!?
google-cloud-ml - 您能否将 parquet 或 delta 文件格式数据集中的数据导入 Vertex AI 特征库
只是想知道是否不仅可以从基于 CSV 的数据集导入 Vertex AI 功能存储,还可以从 parquet 或 delta 文件格式导入。当尝试从 GCP 中导入数据集时,它提供的唯一选项是来自 BigQuery 或来自 CSV。
我附上了一张给定选项的图片
没有 Parquet 选项 - 只有 CSV 和 BigQuery
有谁知道是否有一种 API/插件/其他方法可以将 parquet 或 delta 文件直接加载到 Vertex AI 功能存储中?
谢谢!
feature-engineering - ML 中的 FeatureStore 以及何时使用它们
我发现功能存储是一种在商业环境中操作 ML 管道的机制。听起来不错,但我发现在进行探索性数据分析时很难理解何时何地使用它。例如,考虑一个预测给定地理位置的房价的简单用例。我从包含历史房价的远程服务器获取原始数据,其中包含一些列(特征),如下所示:
这只是功能集的一个小表示。作为一名数据工程师,可能必须查看原始数据,进行一些简单的统计分析,例如:
- 识别 Null 或 NaN 值并估算它们
- 识别特征与目标变量的相关关系,并确定是否删除某些特征
- 识别数字变量的唯一计数,并在唯一计数低于某个阈值时确定删除该特征或列
- 删除重复行
- 对分类数据执行 OneHotEncoding
- 识别和去除异常值
- 执行降维/特征缩放
现在假设我将只执行前几个步骤,或者我将执行上述所有步骤,我想知道使用特征存储将如何加速或更确切地说操作我的 ML 管道?