0

我正在尝试使用 AWS Personalize。创建数据集和批量推理后,我正在更新用户项目交互personalize.putEvents(使用 Javascript SDK,文档

片段:

const awsOpts = { apiVersion, accessKeyId, secretAccessKey, region }
const pEvents = new AWS.PersonalizeEvents(awsOpts)
// ...
const params = {
trackingId, userId, sessionId,
eventList: [{ 
    eventId: (+sentAt) + "",
    sentAt, 
    eventType,
    properties: { itemId }
}]
}
pEvents.putEvents(params, (err, data) => err ? reject(err) : resolve(data))

这些事件似乎已注册。没有错误。之后,当我创建另一个批量推理时,我希望新的用户项不会再出现在推荐中。但是下一次批量推理中的建议没有改变。我做错了什么还是我误解了putEvents-API调用?

供参考的架构:

{
 "type": "record",
 "name": "Interactions",
 "namespace": "com.amazonaws.personalize.schema",
 "fields": [
    {
        "name": "USER_ID",
        "type": "string"
    },
    {
        "name": "ITEM_ID",
        "type": "string"
    },
    {
        "name": "EVENT_TYPE",
        "type": "string"
    },
    {
        "name": "TIMESTAMP",
        "type": "long"
    }
 ],
 "version": "1.0"
}

有一件事似乎有点奇怪:Cloud watch 报告 lambda 被执行了两次,尽管没有错误也没有超过超时(超时设置为10s,并且 lambda 小于2s)。也Retry attempts设置为2

4

3 回答 3

1

我已经尝试了使用 boto3 sdk 进行个性化的相同用例。是的!!放置事件可用于更新用户项目交互。放置事件后无需重新训练模型。看起来 aws 个性化解决方案已兼容以处理使用 put 事件更新的数据。当我运行下一批推理时,在更新与 put events API 的交互后,我可以看到建议的变化。我用个性化的排名配方验证了这一点。我可以看到最近交互的项目根据用户最近的交互重新排名。

于 2020-06-21T16:02:39.213 回答
1

@DJDuff(遗憾的是我无法评论)

您确定使用 PutEvent API 添加的事件无需重新培训即可考虑吗?我一直在通过 AWS Personalize Doc 寻找确切的内容,并且在我看来,您需要重新训练以包含这些事件,并且运行时 api 才能考虑它们。你能指出我在哪里看到他们被认为不需要再培训吗?谢谢

于 2020-06-18T14:45:00.527 回答
1

用户项目建议,至少来自运行时 API 的建议应该在发生某些事件后无需重新训练(这就是​​它的用途,这就是我们使用它的方式)进行更改,尽管可能(需要检查)您需要使用运行时 API查看新建议。

(编辑以澄清 API 被称为“运行时”API - 感谢 PatrykMilewski 寻求澄清 - 我绝不确定使用的特定 API 是否重要 - 我知道在使用运行时时API,事件确实有影响)。

于 2020-06-12T08:59:50.357 回答