recommend

概述

推荐系统是信息过滤系统的一个分支,可以自动地挖掘用户和物品之间的联系,旨在为 user (用户) 推荐一个(或一系列)未观测的 item (物品,电影,新闻等)。
推荐系统中有用户集合U和物品集合I,系统中的数据包括用户和物品的交互记录、用户信息、物品信息,这些数据统称为场景信息C(Context)。其他信息还有社会关系、知识图谱等。推荐系统数据结构非常适合转化为图结构,并且GNN在图数据的表示学习上具有非常强大的学习能力。
推荐系统基于用户本身的多维度属性数据(如年龄、地域、性别等)以及行为数据的反馈(如点击、收藏、点赞、购买等),结合物品自身属性数据(如标题、标签、类别、正文等),以预测用户对待推荐物品的评分或偏好。
任务:在推荐系统中建立一个推荐模型f(U,I,C),预测用户对所有物品的兴趣评分,再根据兴趣评分对物品进行排序,选取前K个推荐物品构成推荐列表。
分为一般的推荐和序列化推荐。一般的推荐视用户为静态的,序列化推荐认为用户偏好随时间动态变化。

诞生背景 & 解决的痛点

1、信息过载,互联网信息爆炸式增长,用户无法轻松获取感兴趣的优质内容
2、长尾问题,少部分服务或商品受到了大多数流量的关注,而很大一部分服务或商品面临无人问津的状况

价值

用户角度:基于用户个人的兴趣偏好进行千人千面的自动推荐,帮助用户挑选内容,智能推荐,节省搜索的时间,缓解信息过载问题。
物品角度:其自身属性及对应的交互行为差异,通过各种推荐方式是可以触达到对其更感兴趣的用户群体中,将较少用户关注的物品推荐给合适的用户,使得更多优质内容可以提供给用户,缓解了曝光不足带来的长尾问题。
企业角度:带来了更好的产品交互方式,达到了沉浸式体验的效果,从而进一步提升了用户的黏性,并最终大幅度提升了转化收益。

任务

Top-K:给出每个用户可能感兴趣的K个物品的推荐列表

经典推荐算法

推荐系统理论经过多年发展,主要产生了三代:第一代推荐系统(1995-2005),主要包括三种方法:基于内容过滤的方法、基于协同过滤的方法和混合方法,技术上主要是规则统计和机器学习。第二代推荐系统(2003-2014),主要是基于时间、位置、用户组评分等特征上下文,对这一代推荐系统的研究目前仍在进行中。第三代推荐系统的研究更侧重在基于表示学习的语义模型以及在推荐过程中会有较多的关于知识组件的使用。

传统推荐算法

**:传统的推荐系统主要是将用户和物品之间的显式或隐式反馈作为输入
问题:

  1. 数据稀疏:在实际场景中,用户和物品之间的交互信息特别稀疏。例如,一个在线购物应用可能包含数十万的商品,而用户实际购买的商品数量可能仅有数百。使用如此少量的行为反馈数据来预测大量未知信息会显着增加算法过拟合的风险。
  2. 冷启动:对于新用户和新物品的推荐,由于缺乏历史交互信息,系统推荐的精准度就会受到极大的负面影响。
    方向:解决稀疏性和冷启动问题的一种常见方法是在推荐算法的输入中引入额外的辅助信息,例如用户属性、项目属性和上下文信息等等。

1.1 协同过滤,Collaborative Filtering, CF

基于用户和物品历史交互数据进行推荐,利用由用户和物品的交互记录所构成的评分矩阵,来预测用户对没有交互过的物品的喜好程度。体现的是群体智慧。在工业界广泛应用。
**:在行为上类似的用户会喜欢类似的物品,或类似的物品适合推荐给同一类用户。以交互数据中用户或物品的相似性对用户兴趣偏好进行建模。
任务:设计用户之间或物品之间的类似程度的度量方式
优势:不用考虑用户和物品特征,仅基于用户与物品历史交互信息就可以推荐,无需领域知识,简单有效。可应用在广泛场景,适用性强。
缺陷:数据稀疏、冷启动、可解释性差、利用信息有限。数据稀疏:在系统启动初期,用户与物品的历史交互记录稀疏时,效果欠佳。冷启动:当一个新物品加入系统时,往往无法将该物品推荐出去,一个新用户进入系统中,无法向用户推荐。没有利用推荐场景中的诸多语义信息、关键字关系和层次结构。
优化方案:使用辅助信息缓解问题,但传统方法没有足够的容量来复用这些知识,传统的推荐技术没有复用语义信息、关键字信息和层次结构知识,同样会导致模型性能的下降。
分类:基于用户、基于物品、基于模型

