一种基于图卷积网络的协同过滤推荐方法

未命名 07-22 阅读:92 评论:0


1.本发明属于内容推荐领域,涉及一种基于图卷积网络的协同过滤推荐方法。


背景技术:

2.近几年,随着互联网的快速发展,人工智能技术也进入了新的时代,人类社会的生活的信息数据的产生变得越来越容易,从而导致数据量爆炸增长,大数据具有极高的信息利用价值和广泛的应用前景,同时也面临着“信息过载”的问题,在海量数据中,人们的需求也逐渐增多,如何高效、准确地获取到有用的数据信息是目前大数据研究中亟待解决的问题。因此推荐技术应运而生,推荐技术作为处理“信息过载”的有效途径之一,将其与深度学习结合可以用来挖掘用户和项目的深层表征,并很好地将它们整合在一起。目前已在国内外学术界和众多相关领域引起了广泛的关注,并取得了大量的研究成果。
3.随着图学习(graph learning,gl)方法,特别是图学习中的图神经网络(graph neural networks,gnn)的提出,其在复杂关系提取和链路预测等许多图任务中取得了巨大成功,引起了学术界和工业界研究人员的关注。由于推荐系统的大部分数据具有图结构的特性,将图学习方法应用到推荐领域是一种很自然的做法。因此,图学习方法已逐渐成为推荐领域内一种被广泛研究的新兴推荐范式,即基于图学习的推荐系统。当用户与项目的交互信息和用户与项目相关联的辅助信息被构建成图结构形式,再结合以随机游走、图表示学习和图神经网络为主要代表的图学习方法,即可捕获、学习和模拟用户与项目之间高阶的、复杂的关系,更加有效地学习用户的长期兴趣偏好和项目的特征属性,以提升推荐系统的推荐性能。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种基于图卷积网络的推荐方法,将用户-项目,项目-项目,用户-用户之间的高阶信息,社交推荐同时利用用户到项目的交互以及用户到用户的社会关系来完成向用户生成项目推荐的任务。利用社会关系显然可以有效地理解用户的品味。利用图卷积网络提取社交网络信息,使用社交网络信息来缓解推荐算法中的数据稀疏和冷启动问题。
5.为达到上述目的,本发明提供如下技术方案:
6.一种基于图卷积网络的协同过滤推荐方法,包括以下步骤:
7.s1:获取用户信息和项目信息,进行预处理得到数据集,并划分为训练集和测试集;
8.s2:根据数据集构建用户-项目交互图二部图,项目-项目二部图,用户-用户二部图;
9.s3:将用户-项目交互图映射到向量空间,通过具有用户-项目关系的相同消息传递层隐式学习项目-项目关系图;
10.s4:构建无监督子图生成模块,利用用户特征和图结构识别出具有共同兴趣的用
户;
11.s5:引入图卷积操作,对于高阶图卷积,仅利用来自同一子图中节点的消息来学习节点嵌入;对于一阶图卷积,经过一层gcn得到用户和项目的表示;
12.s6:用户-项目二分图经过一阶图卷积生成特征向量,高阶传播只作用于子图内部,生成每一层的最终嵌入,将所有层的嵌入结合起来,经过自注意力层,再将两个模块的最终表示拼接在一起,最后得到用户和项目的最终表示,模型预测被定义为用户和项目最终表征的内积。
13.进一步,步骤s3所述将用户-项目交互图映射到向量空间具体包括:
14.a∈rn×m表示用户-项目交互矩阵,其中n和m分别表示用户和项目的数量。非零条目a
ui
∈a表示用户u∈u曾经与项目i∈i互动过;否则,该条目为零;根据交互矩阵构建一个用户-项目的二分图g=(w,e),其中节点集w由用户节点和项目节点两种类型组成,e代表边的集合;对于非零的a
ui
,用户u和项目i之间存在一条边,表示用户u的嵌入,表示项目i的嵌入。
15.进一步,将步骤s3的信息作为gcn模型的输入,通过迭代聚合二分图中相邻节点的特征来学习用户和项目的表示,gcn的图卷积操作如下:
[0016][0017][0018]
gcn迭代地执行图的卷积,将目标节点周围的邻居的嵌入表示聚合到此节点,生成目标节点的新嵌入表示,提取图的空间结构特征;聚合邻居节点信息的方式表示为:
[0019][0020]
式中:和分别表示在k层传播后用户u和项目i的嵌入;为与用户u相关联的项目的集合;agg是一个聚合函数,是图卷积的核心,用于获取第k层的目标节点及邻居节点的嵌入表示,是对称的归一化项,用于避免嵌入的规模随图卷积操作的增加而增加;
[0021]
经过k层图卷积后,一个用户的最终嵌入它们在gcn中每一层得到的嵌入的组合:
[0022][0023][0024]
其中αk≥0是分配给第k层的一个超参数,它表示该层在构成最终嵌入中的重要性。
[0025]
进一步,步骤s4具体包括:依靠用户节点来形成用户-项目二分图中的子图,将兴
趣相近的用户分组为一个子图,与这些用户直接相关的项目也属于该子图;从而使每个用户只属于一个子图,一个项目可以关联多个子图;用gs与s∈{1,
···
,ns}表示一个子图,其中ns是子图的数量。
[0026]
进一步,步骤s5中,具体包括:
[0027]
在一阶传播中,所有的一阶邻居都参与到图卷积操作中,让和别表示用户u和项目i的id嵌入,一阶图卷积为:
[0028][0029][0030]
其中和分别代表目标用户u和项目i的第一层嵌入;
[0031]
对于高阶图卷积,为了学习一个项目i的嵌入,对于它所属的每个子图gs,学习这个项目的嵌入,让表示项目i在子图s中经过k层图卷积后的嵌入,高阶传播定义为:
[0032][0033][0034]
被视为从子图gs中具有相似兴趣的用户那里学到的特征;
[0035]
经过k层图卷积后,项目i的最终表示是其在不同子图中学习的嵌入的组合,即:
[0036][0037]
s是项目i所属的子图集;
[0038]
在损失函数中加入sigmoid和负对数似然,得出以下损失:
[0039][0040]
项目-项目图,用户-用户图上的约束损失函数定义为:
[0041][0042]
β
u,i
是约束系数,ω
i,j
是超参数,n
+
表示正样本对;
[0043]
最终损失函数定义为:
[0044][0045]
进一步,步骤s6具体包括以下步骤:
[0046]
s61:将每一层得到的嵌入结合起来,形成用户u和项目i的最终表示,αk通过一个注意力层学习得到,通过学习的用户嵌入eu和项目ei,给定一个用户u和一个目标项目i,用
户对项目的偏好通过内积计算:
[0047][0048]
s62:e
(0)
为用户id和项目id的表示矩阵;e
(k)
代表用户和项目在第k层的表,定义为子图gs中第k层的用户和项目的表示;
[0049]
第一层嵌入传播描述如下:
[0050][0051]
其中是用户-项目交互图的拉普拉斯矩阵;
[0052]
子图上的嵌入传播表述为:
[0053][0054]
其中k≥2,代表子图gs的拉普拉斯矩阵;然后,第(k-1)层嵌入在用户-项目图上传播,得到k第层的嵌入:
[0055][0056]
将所有涉及不同子图的k层嵌入聚合起来,制定最终的k层嵌入:
[0057][0058]
s63:将所有层的嵌入结合起来,得到用户和项目的最终表征:
[0059]
e=α0e
(0)
+α1e
(1)
+
···

