0

我们正在使用 AWS Personalize 为特定用户获取我们的源中各种项目的个性化排名。

我们还使用了一个看起来像的过滤器

EXCLUDE ItemID WHERE Interactions.event_type IN ("*")

此过滤器取自AWS 博客,该博客声明

To remove all items that a user has previously interacted with, use the following filter expression:

EXCLUDE itemId WHERE INTERACTIONS.event_type in ("*")

现在玩控制台https://console.aws.amazon.com/personalize/home?region=us-east-1#arn:aws:personalize:us-east-1 ::dataset-group$<dataset_name>/广告系列/campaignDetail/<campaign_arn>

我输入了一个userId=5253ffbb-f5e3-4e71-9a33-91ee65365c7d和一堆项目ID:

5829, 5480, 2275, 6706, 5438, 6444, 6444, 7461, 7599, 4384, 6747, 7499, 6491, 5453, 7605, 5985, 6663, 7174, 1094, 6474, 7357, 7220, 8370, 7445, 5721, 991, 5592, 9283, 7547, 8676, 8872, 8092, 9401, 8645, 2090, 7684, 3788, 5849, 6524, 8480, 7299, 5752, 8007, 9100, 7422, 8640, 7917, 9254, 10050, 9851, 1744, 4227, 6388, 9490, 6481, 5744, 6486, 9040, 4048, 8170, 9623, 7966, 8560, 5336, 3885, 4441, 10442, 6842, 4898, 567, 4214, 125, 9556, 10039, 5494, 9447, 10051, 8302, 9482, 6649, 9133, 4828, 8288, 62, 9680, 4792, 10785, 9727, 10777, 11366, 10252, 9728, 2450, 10463, 9578, 4246, 10154, 10793, 10299, 6733, 10597, vy7erddv, 9247, 9816, 8385, 9589, 10845, 10368, 11427, 11405, 10475, 11273, 11392, 11335, 5871, 10465, 10927, 9371, 9894, 10773, 10747, 11274, 11349, 10831, 9882, vaxq362m, m3g32ayv, 5wqa8r4v, km7kl7kv, 3wno92pm, 3m483l5v, pv9rallv, lmr4dn8v

现在我记录这个用户与一些项目的交互并重新加载控制台建议......

似乎按预期工作,如果用户已经与它们交互,则这些项目将从列表中过滤出来。

但令我惊讶的是......这些项目不会无限期地被过滤......如果我继续为该用户记录与其他项目的交互,那么稍后重新加载的推荐可能会包含以前与之交互的项目。或者给定足够的时间(比如一天),所有的项目似乎都会为这个用户回来!!

我完全不知道为什么它会这样。

交互被跟踪为

POST https://personalize-events.us-east-1.amazonaws.com/events
{
   "eventList": [ 
      { 
         "eventType": "list_view",
         "ITEM_ID": "vaxq362m",
         "properties": "{\"itemType\": \"artwork\", \"itemId\": \"vaxq362m\"}",
         "sentAt": {{$timestamp}}
      }
   ],
   "sessionId": "xxx1234",
   "trackingId": "<OUR_TRACKING_ID>",
   "userId": "5253ffbb-f5e3-4e71-9a33-91ee65365c7d"
}

这似乎有效,因为

  1. 响应状态为 200
  2. 如果我导出交互数据集,交互将出现在 CSV 中
  3. 这些项目确实会在短时间内从返回的建议中删除
4

1 回答 1

1

对交互数据集的过滤不会考虑用户的完整历史记录。从文档

Amazon Personalize 会考虑最多 200 个用户的历史交互,以及您使用 PutEvents 操作为用户记录的最多 100 个流式交互。此外,Amazon Personalize 为用户考虑的历史交互次数取决于您在训练之前定义的 max_user_history_length_percentile 和 min_user_history_length_percentile 超参数。

例如,如果您将 0.99 用于 max_user_history_length_percentile,并且 99% 的用户最多进行 4 次交互,Amazon Personalize 将仅根据用户最近的 4 次历史交互进行过滤。如果用户的历史交互次数少于 min_user_history_length_percentile,则 Amazon Personalize 在过滤时不会考虑用户的交互。

要根据用户的最多 200 个历史交互进行过滤,请将 max_user_history_length_percentile 设置为 1.0 并重新训练模型。

于 2021-12-21T15:35:01.053 回答