当前位置: 首页 > 科技观察

大观推荐算法的实现:协同过滤itemembedding

时间:2023-03-15 09:28:12 科技观察

推荐系统的本质是解决用户需求不明确时的信息过载问题,联系用户和信息。一方面,它帮助用户找到对他们有价值的信息。一方面可以将信息展示在感兴趣的用户面前,实现信息消费者和信息生产者的双赢(这里信息的含义可以很广泛,比如咨询,电影及商品等,以下统称项目)。与大观数据相关的推荐是大观推荐系统的重要组成部分。它的价值在于可以在没有用户画像信息的情况下给用户很好的推荐体验,比如信息,通过大观相关推荐算法找到物品相关的信息。其他条目可以提供对某一类别或某一事件的多角度、多方面的深度解读。本文主要简单介绍了相关推荐的一些常用算法,然后介绍了基于itemembedding的协同过滤。1.大观相关推荐的常用算法1.1基于内容的相关推荐基于内容的推荐一般依赖于良好的标签系统,通过计算物品之间标签集的相似度来衡量物品之间的相似度。一套好的标签系统需要多方面打磨。一方面,它需要良好的编辑。另一方面,还要靠产品设计来引导用户在使用产品的过程中为物品提供优质的标签。1.2基于协同过滤的相关推荐协同过滤主要分为基于领域和基于隐式语义模型。在基于领域的算法中,ItemCF是目前业界使用最广泛的算法。它的主要思想是“喜欢项目A的用户大多喜欢用户项目B”。通过挖掘用户历史操作日志,利用群体智慧,生成该物品的候选推荐列表。.主要统计两个item的共现频率,兼顾时间,过滤掉热门用户和热门item的权重。LFM(latentfactormodel)隐语义模型是近年来推荐系统领域最热门的研究课题。该算法最早是在文本挖掘领域提出的,目的是寻找文本的隐藏语义。在推荐领域,其核心思想是通过潜在特征链接用户和物品兴趣。主要算法有pLSA、LDA、矩阵分解(SVD、SVD++)等,这些技术和方法在本质上是相似的。以LFM为例,使用下面的公式来计算用户u对itemi的兴趣:公式中,pu,k和qi,k为模型的参数,其中pu,k衡量用户u对itemi兴趣的关系u和第k个隐藏类,而qi,k衡量第k个隐藏类和项目i之间的关系。其中,qi和k可以看作是将item投射到隐藏类组成的空间中,item的相似度从而转化为隐藏空间中的距离。2.item2vec:NEURALITEMEMBEDDING2.1word2vec2013年年中,谷歌发布的word2vec工具引起了大家的热情,许多互联网公司纷纷跟进,并取得了很多成果。2016年,OrenBarkan和NoamKoenigstein借鉴了word2vec的思想,提出了item2vec。在通过结合SGNS(带负采样的skip-gram)的浅层神经网络进行训练后,该项目被映射到一个固定维度的向量空间。衡量项目之间的相似性。下面简单分享一下item2vec:由于item2vec基本参考了Google的word2vec方法,应用于推荐场景中的item2item相似度计算,所以先简单介绍一下word2vec的基本原理。Word2vec主要用于挖掘词的向量表示。向量中的值可以对句子中的单词与上下文信息之间的关系进行建模。它主要包括两个模型:CBOW(continuousbag-of-word)和SG(skip-gram),从一个简单版本的CBOW模型引入,上下文只考虑一个词的情况,如图1所示,假设假设只有一个隐藏层神经网络,输入层和输出层都是词的one-hotencoded表示,假设词汇量为V,隐藏层神经元个数为N,则相邻层的神经元全连接,层间权重用一个V*N的矩阵W表示,隐藏层到输出层的激活函数使用softmax函数,其中wI和wj是词汇表中的不同词,yj为输出层第j个神经元的输出,uj为输入层通过权重矩阵W到隐含层的得分,uj'为隐含层通过权重矩阵W'到隐含层的得分输出层。训练这个神经网络,首先使用反向传播算法计算网络输出与真实值的差值,然后使用梯度下降反向更新层间权重矩阵,得到更新公式:其中,η为更新步长size,ej为模型预测值与真实值的误差,h为隐层向量。图2显示了上下文是多个单词时的情况。中间隐藏层h的计算由输入向量改为多个上下文向量求和求平均。后续的参数学习类似于上面单个词的上下文。遍历上下文-目标词对的整个训练集,多次迭代后更新模型参数,对模型中向量的影响会累积,最终学习到词的向量表示。Skip-gram和CBOW的输入层和输出层正好相反。不同的是,CBOW是上下文,通过模型预测当前词,而skip-gram是通过当前词预测上下文。至此,对于词汇表中的每个词,有两个向量表示:输入向量和输出向量,分别对应输入层到隐含层权值矩阵W的行向量和隐含层到输出层的列向量权重矩阵W',从式4和式5可以看出,对于每一个训练样本,都需要遍历词汇表中的每一个词。因此,学习输出向量的计算量非常大。如果训练集或词汇量很大,训练在实际应用中是不可操作的。为了解决这个问题,直观的做法是限制每个训练样本需要更新的输出向量。Google提出了两种方法:hierarchicalsoftmax和negativesampling,加速模型训练,不再赘述。2.2item2vec受wordvec在NLP领域大获成功的启发,OrenBarkan和NoamKoenigstein使用item-basedCF学习item在低维潜在空间的embedding表示,优化item的相关推荐。单词的上下文是相邻单词的序列。很容易想到,单词序列其实就等价于一系列连续操作的项序列。因此,训练语料只需要将句子变成一个连续操作的项目序列。共现为正样本,负样本根据item的频率分布进行采样。OrenBarkan和NoamKoenigstein以SVD为基线,SVD的隐藏类和item2vec的维度均设置为40,使用MicrosoftXboxMusic服务收集的user-artists数据集对结果进行聚类,如图图3,图a是item2vec的聚合效果,图b是SVD分解的聚合效果,貌似item2vec的聚合效果更好。作者尝试将item2vec应用到视图数据的相关推荐中。由于在信息和短视频的场景中一般会有比较多的连续item操作,自然非常适合使用item2vec来训练item的向量表示。从实际训练结果来看,item2vec明显有助于提高CTR。本文作者:范雄雄,大观数据个性化推荐引擎工程师。他的工作包括推荐系统的架构设计和开发,以及推荐效果的优化。复旦大学计算机科学与技术硕士,曾在爱奇艺开发多款大数据产品,在个性化推荐、数据挖掘与分析、用户行为建模、大数据处理等方面有着深刻的理解和实践经验。【本文为专栏作者“大观数据”原创稿件,如需转载可通过专栏取得联系】点此查看该作者更多好文