编码机

变分自编码器如何淘汰经典的推荐系统

发布时间:2024/1/20 19:14:33   
白癜风治疗的方法 https://m-mip.39.net/czk/mipso_7375991.html
随着信息过载的增加,我们不可能通过观看海量的内容来获取我们想要的项目。推荐系统可以来拯救我们。推荐系统是一种模型,通过向用户展示他们可能感兴趣的内容,帮助他们探索音乐和新闻等新内容。在Snipfeed,我们每天处理成千上万的内容,用户群的要求很高:GenZ.通过利用最先进的深度学习推荐系统,我们帮助用户浏览他们最喜欢的视频、新闻、和博客。麦肯锡估计,“已经有35%的消费者在亚马逊上购买的东西和75%在Netflix上观看的东西来自基于这种算法的产品推荐。”随着推荐系统的日益普及,出现了这样的问题:哪些新的模型和算法可以将推荐提升到一个新的水平?与矩阵分解等更经典的方法相比,它们的性能如何?为了回答这些问题,我决定比较九种方法,并专注于两个指标:NDCG和个性化指数,使用MovieLens数据集进行实验。我使用TensorFlow和Keras来实现这些模型,并使用GoogleColab的GPU对它们进行训练。数据集:MovieLens20M初始数据集为了进行分析,我们将使用著名的数据集MovieLens20M。这个数据集包含了来自电影推荐服务MovieLens的多万个评分。下面是dataframe的示例:该数据集列出了个用户和多部电影。经过清洗和过滤(我们只接受正面评价),我们有:13.6万用户2万部电影万次互动99.64%稀疏度我们还可以从下面的直方图中看到,大多数电影的收视率都在以下…而且大多数用户评价不超过部电影。这与大多数推荐系统问题是一致的:很少有用户对很多电影进行评分,很少有电影有很多评分。训练数据集我们可以根据这些数据建立一个点击矩阵。点击矩阵的格式如下所示。如果用户u与项i交互,则行u和列i上的单元格包含1,否则包含0。我们还将点击向量x定义为点击矩阵的第u行向量。训练验证测试数据集为了评估模型的质量,我们将数据集分成3个子集,一个子集用于训练,一个子集用于验证,一个子集用于测试。我们将使用第一个子集训练模型,第二个子集在训练期间选择最佳模型,最后一个子集获得度量。指标:NDCG和PersonalizationNDCG如前所述,我们将使用两个指标来评估我们的模型。第一个将是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注意,这些建议是有顺序的。因此,我们有:DCGDCG,因为预测1中的前两个项目是我们的目标项目,而这些项目位于预测2的列表末尾。NDCG是DCG的近亲,将分数投影在0到1之间,以便它们在模型之间转换。Personalization(个性化指数)Personalization=计算每对推荐之间的距离,然后计算平均值。为了比较不同的个性化指数,我们将其标准化(就像我们对NDCG所做的那样,我们将分数投影在0到1之间)。为了说明这个指标,让我们看看下面的示例:建议1:用户1:[A,B,C]/用户2:[D,E,F]个性化=1建议2:用户1:[A,B,C]/用户2:[A,B,C]个性化=0协同与基于内容的过滤推荐系统可以分为两类:协同过滤和基于内容的过滤。协同过滤协同过滤是基于用户相似度的RS子族。它通过分析与用户u关系密切的其他用户的口味来预测用户u的兴趣。它基于关系密切的用户喜欢的东西是类似的。基于内容的过滤基于内容的过滤是基于用户偏好和内容相似性的另一类RS,这意味着它基于这样一种想法:如果你喜欢itemi,那么你更可能喜欢类似于i的项,而不是不同于它的项。基于内容定义如上所述,基于内容的方法使用项目描述来查找与用户看到的最接近的项目。我尽可能详尽地实现了这个方法,但是一个几乎没有特征的数据集是这个方法的一个限制。MovieLens数据集只提供电影的类型。但是,我们开发了一个简单的方法,如下面的伪代码所述:reco=zero-vectorofsizenumberofitemsforiinitemsofuseru:forjinthekclosestitemstoi:reco[j]=max(reco[j],1-dist(i,j))outputre

转载请注明:http://www.aideyishus.com/lkjg/6187.html
------分隔线----------------------------