ke(k)

[0060]
本发明的有益效果在于:本发明解决了基于图卷积的推荐算法中,迭代多层出现的过渡平滑问题,通过堆叠更多的层来利用高阶邻居的信息而获得改进。
[0061]
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
[0062]
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
[0063]
图1为基于图卷积网络的协同过滤推荐模型框架图;
[0064]
图2为一阶图卷积层示意图;
[0065]
图3为高阶图卷积层示意图。
具体实施方式
[0066]
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相
互组合。
[0067]
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0068]
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
[0069]
请参阅图1~图3,一种基于图卷积网络的协同过滤推荐算法,详细步骤如下:
[0070]
步骤1)、首先获取用户信息,项目信息,并划分数据集,处理数据;
[0071]
步骤2)、本实施例使用的数据为gowalla数据集,该数据包含29858条用户信息,40981条项目信息。对该数据进行预处理,并将数据分为train.txt与test.txt进行分别处理,根据数据集构建用户-项目交互图二部图,项目-项目二部图,用户-用户二部图;
[0072]
步骤3)、将用户-项目交互图映射到向量空间,通过具有用户-项目关系的相同消息传递层隐式学习项目-项目关系图,其他一些关系(例如,项目-项目和用户-用户关系)也极大地有助于cf中基于gcn的模型的效率。a∈rn×m表示用户-项目交互矩阵,其中n和m分别表示用户和项目的数量。非零条目a
ui
∈a表示用户u∈u曾经与项目i∈i互动过;否则,该条目为零。根据交互矩阵,可以构建一个用户-项目的二分图g=(w,e),其中节点集w由用户节点和项目节点两种类型组成,e代表边的集合。对于非零的a
ui
,用户u和项目i之间存在一条边,表示用户u的嵌入,表示项目i的嵌入。上述信息被作为gcn模型的输入,通过迭代聚合二分图中相邻节点的特征来学习用户和项目的表示。gcn的图卷积操作如下:
[0073][0074][0075]
步骤4)、gcn的中心思想是提取图的空间结构特征,主要思路是通过聚合图中各个节点的特征来更新节点的表示。想要达成这样的目的,就需要迭代地执行图的卷积,也就是将目标节点周围的邻居的嵌入表示聚合到此节点,生成目标节点的新嵌入表示。这种聚合邻居节点信息的方式可以用公式表示为:
[0076][0077]
式中:和分别表示在k层传播后用户u和项目i的嵌入;为与用户u相关联的项目的集合;agg是一个聚合函数,是图卷积的核心,用于获取第k层的目标节点及邻居节点的嵌入表示,是对称的归一化项,可以避免嵌入的规模随图卷积操作的增加而增加;
[0078]
步骤5)、经过k层图卷积后,一个用户的最终嵌入它们在gcn中每一层得到的嵌入的组合:
[0079][0080][0081]
其中αk≥0是分配给第k层的一个超参数。它表示该层在构成最终嵌入中的重要性。从公式(4)(5)可以看出,在迭代聚合高阶邻居的特征后,节点将无法保留自己的独特特征,它们的嵌入变得越来越相似,导致过度平滑问题。此外,在聚合过程中,它没有区分高阶节点的异质性特征。来自高阶邻居的嘈杂信息会影响嵌入学习。例如,在高阶邻居中没有共同兴趣的用户的嵌入,甚至是有矛盾的兴趣,通过图卷积操作,聚集起来学习目标用户的嵌入;
[0082]
步骤6)、为解决以上问题,本发明提出构建子图生成模块,在一个子图中传播的所有信息都能为这个子图中所有节点的嵌入学习做出贡献。该模块利用用户特征和图结构有效地识别出具有共同兴趣的用户。为此,可以避免将高阶邻居的负面信息传播到嵌入学习中,总体思路是将兴趣相近的用户分组为一个子图,与这些用户直接相关的项目也属于该子图。所以每个用户只属于一个子图,一个项目可以关联多个子图。换句话说,目标是在使用子图的图卷积操作中排除负面信息的传播。为了实现这一目标,依靠用户节点来形成用户-项目二分图中的子图。一般的想法是,具有更多相似兴趣的用户被归入一个子图,与这些用户直接相关的项目也属于这个子图。因此,每个用户只属于一个子图,而一个项目可以与多个子图相关。让gs与s∈{1,
···
,ns}表示一个子图,其中ns是子图的数量。
[0083]
接下来,在模型中引入图卷积操作。因为用户和项目之间的直接互动提供了最重要和最可靠的用户兴趣信息,在一阶传播中,所有的一阶邻居都参与到图卷积操作中。让和别表示用户u和项目i的id嵌入。一阶图卷积为:
[0084][0085][0086]
其中和分别代表目标用户u和项目i的第一层嵌入。
[0087]
对于高阶图卷积来说,为了避免引入噪声信息,子图中的一个节点只能利用这个子图中的邻居节点的信息。因为一个用户互动的项目都属于这个用户的子图,所以用户仍然可以从所有链接的项目中获得信息。然而,对于一个项目节点来说,它的直接用户邻居可以分布在不同的子图中。为了学习一个项目i的嵌入,对于它所属的每个子图gs,学习这个项目的嵌入。让表示项目i在子图s中经过k层图卷积后的嵌入,高阶传播定义为:
[0088][0089][0090]
这可以避免从不相关的节点传播的噪音信息。可被视为从子图gs中具有相似兴趣的用户那里学到的特征。这是有道理的,因为具有相似兴趣的用户往往喜欢一个项目。经
过k层图卷积后,项目i的最终表示是其在不同子图中学习的嵌入的组合,即:
[0091][0092]
s是项目i所属的子图集;
[0093]
为了便于优化,在损失函数加入了sigmoid和负对数似然,并得出了以下损失:
[0094][0095]
项目-项目图,用户-用户图上的约束损失函数定义为:
[0096][0097]
β
u,i
是约束系数,ω
i,j
是超参数,n
+
表示正样本对。
[0098]
最终损失函数定义为:
[0099][0100]
步骤7)、最后每一层得到的嵌入结合起来,形成用户u和项目i的最终表示,αk通过一个注意力层学习得到,通过学习的用户嵌入(即eu)和项目ei,给定一个用户u和一个目标项目i,用户对项目的偏好通过内积计算出来:
[0101][0102]
步骤8)、e
(0)
为用户id和项目id的表示矩阵;e
(k)
代表用户和项目在第k层的表示。同样,被定义为子图gs中第k层的用户和项目的表示。本发明的模型中的第一层嵌入传播可以描述如下:
[0103][0104]
其中是用户-项目交互图的拉普拉斯矩阵;
[0105]
子图上的嵌入传播被表述为:
[0106][0107]
其中k≥2,代表子图gs的拉普拉斯矩阵。然后,第(k-1)层嵌入在用户-项目图上传播,得到k第层的嵌入:
[0108][0109]
将所有涉及不同子图的k层嵌入聚合起来,制定最终的k层嵌入:
[0110][0111]
步骤9)、最后,我们将所有层的嵌入结合起来,得到用户和项目的最终表征:
[0112]
e=α0e
(0)
+α1e
(1)
+
···