1.1.1 基于用户的协同过滤

**:人以群分,爱好相似的人喜欢相似的物品。考虑用户之间交互行为的相似程度,往往浏览过的物品集合越相似的用户之间的相似度越高,给用户推荐与其相似的用户喜欢的物品。
挑战:如何合理计算用户之间的相似度

1.1.2 基于物品的协同过滤

**:利用交互矩阵来计算物品与物品的相似度,推荐与用户喜欢的物品相似的物品。
挑战:如何合理得到物品之间的类似程度

1.1.3 基于模型的协同过滤

**:将用户和物品投影到低维向量上,用向量来表示用户和物品,设计交互计算方式来计算用户对目标物品的偏好度,模型计算出的分数越高,代表用户更有可能与该物品交互
经典算法:矩阵分解(MF)及其变体(NMF、SVD)

矩阵分解 / 分解因子机

1.2 基于内容,Content-Based Filtering, CBF

**:根据物品内容之间的类似程度计算,给用户推荐与其交互过的物品在内容上更为类似的物
模型:关键字匹配或向量空间模型(VSM)、基于词频-逆文档频率(TF-IDF)加权、主题建模等
优点:可解释性强
缺陷:信息茧房:总是推荐给用户内容上类似的物品,存在推荐结果新颖性差的问题。依赖属性:特征较为稀疏时会影响相关性的计算。

文章:

基于人口统计过滤,Demographic Filtering, DF

**:基于具有某些共同个人属性(性别、年龄、国家、地区)的用户具有共同偏好进行推荐,根据人口统计属性对用户进行分类从而生成相应推荐的结果
优点:不需要用户对基于内容和协同过滤方法所必需的物品进行评分或交互操作;当项目信息量有限时,这些方法特别有用。
缺点:由于涉及安全和隐私问题,收集用户完整信息不切实际且不合法规。强制系统向相关群体的用户推荐相同的商品,个性化程序受限。

上下文感知,Context Aware-Based Filtering, CABF

**:结合场景上下文信息进行推荐。这种方法假设当前推荐场景的上下文是用一组预定义的可观察属性定义的,其结构不会随着时间的推移而发生显着变化。所谓的上下文信息主要包括时间、位置或者其他人(如朋友、亲戚或同事)。这些上下文信息为推荐结果的生成提供了额外的信息,相对于仅考虑用户或者物品自身信息,会有更多的补充。
常用上下文信息有:时间、地点、几何位置信息、或其他相关人(朋友、女朋友/男朋友、亲戚、同事)的交互信息

基于辅助信息和知识

**:基于领域知识考虑如何推荐以满足用户的兴趣偏好。这些系统可以使用三种类型的知识:关于用户的知识、关于物品的知识以及关于物品与用户需求之间对应关系的知识。总体上来说,该类方法主要是依靠知识图谱来为推荐系统更多的辅助信息以提升推荐精准度。
辅助信息有:物品属性、知识图谱、用户评论、用户社交网络、地点信息
地点信息用来做兴趣点的推荐
知识图谱可以表达实体与实体间的联系
用户对物品的评论中包含了用户对物品的兴趣
挑战:合适的提取辅助信息的特征

混合过滤的推荐方法

这些系统通常将协同过滤与内容过滤或协同过滤与任何其他推荐方法相结合进行推荐。结合的目标是利用每种方法的优势以提高整体系统性能和推荐效果。目前,一些关于混合方法的工作包括基于深度学习方法、贝叶斯网络、聚类、潜在特征和图结构等等。

深度学习

