1

按照 AWS Personalize 文档,我成功地从 S3 导入了我的数据集(用户、项目、交互),创建了 EventTrcker,训练了模型,并部署了活动。该解决方案没有任何问题,我得到了建议。

我依靠 Putevent 添加新的用户项目交互事件。我还在我的 s3 中使用 Lambda+firehose 转储这些交互事件。但我想知道 AWS Personalize 是否在内部创建/增强了原始用户项目交互数据集?如何访问和下载数据集的修订版?我在“数据集组 > 数据集”中看不到任何新数据集,而不是我原来的 3 个数据集...

我更喜欢定期将其从 AWS Personalize 转储到我的 S3 存储,而不是使用我自己的 Lambda+Firehose 解决方案。

这是我的 Putevent 调用的输出。我看到 200...但不确定它是否正常工作...我应该在 putevents 创建的“数据集组 > 数据集”中看到任何新数据集吗?

{
        "ResponseMetadata": {
            "RequestId": "a6c96496-cbd6-4ad8-9183-371d1794cbd8",
            "HTTPStatusCode": 200,
            "HTTPHeaders": {
                "content-type": "application/json",
                "date": "Mon, 04 Jan 2021 18:04:28 GMT",
                "x-amzn-requestid": "a6c96496-cbd6-4ad8-9183-371d1794cbd8",
                "content-length": "0",
                "connection": "keep-alive"
            },
            "RetryAttempts": 0
        }
    }
4

1 回答 1

1

更新:现在有可能

AWS 文档: https ://docs.aws.amazon.com/personalize/latest/dg/export-data.html

您可以使用此 AWS CLI 命令仅导出已添加但 PutEvents/PutUsers/PutItems API 调用的交互:

aws personalize create-dataset-export-job \
  --job-name job name \
  --dataset-arn dataset ARN \
  --job-output "{\"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://bucket-name/folder-name/\"}}" \
  --role-arn role ARN \
  --ingestion-mode PUT

在这种情况下,--ingestion-mode PUT将确保:

指定 PUT 以仅导出您使用控制台或 PutEvents、PutUsers 或 PutItems 操作增量导入的数据。

所以我相信它涵盖了您的用例。

不,这是不可能的

现在根本不可能导出这些数据。

Personalize 中没有用于检索交互数据集转储的 API。

我相信 Lambda + Firehose 的解决方法是正确的方法。

但是如何测试,如果 PutEvents 有效?

为了确保通过 PutEvents 添加的交互,您可以使用过滤器功能: https ://docs.aws.amazon.com/personalize/latest/dg/filter-expressions.html

几乎创建一个新的过滤器,具有类似的表达式:

EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("your_event_type_name")

这将从推荐中排除用户之前与之交互的任何项目。

然后您可以测试,如果通过 PutEvents API 添加的事件被正确识别:

  1. 如上所述创建过滤器表达式。
  2. 为简单的推荐创建任何活动(用户个性化配方)。
  3. 将过滤器连接到广告系列。
  4. 获取任何用户的推荐并将其保存在某处。
  5. 使用在 4 中返回的任何推荐项目和来自 4 的用户 ID 调用 PutEvents API。
  6. 再次获得与 4 中相同的用户的推荐。

如果不再推荐您使用 PutEvents 调用添加的项目,则您有证据证明通过 PutEvents 调用添加的事件已正确添加到交互数据集。


如果在这种情况下 PutEvents 调用不影响推荐怎么办?

然后只是您在 API 调用中提供了不正确的值。Personalize 可能会返回 200 响应,即使提供的事件无效。

要解决此问题,请尝试:

  1. 确保日期格式正确。如果有更多更新的事件(可以在解决方案配置中进行配置),个性化可能会忽略具有非常旧时间戳的事件。
  2. 检查您是否没有在 PutEvents 参数中为 sessionId、userId、trackingId 传递任何奇怪的值,例如“null”或“undefined”。这可能会导致 Personalize 忽略该事件(https://github.com/aws/aws-sdk-js/issues/3371
  3. 确保您传递了正确的 eventType 值(应该与解决方案和过滤器中的 eventType 匹配)。
  4. 如果它仍然不起作用,请使用示例 PutEvents API 调用参数向 AWS 提出支持请求。

有没有更简单的解决方案?

好吧,也许有,但在我们的项目中,我们使用这种方法,它还测试过滤功能是否正常工作。将来你可能会使用 Filtering,所以我相信它是足够好的方法。

于 2021-01-08T11:13:59.493 回答