训练模型后评估推荐结果

4
首先,我想创建一个推荐系统。在神经网络的帮助下,它应该预测用户X最可能购买哪些文章。
我已经使用正确的数据集和neuMF模型训练了一个模型(您也可以查看图片中的不同层)。 enter image description here [来源https://arxiv.org/abs/1708.05031] 我的数据集包含以下内容:

enter image description here

该列event包含用户是否查看了商品(view),将其放入购物车(addtocart)或购买了它(transaction)。
我已经找到了如何确定推荐内容的示例实现。以下是关于它的说明:
现在我已经训练好了我的模型,准备为给定的播放列表推荐歌曲!然而,我遇到的一个问题(如下所示)是,我需要该新播放列表的嵌入(存储在我的模型中),以便使用kmeans在该嵌入空间中找到最接近的相关播放列表。我不确定如何解决这个问题 - 现在,似乎每次获得输入播放列表时都必须重新训练整个模型才能获得该播放列表的嵌入。因此,我只是从训练集中随机选择一个播放列表(主要是摇滚和老派音乐!)来测试我的模型。

为了推荐歌曲,我首先将所有训练播放列表的学习嵌入进行聚类,然后将“邻居”播放列表作为给定测试播放列表的所有其他播放列表选择在同一个簇中。然后,我取出这些播放列表中的所有曲目,并将测试播放列表的嵌入和这些“邻近”的曲目馈送到我的模型中进行预测。这使得“邻近”的曲目按照它们在给定的测试播放列表中出现的可能性(根据我的模型)排序。

我刚刚训练完模型,现在想推荐哪些物品用户X最有可能购买。我是否需要执行另一个算法的实现来确定最近邻居(例如knn),还是仅需训练模型,然后从中获取数据即可?
在使用数据训练了模型后,我该如何进行下一步操作以获得推荐?在这个领域中,最先进的技术是什么,可以从训练好的模型中获得推荐?
提前感谢您的建议、想法和答案。

为什么不使用tf-serving来部署模型,并通过http或grpc获取推理结果呢? - DachuanZhao
1个回答

2
在使用模型时,取决于您的用例。这是双重的,首先因为特定用例需要的性能(速度),其次是关于neuMF模型的主要弱点(在我看来):如果用户与更多项目交互,则预测不会改变,因为它们不是训练的一部分。因此,在实时在线设置中使用它时,推荐基本上将基于以前的行为,并且不会考虑当前会话,除非重新训练模型。 neuMF模型特别擅长批处理预测间隔推荐。例如,如果您想每周向用户推荐物品,则对于每个用户,预测每个物品的输出概率,然后选择前n(例如10)个概率并推荐这些物品。(您必须在下周重新训练模型,以便根据用户的最新项目交互获得其他预测。)因此,如果有10000个唯一的物品,对于每个用户,进行10000个单独的预测,并基于这些预测推荐n个物品。当然,主要缺点是这10000个预测需要一段时间来执行。因此,它可能不适合实时在线预测。另一方面,如果您聪明地并行化预测,也可以克服这种限制,尽管可能是不必要的。这是因为,如前所述,预测不会根据当前用户交互而改变。
使用knn在嵌入空间中聚类用户,然后取这些用户的物品,并将它们馈送到模型中似乎是不必要的,并且在我看来,这违背了整个模型架构的目的。这是因为neuMF模型的整个重点是将给定用户与所有其他用户的物品交互进行概括,并基于此进行推荐,以便您可以针对特定项目获得用户和项目的概率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接