利用深度神经网络逐层非线性处理信息的优势,可以很好的提取出数据的特征。
深度学习一方面可以帮助提取物品的图片和文字之类的信息特征,可以用对应的深度学习技术来获取这些信息的深层特征
另外深度学习也可以对用户和物品特征之间的交互进行建模,提取这些特征交互的深层次信息。
深度学习可以对用户和物品之间的复杂交互模式进行模拟,另外深度学习可以帮助获得一些文本或图片的特征向量。
基于深度学习的推荐算法可以从用户和物品的id以及一些辅助信息中提取出特征,最后预测用户对目标物品的偏好程度。
近年来,基于深度神经网络的方法,如 DNN 、Wide & Deep、DeepFM在排序学习(Learn to Rank,LTR)方面取得了令人瞩目的表现。这些方法遵循嵌入(Enmbedding)和多层感知机(Multilayer Perceptron,MLP)范式,其中大规模稀疏特征首先嵌入到低维向量中,然后连接在一起输入多层感知器以学习特征之间的非线性关系。先进的LTR方法发现了从用户的历史行为中提取用户兴趣以进行排名的有效性。具体来说,DIN(Deep Interest Network)使用注意力机制从用户对候选物品的历史行为中学习用户兴趣的表示。DIEN(Deep Interest Evolution Network)使用循环神经网络来捕捉用户兴趣的演变。DMT(Method Deep Multifaceted Transformers)利用多个转换器对用户的不同行为序列进行建模。
思路:输入用户与物品的交互数据以及用户和物品的属性信息,通过神经网络学习用户与物品间复杂的交互模式,得到用户和物品的特征向量,再对特征向量进行交叉组合,得到最终的评分预测值。

基于知识图谱

将知识图谱作为辅助信息引入推荐系统,一方面可以提供丰富的领域知识作为补充信息来克服协同过滤和基于内容过滤的推荐方法所面临的问题;另一方面,推荐系统可以使用 KG 中存在的语义关系来提高其准确性并增加推荐物品的多样性。具体来说,KG 推荐利用了代表用户的实体、要推荐的物品及其交互之间的联系。推荐系统使用各种连接来识别目标用户可能感兴趣的物品集合。因此,复杂的关系表示为基于KG的推荐系统提供了额外的有价值的信息,以在节点之间应用推理来发现新的连接。相反,一般来说,基于特征向量的经典推荐方法会忽略这种连接,这可能会导致整体的推荐性能欠佳,尤其是在数据稀疏的情况下。
KG是一个异质图,节点表示实体,边缘表示实体之间的关系。物品及其属性可以映射到 KG 中,以表征物品之间的相互关系。此外,用户及其信息也可以集成到KG中,这就使得用户和物品之间的关系以及用户偏好可以更准确地捕获。
优势:

  1. 更精确:知识图谱可以用来表示实体之间的关系,可以将 item 及其属性信息映射到知识图谱中,以理解 item 之间的相互关系,此外,还可以将 user 和 user 的辅助信息整合到知识图谱中,更准确地捕捉 user 和 item 之间的关系以及 user 的偏好。
  2. 可解释:基于 KG 的推荐系统的另一个优点是推荐结果具有可解释性。通过遵循图谱中的关系序列,我们可以知道向用户推荐物品的原因。
    构建:一般来说,基于KG的推荐方法,第一步需要构建KG,可以是物品知识图谱(Item Knowledge Graph,IKG),也可以是用户物品知识图谱(User-Item Knowledge Graph,UIKG)。关于IKG。在IKG中,物品和他们关联的实体(如物品属性)作为节点,而边可以表示物品的属性级关系(如品牌、类别等),也可以表示为用户相关的关系(如“都浏览”、“都购买”)。关于UIKG。在UIKG中,用户、物品和他们相关的实体都是节点,边可以表示用户和物品之间的关系(如点击、收藏、购买等)。以IKG的构建为例,物品首先映射到外部 KG 以找到它们的关联实体,然后从 KG 中提取关联实体的多跳邻居,并形成推荐系统的子图。当然也可以不需要依赖外部KG,可以基于所提供的数据中的辅助信息来构建KG。
    推荐算法:主要有基于知识图谱嵌入 KGE、基于路径、联合方法、基于连接、基于传播、基于结构、基于本体、基于开放链接数据LOD。按照如何应用知识图谱数据,分为三类:基于嵌入、基于连接、基于传播。
    算法对比:基于嵌入的方法是最灵活的方法。一方面,使用KGE模块对KG进行编码相对容易,并且学习到的嵌入可以自然地融入到用户表示或项目表示中。而在基于连接的方法中,在图中定义元路径或元图可能很繁琐。对于基于传播的方法,需要仔细设计聚合和更新部分。另一方面,基于嵌入的方法适用于大多数应用场景,因为外部知识通常在不同的任务中可用。相反,在基于元结构的方法中,元路径对于不同的应用场景通常是多种多样的,并且不能泛化到新的数据集。此外,对于特定场景,如新闻推荐,很难定义元路径并应用基于元结构的方法。同时,基于路径嵌入的方法和基于传播的方法都不适用于具有大规模数据集的推荐场景,因为在枚举路径和邻居时计算复杂度可能会变得很大。此外,路径的质量和数量对于基于连接的方法至关重要,因此,稀疏数据集可能无法提供足够的路径来挖掘此类方法的关系和模型兴趣。然而,基于嵌入的方法和基于连接的方法都未能充分探索KG中的信息。近年来,随着GNN技术的发展,基于传播的方法已成为一种新的研究趋势。此外,基于连接的方法和基于传播的方法都可以用KG中的路径来解释,而基于嵌入的方法解释起来不太直观。

