admin 管理员组文章数量: 1087652
变分自编码器如何淘汰经典的推荐系统
作者|Quentin Bacuet 编译|VK 来源|Medium
随着信息过载的增加,我们不可能通过观看海量的内容来获取我们想要的项目。推荐系统可以来拯救我们。推荐系统是一种模型,通过向用户展示他们可能感兴趣的内容,帮助他们探索音乐和新闻等新内容。
在Snipfeed,我们每天处理成千上万的内容,用户群的要求很高:Gen Z.通过利用最先进的深度学习推荐系统,我们帮助用户浏览他们最喜欢的视频、新闻、和博客。
麦肯锡估计,
“已经有35%的消费者在亚马逊上购买的东西和75%在Netflix上观看的东西来自基于这种算法的产品推荐。”
随着推荐系统的日益普及,出现了这样的问题:哪些新的模型和算法可以将推荐提升到一个新的水平?与矩阵分解等更经典的方法相比,它们的性能如何?
为了回答这些问题,我决定比较九种方法,并专注于两个指标:NDCG和个性化指数,使用MovieLens数据集进行实验。我使用TensorFlow和Keras来实现这些模型,并使用Google Colab的GPU对它们进行训练。
数据集:MovieLens 20M
初始数据集
为了进行分析,我们将使用著名的数据集MovieLens 20M。
这个数据集包含了来自电影推荐服务MovieLens的2000多万个评分。下面是dataframe的示例:
该数据集列出了138000个用户和27000多部电影。经过清洗和过滤(我们只接受正面评价),我们有:
13.6万用户
2万部电影
1000万次互动
99.64%稀疏度
我们还可以从下面的直方图中看到,大多数电影的收视率都在5000以下…
而且大多数用户评价不超过500部电影。
这与大多数推荐系统问题是一致的:很少有用户对很多电影进行评分,很少有电影有很多评分。
训练数据集
我们可以根据这些数据建立一个点击矩阵。点击矩阵的格式如下所示。如果用户u与项i交互,则行u和列i上的单元格包含1,否则包含0。
我们还将点击向量xᵤ定义为点击矩阵的第u行向量。
训练验证测试数据集
为了评估模型的质量,我们将数据集分成3个子集,一个子集用于训练,一个子集用于验证,一个子集用于测试。我们将使用第一个子集训练模型,第二个子集在训练期间选择最佳模型,最后一个子集获得度量。
指标:NDCG和Personalization
NDCG
如前所述,我们将使用两个指标来评估我们的模型。第一个将是NDCG,它衡量质量和我们的推荐项目的顺序。我们首先需要定义DCG。DCG越高越好。DCG@p定义为:
I是指示函数,elem_i代表推荐列表的第i个元素。为了说明这个抽象公式,这里有一个简短的例子:
需要建议:{A,B,C}
建议1:[C、A、D]-DCG@3=1.63
建议2:[D、B、A]-DCG@3=1.13
注意,这些建议是有顺序的。因此,我们有:DCG₁ > DCG₂,因为预测1中的前两个项目是我们的目标项目,而这些项目位于预测2的列表末尾。
NDCG是DCG的近亲,将分数投影在0到1之间,以便它们在模型之间转换。
Personalization(个性化指数)
Personalization=计算每对推荐之间的距离,然后计算平均
本文标签: 变分自编码器如何淘汰经典的推荐系统
版权声明:本文标题:变分自编码器如何淘汰经典的推荐系统 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1700299812a386348.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论