训练模型后评估建议

时间:2020-10-24 07:39:28

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

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

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

enter image description here [来源https://arxiv.org/abs/1708.05031]

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

enter image description here

event列包含用户是查看商品(视图),将其放入购物车(购物车)还是购买(交易)。

我已经找到了有关如何确定建议的示例实现。关于它的内容如下:

现在,我已经训练好了模特,现在可以为歌曲推荐歌曲了 给定播放列表!但是,我遇到的一个问题(见下文)是 我需要嵌入新的播放列表(存储在模型中) 为了找到该嵌入中最接近的相关播放列表 使用kmeans的空间。我不确定如何解决这个问题, 似乎每次我得到一个 输入播放列表以嵌入该播放列表。所以我 只需在随机选择的播放列表上测试我的模型(恰好是 摇滚和经典歌曲!)。

要推荐歌曲,我首先将所有 训练播放列表,然后为我的选择“邻居”播放列表 给定测试播放列表,以及该播放列表中的所有其他播放列表 簇。然后,我从这些播放列表和Feed中获取所有曲目 测试播放列表嵌入和这些“相邻”音轨进入我的 预测模型。以此方式将“相邻”音轨排名为 在给定的测试中,它们很可能会(在我的模型下)发生 播放列表。

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

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

用数据训练模型后如何进行操作,如何从模型中获得建议?为了从训练有素的模型接收建议,该领域的最新技术水平是什么?

先谢谢了。期待提出建议,想法和答案。

1 个答案:

答案 0 :(得分:2)

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

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

使用n在嵌入空间中对用户进行聚类,然后获取这些用户的项目,然后将其馈送到模型中似乎是不必要的,而我选择这样做会破坏整个模型体系结构的目的。这是因为knn模型的重点是在所有其他用户的交互中概括给定用户的交互与项目,并以此为基础进行推荐,以便在给定用户和项目的情况下,您可以获得该特定项目的概率。