基于嵌入的方法,Enbedding-based

利用知识图谱来增强实体的表示,并用来增强推荐算法中物品的表示
**:使用KG中大量的事实知识来进一步地丰富用户和物品的多维度表示,主要包括两大基础模块,一个是图嵌入模块,用于学习KG中实体和关系的表示,也就是需要应用知识图嵌入(Knowledge Graph Embedding,KGE)算法将KG编码为低秩嵌入,KGE算法可以分为两类:平移距离模型,如TransE、TransH、TransR、TransD等,以及语义匹配模型,如 DistMult。另外一个是推荐模块,基于学习到的特征用于预测用户对物品的偏好。
KGE:知识图谱嵌入(Knowledge Graph Embedding, KGE)可以解决知识图谱作为复杂图结构难以直接利用的问题,KGE可以学习KG中实体关系的低维向量表示。
分类:基于这两个模块在整个推荐框架中的关联方式的差异,基于嵌入的方法可以进一步细分为两阶段学习的方法、联合学习的方法和多任务学习的方法。两阶段学习方法易于实现,但学习到的实体嵌入可能不适合推荐任务,联合学习方法通过端到端训练学习优化的实体嵌入,多任务学习方法通过从KG相关任务中转移知识进一步提高模型的泛化能力。但是,它需要大量的实验来找到不同目标函数的最佳组合。
挑战:1、如何使用合适的KGE方法以获得实体的嵌入表示;2、如何将学习到的实体嵌入表示集成到推荐模块中;3、知识图谱嵌入学习的目标和推荐算法的目标不完全一致,影响推荐性能;

两阶段学习法

两阶段学习方法是指分别对图嵌入模块和推荐模块进行训练。第一步,使用KGE算法学习实体和关系的嵌入表示,接着,将预训练好的图相关嵌入连同其它的用户特征和物品特征输入到推荐模型进行用户兴趣预测。
例如用于新闻推荐的DKN(Deep Knowledge-aware Network)两阶段学习框架。在第一阶段,提取新闻标题中的实体并将其映射到 Satori KG以挖掘新闻之间的知识级关系。DKN 通过将用KCNN学习到的句子的文本嵌入表示和通过TransD将新闻内容中的实体的知识级嵌入二者结合来对新闻进行建模。为了捕捉用户对新闻的动态兴趣,通过引入注意力机制,聚合用户的历史点击新闻的嵌入来学习用户的表示。
两阶段学习方法易于实现,其中 KG 嵌入通常被视为后续推荐模块的额外特征。另一个好处是可以在没有交互数据的情况下学习 KG 嵌入,因此,大规模交互数据集不会增加计算复杂度。此外,由于KG通常是稳定的,一旦学习好了嵌入表示,就没有必要频繁更新嵌入表示。但是,通过 KGE 模型优化的实体嵌入更适合于图内应用,例如 KG补全。由于 KGE 模块和推荐模块是松耦合的,因此学习到的嵌入也可能不适合后续的推荐任务。

