Improving Long-Tail Item Recommendation with Graph Augmentation
GALORE:通过图增强改进长尾项目推荐
论文: Improving Long-Tail Item Recommendation with Graph Augmentation
代码: 无
摘要
用户行为的长尾分布普遍存在,这导致对于记录较少的项目(即尾部项目)的推荐性能较差,而对于记录较多的项目(即头部项目)则表现更好。现有的减轻长尾问题的技术主要集中在传统方法上,缺乏能够有效处理长尾问题的基于图的方法。
本文提出了一个图增强方法(GALORE),该方法可以应用到任何基于图的推荐模型中。GALORE结合了一个边添加模块,通过注入额外的项目边来丰富尾部项目的图连接性。为了进一步平衡图结构,GALORE采用了基于度数的边丢弃策略,保留尾部项目中更有价值的边,丢弃头部项目中不太重要的边。除了结构增强外,还合成新的数据样本,从而解决尾部项目的数据稀缺问题。此外,本文引入了一个两阶段的训练策略,以促进对头部和尾部项目的学习。
1.引言
基于图的推荐模型存在几个局限性。首先,尾部项目可能具有有限的图连接,这可能会由于连通性低而限制其学习能力。其次,训练期间的优化损失往往是由更丰富的头节点所决定的,使尾部节点边缘化并加剧了对头部项目的偏向学习。最后,头部和尾部物品之间的不平衡可能导致头部物品过度拟合,并且对尾部物品的概括不佳。因此,必须开发有效的基于图的方法来解决长尾推荐问题。
因此,本文提出了GALORE。为了改善尾部项目的连接性,为尾部项目引入了项目间边缘添加,使其能够接收来自附近已学习良好的头部项目的信息。此外,提出了一种基于度数的边丢弃过程,保留尾部项目更重要的边缘,并丢弃头部项目中不重要的边缘。为了解决尾部项目的数据稀缺问题,引入了一种节点合成方法,合成新的数据,从而提供更多的训练样本,缓解数据稀缺问题。这些合成数据可以作为困难负样本挖掘,以提升模型性能。最后,本文还设计了一个两阶段的训练策略,以促进训练过程。
本文的贡献主要为以下三点:
-
提出了一种图增强框架,通过图增强解决长尾推荐问题,该框架包括边添加和边丢弃。
-
提出了一种节点合成技术,以缓解数据不平衡问题,使模型能够从更多的尾部项目数据中学习。
-
设计了一种两阶段的训练策略,使模型能够在不同阶段学习头部项目和尾部项目的表示。
2.前言
用户集合 U = { u } U = \{u\} U={u} 和一个项目集合 I = { i } I = \{i\} I={i}。基于用户-项目交互,可以构建一个二分图 G = ( V , E ) G = (V, E) G=(V,E),其中 V = U ∪ I V = U \cup I V=U∪I 是所有用户和项目的集合,而 E ⊂ U × I E \subset U \times I E⊂U×I 表示边的集合。如果用户 u ∈ U u \in U u∈U 对项目 i ∈ I i \in I i∈I 给出了反馈,则用户 u u u 和项目 i i i 之间存在一条边,即 ( u , i ) ∈ E (u, i) \in E (u,i)∈E。用户-项目交互也可以用矩阵 Y ∈ { 0 , 1 } ∣ U ∣ × ∣ I ∣ Y \in \{0, 1\}^{|U| \times |I|} Y∈{0,1}∣U∣×∣I∣ 表示,其中 Y u , i = 1 Y_{u,i} = 1 Yu,i=1 表示用户 u u u 对项目 i i i 给出了反馈(即 ( u , i ) ∈ E (u, i) \in E (u,i)∈E),而 Y u , i = 0 Y_{u,i} = 0 Yu,i=0 则表示没有反馈。所有用户-项目交互中的项目累计出现次数会形成长尾分布。
3.方法
3.1概述
![](https://i-blog.csdnimg.cn/direct/c5ba809cb5a847bc88f11998ac1e048d.png)
如图1所示,GALORE由三个模块组成:边添加、边丢弃和节点合成。边添加模块通过添加项目之间的边来增强从头部项目到尾部项目的知识传递。边丢弃模块选择性地丢弃用户-项目边,以促进表示学习。节点合成模块则生成合成项目节点,以缓解长尾问题。训练过程分为两个阶段。第一阶段在原始二分图上训练,以获得初始项目嵌入(特别是为头部项目获得更好的嵌入)。第二阶段在增强图上进行训练,以改善尾部项目的表示。这种训练策略鼓励模型在不同的训练阶段分别关注头部项目和尾部项目。
3.2边添加
由于头部项目的连接比尾部项目更多,模型通常会为头部项目学习到更好的表示。通过将尾部项目连接到头部项目,可以将知识从头部项目转移到尾部项目。
首先,构建一个项目-项目相似性图,以寻找尾部项目节点的结构邻居。然后,在潜在空间中将同质项目节点的嵌入聚类成不同组,以寻找尾部项目节点的语义邻居。然后,同时添加结构邻居和语义邻居,以改善图的连接性。最后,对增强图执行信息传递和聚合。
结构邻居:根据用户和项目之间的交互计算项目相似性矩阵,矩阵中的每个元素表示两个项目的共同交互值,也就是与两个项目都有交互的用户数量。然后对每个尾部项目的共交互值进行排序,以获得每个尾部项目的结构邻居。
语义邻居:在潜在空间中进行聚类,使用 K-means 将项目嵌入聚类成一组,同一聚类内的项目是语义邻居。
信息传递:
获得邻居节点之后,需要聚合邻居节点以加强节点表示,如图2所示。
以尾部项目 i i i 为例。首先,将项目 i i i 的结构邻居表示为 N o str ( i ) N^{\text{str}}o(i) Nostr(i),将语义邻居表示为 N o sma ( i ) N^{\text{sma}}o(i) Nosma(i)。因此,项目 i i i 的同质邻居为 N o ( i ) = N o str ( i ) ∪ N o sma ( i ) N{o}(i) = N^{\text{str}}o(i) \cup N^{\text{sma}}o(i) No(i)=Nostr(i)∪Nosma(i),定义项目的异质邻居为 N e ( i ) N{e}(i) Ne(i)。类似地,用户 u u u 的同质邻居和异质邻居分别定义为 N o ( u ) N{o}(u) No(u) 和 N e ( u ) N{e}(u) Ne(u)。
为了更新t层的项目节点表示,需要在t-1层聚合邻居表示,聚合过程表示如下:
其中,AGGREGATE() 表示邻居聚合函数,如平均或最大池化操作;COMBINE() 表示将聚合的邻域表示与节点表示合并的函数,如平均或者注意力机制。
获得t层表示之后,生成用于预测的最终表示,如下:
其中,READOUT()使用加权求和操作。
对于用户节点,遵循类似的过程。然而,它们没有同质邻居节点。因此,该过程描述如下:
3.3边丢弃
本文提出了一种新方法,称为自适应异质边丢弃,丢弃头部项目较多的边,对尾部项目丢弃更少边。为了衡量丢弃边的数量,定义了项目 i i i 的长尾系数 ℓ i \ell_i ℓi 来量化一个节点在分布尾部的位置程度,如下:
其中, deg ( i ) \text{deg}(i) deg(i) 是项目节点 i i i 的度, l c l_c lc 是一个截止值。较大的长尾系数值表示该项目的用户反馈较少。
以概率 p u i p_{ui} pui 丢弃用户 u u u 和项目 i i i 之间的边,该概率计算如下:
其中最大和最小长尾系数 ℓ max \ell_{\text{max}} ℓmax 和 ℓ min \ell_{\text{min}} ℓmin 是指与该用户 u u u 交互的所有项目的长尾系数中的最大值和最小值。 $p_e $是一个超参数,用于控制移除边的总体概率, p c < 1 p_c < 1 pc<1 是一个截止概率。
3.4节点合成
3.4.1合成节点
合成少数过采样的样本,是一种常用的模型无关技术,用于解决数据不平衡问题。本文使用数据混合进行节点合成。具体来说,首先随机选择两个项目 i i i 和 j j j,然后生成一个合成项目节点 i ~ ~\tilde{i} i~,其嵌入是项目 i i i 和项目 j j j 的嵌入 e i e_i ei 和 e j e_j ej 的凸组合,即:
其中 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ∈[0,1] 是一个超参数。当 λ > 0.5 \lambda > 0.5 λ>0.5 时,合成项目 i ~ ~\tilde{i} i~ 与项目 i i i 连接到相同的用户;否则,它与项目 j j j 具有相同的连接,这有助于避免引入潜在的额外噪声。当 λ = 0 \lambda = 0 λ=0 或 1 1 1 时,混合操作等同于数据重采样操作。
3.4.2困难负样本挖掘
困难负样本挖掘的基本思想是更加关注那些难以正确分类或排序的样本。在推荐系统的背景下,困难负样本挖掘可以用来识别那些与正样本难以区分的负样本。因此,这些样本将需要模型更多的关注,从而提升模型性能。
本文将合成节点作为困难负样本挖掘,提升模型性能。例如,假设用户 u u u 与项目 i i i 进行了交互,但没有与项目 j j j 交互。那么项目 i i i 是一个正样本,而项目 j j j 是一个负样本。通过对 i i i 和 j j j 的嵌入进行混合生成一个合成节点 i ~ ~\tilde{i} i~。这样,相较于项目 i i i 或 j j j,更难判断该合成节点是正样本还是负样本,因为它包含了两个项目的信息。因此,模型需要更加细致地区分这个困难的负样本,从而提高模型区分正样本和负样本的能力。
3.5两步训练策略
受课程学习的启发,本文提出了一种新颖的两阶段训练策略。在第一阶段,遵循标准的基于图的推荐模型训练过程,其主要目标是促进头部项目的高质量表示学习。在第二阶段,采用图增强,如前面所述。
这种方法的关键优势在于它允许模型在不同的训练阶段关注表示学习问题的不同方面。具体来说,该模型首先专注于学习头部部分,这部分相对较容易掌握,然后在后续阶段逐步过渡到更复杂的尾部部分。
3.6优化
获得用户和项目的嵌入之后,通过内积方法来估计用户对目标物品的偏好。具体来说,模型的预测值表示为:
使用贝叶斯个性化排序(BPR)损失,其定义为:
其中 N u N_u Nu 是与用户 u u u 交互的项目集合, σ \sigma σ 是 sigmoid 函数。总体损失是推荐损失和正则化损失的总和,其定义为:
其中 Θ \Theta Θ 是模型参数的向量, γ \gamma γ 是控制 L 2 L_2 L2 正则化损失强度的超参数。
4.实验
4.1实验设置
数据集:Movielens、Douban-Book、 Yelp2018和Gowalla
基线:LightGCN、Over-sampling、Under-sampling、FocalLoss、ClassBalance、MeLu、DropEdge和GraphSMOTE
评估指标:Recall@K and NDCG@K,K ∈ {20, 50}
4.2模型性能
![](https://i-blog.csdnimg.cn/direct/9b3f3982584b46e4a33df14df26cb41a.png)
结论:
-
GALORE 模型显著优于 LightGCN 模型,显示了它在提升头部和尾部项目推荐方面的有效性。
-
在大多数情况下,GALORE优于重新采样的方法,如欠采样和过采样。这可能是因为重采样方法改变了原始数据分布,从而对整体模型性能产生负面影响。
-
GALORE模型基本优于图增强模型,如 DropEdge 和 GraphSMOTE,表明方法的优越性。
4.3消融实验
![](https://i-blog.csdnimg.cn/direct/6f61144332914e4c9f53a5ef67787210.png)
结论:
-
不使用边添加:模型在尾部项目上的性能显著下降,表明头部项目可以通过自适应边添加将关键信息传递给其邻近的尾部项目。
-
不使用边丢弃:用随机均匀边丢弃替代了自适应边丢弃。模型在尾部项目上的表现相对较差。这表明自适应边丢弃对于改善尾部项目推荐至关重要,因为它保留了尾部项目的关键信息图结构。
-
不使用合成节点:模型在尾部部分的性能显著下降,强调了合成节点在缓解数据不平衡问题上的有效性。
-
不使用两阶段训练:结果显示头部项目性能严重下降,表明两阶段学习的重要性。通过两阶段学习,模型可以在每个阶段学习图的不同部分,从而防止对难以学习的尾部部分过拟合。
4.4超参数实验
4.4.1边丢弃率
![](https://i-blog.csdnimg.cn/direct/b304a74a821a4cf0bccf569d028f054a.png)
结论:
-
增加边丢弃率对模型性能产生负面影响。当丢弃率设置为 0.9 时,图结构受到严重破坏,使得图神经网络难以提取有意义的信息并有效优化模型。
-
尾部性能最初有所改善,但随着边丢弃率的提高而下降。这是因为丢弃头部项目节点的边缘改善了尾部项目节点的连接性,促进了图消息传递和表示学习。因此,应仔细选择边丢弃率以平衡图连接性和有效表示学习。
4.4.2合成节点率
![](https://i-blog.csdnimg.cn/direct/494bbf16d41247f7a98f6beea103e71c.png)
结论:
-
整体性能最初提高,然后随着合成节点率的增加而下降。
-
尾部性能持续改善,而头部性能下降。因为生成更多合成节点解决了图中的数据不平衡问题,并增强了长尾性能。
4.4.3嵌入大小
![](https://i-blog.csdnimg.cn/direct/673adfc61a944c60a4c41fa3925d33ca.png)
结论:
-
增加嵌入大小始终能改善性能,因为更大的嵌入能够捕捉更复杂的模式和更丰富的信息。当嵌入大小从 32 增加到 64 时,观察到显著的性能提升。
-
增加嵌入大小会增加计算资源的消耗,这在实践中并不总是可行或可取的。因此,选择合适的嵌入大小,以平衡模型性能和计算成本之间的权衡是至关重要的。
5.总结
本文提出了一种新颖的长尾推荐模型GALORE(即图增强长尾推荐),旨在提高尾部项目的推荐性能。具体而言,提出了边添加和自适应边丢弃,这提高了尾部项目的图连接性,并增强了表示学习过程。此外,利用节点合成来修改数据分布,使模型更关注尾部部分。为进一步提升模型性能,还提出了一种两阶段训练方案,以监督模型学习过程并防止对尾部部分的过拟合。这种方法使模型能够在不同阶段学习更好的表示,从而在头部和尾部项目上都提高了性能。在四个基准数据集上评估了所提出的模型,并与最先进的算法进行了比较,实验结果证明了 GALORE 的有效性。