我正在建立分类广告网站的推荐系统,每天都会添加和删除广告。
我想到的是使用PutItems添加新广告并创建名为status = 0
的字段,如果用户删除了广告,我将使用相同的PutItem
API和相同的{ {1}}更新存储的项目,并在生成推荐时使用过滤器仅选择带有ITEM_ID
的广告。
那是正确的吗? PutItems API会更新现有广告吗?而且有删除该项目吗?
答案 0 :(得分:1)
目前无法删除已添加到数据集中的项目。
您的解决方法看起来不错,但根据我使用 Personalize 的经验,过滤器可能会降低您的推荐质量。
要了解原因,这是 Personalize 用于过滤推荐的或多或少的算法:
因为过滤是在获得推荐后完成的,这意味着 Personalize 将简单地用推荐列表中某处的项目填充推荐列表。
这种方法存在一个问题 - 列表中较低的项目具有较低的“分数”值,这表明推荐的准确性。这就是为什么您最终会得到更糟糕的推荐,但在过滤掉它们之前,这取决于推荐了多少个包含 status = 0
的广告。
要查看您的推荐分数,只需在 Personalize Web UI 中获取推荐即可。它将返回带有分数的记录列表。
如果您的广告每天更新,那么您绝对可以按照以下步骤解决此问题:
status = 0
)但是它有一些缺点。
如果您没有使用用户个性化 (aws-user-personalization) 配方,则在每次导入项目后,您需要通过创建新的解决方案版本来更新您的解决方案。否则,它将不包括项目数据集导入作业所做的更改。
创建新的解决方案版本非常缓慢且成本高昂,这就是为什么我建议使用用户个性化配方的原因,如果您想使用这种方法,并且由于 HRNN 配方被标记为旧版,无论如何迁移都是一个好主意。
如果您使用的是用户个性化配方,则根据AWS documentation:
<块引用>Amazon Personalize 每两小时自动更新您的最新解决方案版本以包含新数据。您的营销活动会自动使用更新的解决方案版本。有关详细信息,请参阅自动更新。
所以几乎所有的工作都是在个性化方面完成的,您不必担心在每个项目导入工作后重新训练解决方案。
由于 User-Personalization Recipe 文档声称您的解决方案将在两小时内更新,因此您最终可能会推荐在短时间内不可用的项目。如果您每天都在更新项目,这可能是一个重大问题。
为了解决这种情况,我建议您简单地使用您提到的过滤器方法。多亏了这一点,您可以从这两种方法中受益 并且您的建议始终有效。