【问题标题】:Evaluate recommendations after training a model训练模型后评估建议
【发布时间】:2020-10-24 07:39:28
【问题描述】:

首先,我想创建一个推荐系统。在神经网络的帮助下,这应该可以预测用户 X 最有可能购买哪些文章。

我已经用正确的数据集和neuMF 模型的帮助训练了一个模型(你也可以看看图片中的不同层)。

[来源https://arxiv.org/abs/1708.05031]

我的数据集包含以下内容:

event 列包含用户是否查看过商品(查看)、是否将其放入购物车(添加到购物车)或购买过(交易)。

我已经找到了他们如何确定建议的示例实现。以下是关于它的文章:

现在我已经训练了我的模型,我已经准备好推荐歌曲了 给定播放列表!但是,我遇到的一个问题(见下文)是 我需要嵌入那个新的播放列表(存储在我的模型中) 为了在该嵌入中找到最接近的相关播放列表 空间使用kmeans。我不知道如何解决这个问题 - 按原样, 似乎每次我得到一个我都必须重新训练我的整个模型 输入播放列表以获取该播放列表嵌入。因此,我 只需在随机选择的播放列表上测试我的模型(恰好是 摇滚和老歌,主要是!)来自训练集。

为了推荐歌曲,我首先将学习到的嵌入聚类为所有 训练播放列表,然后选择我的“邻居”播放列表 给定测试播放列表作为同一播放列表中的所有其他播放列表 簇。然后我从这些播放列表中获取所有曲目并提供 测试播放列表嵌入和这些“相邻”曲目到我的 预测模型。这将“相邻”轨道按如何排列 在给定的测试中,它们可能(在我的模型下)接下来发生 播放列表。

[来源https://github.com/caravanuden/spotify_recsys]

我刚刚训练了我的模型,现在我想就用户 X 最有可能购买的商品提出建议。 我是否必须执行另一种算法实现,例如确定最近邻 (knn),还是训练模型然后从中获取数据就足够了?

用数据训练模型后,我该如何继续,如何从中获得建议?为了从经过训练的模型中获得建议,该领域的最新技术是什么?

提前致谢。期待建议、想法和答案。

【问题讨论】:

  • 为什么不使用tf-serving来部署模型并通过http或grpc获取推理?

标签: python tensorflow keras deep-learning neural-network


【解决方案1】:

这取决于模型的用例。这是双重的,首先是因为您的特定用例所需的性能(速度),其次是neuMF 模型的主要弱点(在我看来):如果用户与更多项目交互,则预测不会改变,因为他们不是培训的一部分。因此,如果在实时在线环境中使用它,推荐将基本上基于以前的行为,并且不会考虑当前会话,除非模型被重新训练。

neuMF 模型特别擅长对区间推荐进行批量预测。例如,如果您想在每周的电子邮件中向用户推荐项目,那么您将为每个用户预测每个项目的输出概率,然后选择最高的n(例如 10)概率并推荐这些。 (下周您必须重新训练模型,以便根据用户的最新项目交互获得其他预测。)因此,如果有 10000 个唯一项目,则为每个用户进行 10000 个单独的预测,并推荐n-基于这些的项目。主要缺点当然是这 10000 个预测需要一段时间才能执行。因此,它可能不适合实时在线预测。另一方面,如果你对预测的并行化很聪明,这个限制也可以被超越,尽管这可能是不必要的。这是因为,如前所述,预测不会因当前用户交互而改变。

使用knn 将用户聚集在嵌入空间中,然后获取这些用户的项目,并将它们输入模型似乎没有必要,而且在我看来,这违背了整个模型架构的目的。这是因为neuMF 模型的重点是在所有其他用户的交互中概括给定用户与项目的交互,并以此为基础提出建议,这样您就可以在给定用户和项目的情况下获得概率对于那个特定的项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 2019-03-20
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多