联合学习方法

另一个趋势是以端到端(end-to-end)的训练方式联合学习(Joint Learning)图嵌入模块和推荐模块。这样,推荐模块可以指导图嵌入模块中的特征学习过程。CKE(Collaborative Knowledge Base Embedding)统一CF框架中的各种类型的辅助信息,包括物品的属性级特征、文本特征和视觉特征。属性级特征用TransR编码以从KG中学习结构知识,而文本特征和视觉特征用自动编码器进行提取。这三个特征学习模块的目标函数加上推荐模块共同学习模型参数。
联合学习方法可以进行端到端的训练,并且可以使用 KG 结构对推荐系统进行正则化。然而,在实际应用过程中,需要对不同目标函数的组合进行微调。

多任务学习方法

最近的一个研究方向是采用多任务学习(Multi-Task Learning)的策略,在KG相关任务的指导下训练推荐任务。动机是用户-物品交互二分图中的物品及其在 KG 中的关联实体可能共享相似的结构。因此,物品和实体之间低级特征的转移有助于促进推荐系统的改进。MKR(Multi-task feature learning approach for Knowledge graph enhanced Recommendation)由一个推荐模块和一个KGE模块组成。这两个模块不是将 KG 嵌入输入到推荐模块中,而是独立的,并通过交叉压缩单元进行连接以共享知识。推荐模块被训练以估计用户对候选物品的偏好,而KGE模块被训练来估计给定头部实体和三元组中的尾部实体表示。具体来说,推荐模块基于MLP以获得最终用户表示。最终的物品表示由L层交叉压缩单元及其在KG中的相关实体来进行细化。使用非线性函数估计用户对候选物品的偏好程度。 通过应用多任务学习策略,有助于防止推荐系统过拟合,提高模型的泛化能力。然而,与联合学习方法类似,它需要努力在一个框架下集成不同的任务。

基于路径的方法

基于连接(Connection-based)的方法利用图中的连接模式来指导推荐。相关的大多数工作都使用UIKG来挖掘图中实体之间的关系。探索KG中的连接信息有两种主要方法。第一个方向是利用图中的元结构,包括元路径和元图,来计算实体之间的相似度。基于元结构的相似性可以作为用户和物品表示的约束,也可以用于预测用户对交互历史中相似用户或相似物品的兴趣偏好。第二种解决方案是将用户-物品对或物品-物品对之间的连接模式编码为向量,可以集成到推荐框架中。这种方法也叫基于路径嵌入的方法。
挑战:1、如何为不同的任务设计合适的元路径;2、如何对实体之间的连接模式进行建模。
限制:需要人工设计路径模式,需要一定的领域知识,并且一个领域的路径不能直接迁移到其他领域

(1)基于元结构的方法

基于元结构(Meta-structure based)的方法的一种实现是利用不同元路径中实体的连接相似性作为图谱正则化项来约束用户和物品的表示。其动机是基于元路径的实体相似度越高,则在潜在空间中越接近。

(2)基于路径嵌入的方法

基于元结构的方法的一个问题是连接模式没有明确建模,这使得很难学习用户-物品对和连接模式之间的相互影响。但是,基于路径嵌入的方法可以显式地学习连接模式的嵌入。

基于传播

通过聚合实体在知识图谱中的多跳邻居来获取实体的更好的表示,然后利用用户和物品的表示来预测用户对物品的偏好程度
基于嵌入的方法利用知识图谱中的语义关系来丰富用户和物品的表示,但难以捕捉实体之间的高阶关系。基于连接的方法使用图中的连接信息来指导推荐,但是,通过将复杂的用户物品连接模式分解为单独的线性路径,不可避免地会丢失信息。为了充分利用 KG 中的信息,基于传播的方法集成实体和关系的表示以及高阶连接模式,以实现更个性化的推荐。基于传播的方法的主要想法是嵌入传播,其中常见的实现方式是基于 GNN 技术。这些方法通过聚合KG 中多跳邻居的嵌入表示来细化实体表示。然后,可以使用用户和潜在项目的丰富表示来预测用户的偏好。
问题:对用户的历史记录在知识图谱中进行传播时,一方面没有对物品粒度的信息进行挖掘,另一方面没有区分用户的历史记录中的每个物品的重要程序;其次现有的基于知识图谱的传播没有考虑到用户和物品实体集合内部实体之间的交互,即没能捕捉到集合内部的实体之间的相关性信息,另外也没有考虑用户实体集合和物品实体集合之间的交互信息