ke(k)
ꢀꢀꢀꢀ
(19)
[0113]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

技术特征:
1.一种基于图卷积网络的协同过滤推荐方法,其特征在于:包括以下步骤:s1:获取用户信息和项目信息,进行预处理得到数据集,并划分为训练集和测试集;s2:根据数据集构建用户-项目交互图二部图,项目-项目二部图,用户-用户二部图;s3:将用户-项目交互图映射到向量空间,通过具有用户-项目关系的相同消息传递层隐式学习项目-项目关系图;s4:构建无监督子图生成模块,利用用户特征和图结构识别出具有共同兴趣的用户;s5:引入图卷积操作,对于高阶图卷积,仅利用来自同一子图中节点的消息来学习节点嵌入;对于一阶图卷积,经过一层gcn得到用户和项目的表示;s6:用户-项目二分图经过一阶图卷积生成特征向量,高阶传播只作用于子图内部,生成每一层的最终嵌入,将所有层的嵌入结合起来,经过自注意力层,再将两个模块的最终表示拼接在一起,最后得到用户和项目的最终表示,模型预测被定义为用户和项目最终表征的内积。2.根据权利要求1所述的基于图卷积网络的协同过滤推荐方法,其特征在于:步骤s3所述将用户-项目交互图映射到向量空间具体包括:a∈r
n
×
m
表示用户-项目交互矩阵,其中n和m分别表示用户和项目的数量。非零条目a
ui
∈a表示用户u∈u曾经与项目i∈i互动过;否则,该条目为零;根据交互矩阵构建一个用户-项目的二分图g=(w,e),其中节点集w由用户节点和项目节点两种类型组成,e代表边的集合;对于非零的a
ui
,用户u和项目i之间存在一条边,表示用户u的嵌入,表示项目i的嵌入。3.根据权利要求1所述的基于图卷积网络的协同过滤推荐方法,其特征在于:将步骤s3的信息作为gcn模型的输入,通过迭代聚合二分图中相邻节点的特征来学习用户和项目的表示,gcn的图卷积操作如下:表示,gcn的图卷积操作如下:gcn迭代地执行图的卷积,将目标节点周围的邻居的嵌入表示聚合到此节点,生成目标节点的新嵌入表示,提取图的空间结构特征;聚合邻居节点信息的方式表示为:式中:和分别表示在k层传播后用户u和项目i的嵌入;为与用户u相关联的项目的集合;agg是一个聚合函数,是图卷积的核心,用于获取第k层的目标节点及邻居节点的嵌入表示,是对称的归一化项,用于避免嵌入的规模随图卷积操作的增加而增加;经过k层图卷积后,一个用户的最终嵌入它们在gcn中每一层得到的嵌入的组合:
其中α
k
≥0是分配给第k层的一个超参数,它表示该层在构成最终嵌入中的重要性。4.根据权利要求1所述的基于图卷积网络的协同过滤推荐方法,其特征在于:步骤s4具体包括:依靠用户节点来形成用户-项目二分图中的子图,将兴趣相近的用户分组为一个子图,与这些用户直接相关的项目也属于该子图;从而使每个用户只属于一个子图,一个项目可以关联多个子图;用g
s
与s∈{1,

,n
s
}表示一个子图,其中n
s
是子图的数量。5.根据权利要求1所述的基于图卷积网络的协同过滤推荐方法,其特征在于:步骤s5中,具体包括:在一阶传播中,所有的一阶邻居都参与到图卷积操作中,让和别表示用户u和项目i的id嵌入,一阶图卷积为:目i的id嵌入,一阶图卷积为:其中和分别代表目标用户u和项目i的第一层嵌入;对于高阶图卷积,为了学习一个项目i的嵌入,对于它所属的每个子图g
s
,学习这个项目的嵌入,让表示项目i在子图s中经过k层图卷积后的嵌入,高阶传播定义为:表示项目i在子图s中经过k层图卷积后的嵌入,高阶传播定义为:表示项目i在子图s中经过k层图卷积后的嵌入,高阶传播定义为:被视为从子图g
s
中具有相似兴趣的用户那里学到的特征;经过k层图卷积后,项目i的最终表示是其在不同子图中学习的嵌入的组合,即:s是项目i所属的子图集;在损失函数中加入sigmoid和负对数似然,得出以下损失:项目-项目图,用户-用户图上的约束损失函数定义为:
β
u,i
是约束系数,ω
i,j
是超参数,n
+
表示正样本对;最终损失函数定义为:6.根据权利要求1所述的基于图卷积网络的协同过滤推荐方法,其特征在于:步骤s6具体包括以下步骤:s61:将每一层得到的嵌入结合起来,形成用户u和项目i的最终表示,α
k
通过一个注意力层学习得到,通过学习的用户嵌入e
u
和项目e
i
,给定一个用户u和一个目标项目i,用户对项目的偏好通过内积计算:s62:e
(0)
为用户id和项目id的表示矩阵;e
(k)
代表用户和项目在第k层的表,定义为子图g
s
中第k层的用户和项目的表示;第一层嵌入传播描述如下:其中是用户-项目交互图的拉普拉斯矩阵;子图上的嵌入传播表述为:其中k≥2,代表子图g
s
的拉普拉斯矩阵;然后,第(k-1)层嵌入在用户-项目图上传播,得到k第层的嵌入:将所有涉及不同子图的k层嵌入聚合起来,制定最终的k层嵌入:s63:将所有层的嵌入结合起来,得到用户和项目的最终表征:e=α0e
(0)
+α1e
(1)
+
···

k
e
(k)


技术总结
本发明涉及一种基于图卷积网络的协同过滤推荐方法,属于内容推荐领域,包括获取数据集;将数据构造成用户-项目二分图,用户-用户二分图,项目-项目二分图;构造子图生成模块,结合用户特征和图结构来识别具有相似兴趣的用户,然后通过保留这些用户及其交互项目来构造子图;在低阶图卷积模块中生成的用户项目的嵌入与子图生成模块中的嵌入拼接,形成最终的推荐结果。该方法提供了一种基于卷积图神经网络的协同过滤推荐算法,定义了一种子图生成模块,并加入一阶信息,定义了一个新的约束损失函数,解决了基于图卷积的推荐算法中,迭代多层出现的过渡平滑问题,通过堆叠更多的层来利用高阶邻居的信息而获得改进。用高阶邻居的信息而获得改进。用高阶邻居的信息而获得改进。


技术研发人员:袁正午 占希玲 周亚涛 杨浩 张凡
受保护的技术使用者:重庆邮电大学
技术研发日:2023.04.23
技术公布日:2023/7/21
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