【问题标题】:The correct way to remove or update Item删除或更新 Item 的正确方法
【发布时间】:2021-01-15 17:52:03
【问题描述】:

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

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

正确吗? PutItems API 会更新现有广告吗?无论如何要删除该项目吗?

【问题讨论】:

    标签: amazon-web-services amazon-personalize


    【解决方案1】:

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

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

    要了解原因,这是 Personalize 用于过滤推荐的或多或少的算法:

    • 为用户获取推荐商品
    • 使用过滤器表达式过滤推荐
    • 返回过滤后剩下的前 N ​​个推荐项目

    因为过滤是在获得推荐后完成的,这意味着 Personalize 将简单地用推荐列表中某处下方的项目填充推荐列表。

    这种方法存在一个问题 - 列表中较低的项目具有较低的“分数”值,这表明推荐的准确性。这就是为什么您最终会得到更糟糕的推荐,但这取决于在过滤掉它们之前推荐了多少带有status = 0 的广告。

    要查看您的推荐分数,只需在 Personalize Web UI 中获取推荐。它将返回带有分数的记录列表。

    更好的方法

    如果您的广告每天更新,那么您绝对可以按照以下步骤解决它:

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

    但是它有一些缺点。

    如果您没有使用用户个性化 (aws-user-personalization) 配方,那么在每次导入项目后,您需要通过创建新的解决方案版本来更新您的解决方案。否则它不会包含项目数据集导入作业所做的更改。

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

    如果你使用的是用户个性化配方,那么根据AWS documentation:

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

    因此,几乎所有工作都在 Personalize 方面完成,您不必担心在每个项目导入作业后重新培训解决方案。

    还有最后一个问题……

    由于用户个性化配方文档声称,您的解决方案将在两小时内更新,那么您可能会在短时间内推荐不可用的项目。如果您每天都在更新项目,这可能是一个严重的问题。

    要解决这种情况,我建议您简单地使用您提到的过滤器方法。多亏了这一点,您可以从这两种方法中受益 并且您的建议始终有效。

    【讨论】:

    • 我有一个 Uber Eats 优食类型的应用程序,餐厅老板可以随时删除项目,推荐算法会立即做出反应。那最好做什么呢?问题中描述的过滤方法效果最好吗?
    • 我相信在这种情况下,使用PutItem API 和status = 0 方法和过滤将是唯一有效的解决方案。您会收到稍差的推荐,但不包括已删除的项目。
    • docs.aws.amazon.com/personalize/latest/dg/… "Amazon Personalize 会自动更新您的最新解决方案版本……每两小时将新项目包含在探索建议中。您的广告系列会自动使用更新后的解决方案版本。您仍应定期培训每周发布新的解决方案版本,以便模型可以从用户的行为中学习。”这意味着增量PutItem 用于添加项目以进行探索。仍然需要定期重新训练模型以利用用户-项目交互中的模式。
    猜你喜欢
    • 2019-06-05
    • 2010-12-17
    • 2012-07-19
    • 2015-07-18
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多