图神经网络

基于知识图谱的推荐算法大都基于图神经网络(GNN)构建。
利用GNN在知识图谱上进行图嵌入,从而得到节点的嵌入向量,再将该向量作为节点的特征表示来预测用户对物品的评分,最后完成推荐任务。
现有算法通过为目标节点的每个邻居节点设置不同的注意力系数,来区分不同邻居节点传递到目标节点的信息的重要程度。

现在算法问题:

1、现有算法没有很好地利用图谱中物品和用户交互的时序信息。而在实际场景中,用户的兴趣偏好是随时间变化的。用户的某些长期偏好可以从用户的所有历史交互行为得到,而用户近期偏好与其近期的行为高度相关。
2、现在算法预测过程中,直接计算向量内积,将该内积作为预测评分。这种方法难以获取到更多的组合特征和非线性特征。

经典算法:

  • KGCN: 1 Knowledge Graph Convolutional Networks for Recommender Systems.pdf
  • KGAT: 2 KGAT- Knowledge Graph Attention Network for Recommendation
  • AKGE: 3 Hierarchical Attentive Knowledge Graph Embedding for Personalized Recommendation
  • RippleNet: 4 RippleNet- Propagating User Preferences on the Knowledge Graph for Recommender Systems, https://github.com/hwwang55/RippleNet, https://github.com/qibinc/RippleNet-PyTorch
  • KDD: 5 Meta-Graph Based Recommendation Fusion over Heterogeneous Information Networks

文章:

github:

相似度计算

Pearson、Spearman、Cosine、Jaccard、内积

内积

资料

github

教程

blog

  1. 知识图谱增强下的智能推荐系统与应用-于敬
  2. 一文概览知识图谱在推荐系统的发展现状
  3. 基于知识图谱和Transformer的专利推荐方法
  4. 融合知识图谱与注意力机制的推荐算法
  5. github - awesome-knowledge-graph
  6. 如何将知识图谱引入推荐系统
  7. 知识图谱的推荐系统综述-常亮
  8. 一种基于知识图谱与内容的推荐算法 - 张雅歌
  9. Movie Recommendations powered by Knowledge Graphs and Neo4j
  10. Hands on Explainable Recommender Systems with Knowledge Graphs
  11. Knowledge Graph with Job Recommendation
  12. 图谱推荐综述:Knowledge Graph-Based Recommender Systems
  13. Power recommendation and search using an IMDb knowledge graph

video

Graph Representation Learning From Knowledge Graphs to Recommender Systems / Hongwei Wang (UIUC)

论文

综述

  1. A Survey on Knowledge Graph-Based Recommender Systems
    该综述对基于知识图谱的推荐系统进行了全面的概述和分类,包括数据集、评估指标、方法和应用等方面,并对各个方面的研究进行了详细的介绍和分析。
  2. Knowledge Graph-Based Recommender Systems: A Comprehensive Survey
    该综述对基于知识图谱的推荐系统的研究进展进行了全面的介绍,包括知识图谱构建、用户兴趣模型、推荐算法、评估指标等方面,并从数据集、技术和应用三个方面分别进行了分析。
  3. Knowledge Graph and Recommendation: A Survey and Future Perspectives
    该综述对知识图谱和推荐系统的研究进展进行了综合的介绍,包括知识图谱建模、用户兴趣模型、推荐算法、实现方法和应用等方面,并对未来研究的方向进行了展望。
  4. A Survey on Knowledge Graph Embedding: Approaches, Applications and Benchmarks
    该综述主要介绍了知识图谱嵌入技术,包括知识图谱表示学习的背景、嵌入方法、应用和评估指标等方面,并对该领域未来的研究方向进行了展望。
  5. A Comprehensive Survey of Graph Embedding: Problems, Techniques, and Applications
    该综述主要介绍了图嵌入技术,包括嵌入方法、应用和评估指标等方面,并对未来的研究方向进行了展望。