Amazon web services 删除或更新项目的正确方法

Amazon web services 删除或更新项目的正确方法,amazon-web-services,amazon-personalize,Amazon Web Services,Amazon Personalize,我正在为分类广告网站建立推荐系统,每天都会添加和删除广告 我想到的是使用添加新的广告并创建名为status=0的字段,如果用户删除了广告,我将使用具有相同ITEM\u ID的相同PutItemAPI更新存储的项目,并在生成推荐时使用过滤器仅选择状态为0的广告 对吗?PutItems API是否会更新现有广告?是否仍要删除该项?目前无法删除已添加到数据集的项。 您的解决方案看起来不错,但是根据我使用Personalize的经验,过滤器可能会降低您的推荐质量 要了解原因,这或多或少是个性化用于过滤建

我正在为分类广告网站建立推荐系统,每天都会添加和删除广告

我想到的是使用添加新的广告并创建名为
status=0
的字段,如果用户删除了广告,我将使用具有相同
ITEM\u ID
的相同
PutItem
API更新存储的项目,并在生成推荐时使用过滤器仅选择状态为0的广告


对吗?PutItems API是否会更新现有广告?是否仍要删除该项?

目前无法删除已添加到数据集的项。

您的解决方案看起来不错,但是根据我使用Personalize的经验,过滤器可能会降低您的推荐质量

要了解原因,这或多或少是个性化用于过滤建议的算法:

  • 获取用户推荐的项目
  • 使用筛选器表达式筛选建议
  • 返回筛选后剩余的前N个推荐项目
因为过滤是在获得推荐后完成的,这意味着Personalize将简单地用推荐列表中的某个项目填充推荐列表

这种方法存在一个问题——列表中较低的项目的“得分”值较低,这表明了建议的准确性。这就是为什么你最终会得到更糟糕的推荐,但这取决于在过滤掉那些状态为
status=0
的广告之前,推荐了多少广告

要查看您的推荐分数,只需在个性化web UI中获取推荐即可。它将返回带有分数的REC列表

更好的方法 如果你的广告每天都在更新,那么你完全可以通过以下步骤来解决这个问题:

  • 创建Lambda函数,该函数每24小时触发一次
  • Lambda将获取所有广告,并将它们作为CSV文件放入S3存储桶中。它应该排除不再可用的广告(
    status=0
  • 使用您选择的任何AWS SDK调用API,并提供存储在S3 bucket上的数据
  • Personalize将启动导入作业。完成后,所有项目都将替换为最新的转储
然而,它也有一些缺点

如果未使用用户个性化(aws用户个性化)配方,则每次导入项目后,需要通过创建新的解决方案版本来更新解决方案。否则,它将不包括项数据集导入作业所做的更改

创建一个新的解决方案版本是非常缓慢和昂贵的,这就是为什么我建议使用用户个性化配方,如果您想使用这种方法,并且由于HRNN配方被标记为遗留,所以无论如何迁移都是一个好主意

如果您使用的是用户个性化配方,则根据

Amazon Personalize每两小时自动更新您的最新解决方案版本,以包含新数据。您的活动将自动使用更新的解决方案版本。有关更多信息,请参见自动更新

所以,几乎所有的工作都是在个性化方面完成的,您不必担心每次项目导入作业后的解决方案再培训

最后一个问题。。。 由于for User Personalization Recipe文档声称,您的解决方案将在两小时内更新,因此您可能最终会推荐一些短期内不可用的项目。如果您每天更新项目,这可能是一个重大问题

为了解决这个问题,我建议您只使用您提到的过滤器方法。由于这一点,两种方法都有好处
你的推荐总是有效的。

我有一个Uber Eats类型的应用程序,餐馆老板可以随时删除物品,推荐算法应该会立即做出反应。那最好怎么办?问题中描述的过滤方法是否最有效?我相信在这种情况下,使用
PutItem
API和
status=0
方法,过滤将是唯一有效的解决方案。您将收到稍差的推荐,但不包括已删除的项目。