AWS 个性化获得最多购买的产品

Aws personalize get most buying products

我想获取历史上某个用户购买次数最多的产品。我目前正在使用 USER_PERSONALIZATION 食谱,但 GetRecommendations 总是 returns 错误的结果。请帮忙。

这是我的用户id的交互数据:f5504cb0-0f0e-11e9-b513-bb78938fd0f8,he/she购买了10次并且he/she没有购买id为1A3DTA986EEBT的产品

这是我的代码和结果

如您所见,排名靠前的产品不是 he/she 购买的产品。感谢您的帮助。

Amazon Personalize 根据您的数据构建基于机器学习的推荐系统。因此,它旨在根据用户过去的行为(交互)和他们交互过的 items/products 的属性来预测用户现在对什么感兴趣。一些注意事项:

数据驱动方法

虽然您可以将购买历史导入到 Personalize 中,但它并非设计为您可以查询的数据存储区。如果您只是想要一个用户最常购买的产品列表,数据库可能是更好的工具。例如,要从订单存储在 OrderOrderDetail 表中的关系数据库中获取用户 someuser 购买最多的前 10 个产品,SQL 可能类似于这个:

SELECT od.ItemID, COUNT(*) AS PurchaseCount
FROM Order AS o, OrderDetail AS od
WHERE o.UserID = 'someuser'
AND o.OrderID = od.OrderID
GROUP BY ItemID
ORDER BY PurchaseCount DESC
LIMIT 10

推荐驱动方法

如果您的用例更像是,“给定用户最近的购买,他们可能有兴趣再次购买什么",可以使用个性化。以下是一般步骤。

  • 创建个性化自定义数据集组。
  • 在数据集组中创建一个交互数据集。您的交互数据集架构应至少包含 USER_IDITEM_IDTIMESTAMPEVENT_TYPE.
  • 为以上架构中定义的列中的所有用户创建包含购买历史记录的 CSV。产品 ID 为 ITEM_ID,购买日期为 TIMESTAMP,类似“Purchase”的内容为 EVENT_TYPE.
  • 使用 aws-user-personalization 配方创建解决方案。
  • 为解决方案创建解决方案版本。
  • 为解决方案版本创建个性化营销活动。
  • 创建一个过滤器,仅包含用户最近购买的产品。例如,INCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("Purchase").
  • 使用上面创建的过滤器为广告系列调用 GetRecommendations API。

一个重要的警告是,在过滤交互历史时,Personalize 目前只考虑最近的 200 个历史交互(在批量导入中)和最近的 100 个实时事件(通过 PutEvents API) 每个用户。