CN112417306B - 基于知识图谱的推荐算法性能优化的方法 - Google Patents
基于知识图谱的推荐算法性能优化的方法 Download PDFInfo
- Publication number
- CN112417306B CN112417306B CN202011455909.8A CN202011455909A CN112417306B CN 112417306 B CN112417306 B CN 112417306B CN 202011455909 A CN202011455909 A CN 202011455909A CN 112417306 B CN112417306 B CN 112417306B
- Authority
- CN
- China
- Prior art keywords
- user
- vector
- attribute
- multiplied
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 239000013598 vector Substances 0.000 claims abstract description 151
- 238000012549 training Methods 0.000 claims abstract description 58
- 238000011176 pooling Methods 0.000 claims abstract description 15
- 230000004927 fusion Effects 0.000 claims abstract description 10
- 238000013528 artificial neural network Methods 0.000 claims abstract description 9
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 8
- 238000007781 pre-processing Methods 0.000 claims abstract description 7
- 230000007246 mechanism Effects 0.000 claims abstract description 6
- 230000006870 function Effects 0.000 claims description 25
- 230000004913 activation Effects 0.000 claims description 12
- 238000012360 testing method Methods 0.000 claims description 8
- 230000006399 behavior Effects 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 4
- 230000003993 interaction Effects 0.000 claims description 3
- 230000002452 interceptive effect Effects 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 abstract description 7
- 238000000354 decomposition reaction Methods 0.000 abstract description 3
- 238000002474 experimental method Methods 0.000 abstract 1
- 238000000605 extraction Methods 0.000 abstract 1
- 238000011160 research Methods 0.000 description 6
- 230000000306 recurrent effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- IJJWOSAXNHWBPR-HUBLWGQQSA-N 5-[(3as,4s,6ar)-2-oxo-1,3,3a,4,6,6a-hexahydrothieno[3,4-d]imidazol-4-yl]-n-(6-hydrazinyl-6-oxohexyl)pentanamide Chemical compound N1C(=O)N[C@@H]2[C@H](CCCCC(=O)NCCCCCC(=O)NN)SC[C@@H]21 IJJWOSAXNHWBPR-HUBLWGQQSA-N 0.000 description 1
- 241000282326 Felis catus Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- IZUPBVBPLAPZRR-UHFFFAOYSA-N pentachlorophenol Chemical compound OC1=C(Cl)C(Cl)=C(Cl)C(Cl)=C1Cl IZUPBVBPLAPZRR-UHFFFAOYSA-N 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Animal Behavior & Ethology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及基于知识图谱的推荐算法性能优化的方法,解决推荐***可解释性、缓解冷启动并提高算法准确性的方法。首先解决算法的可解释性问题:通过对原始数据集进行预处理,构建知识图谱,利用知识图谱元路径提取技术得到路径信息,输入到循环神经网络GRU中,并添加注意力机制和平均池化层,对不同路径进行重要性区分,得出模型预测向量。其次缓解算法的冷启动问题:对用户和物品的节点属性信息进行相乘,得出属性融合向量。将两部分向量结果以3:7的比例进行结合,利用交叉熵损失函数对模型进行训练,得出预测结果。经实验得出:与基于GRU模型的推荐算法相比,算法的准确性提高2.3%,与传统矩阵分解模型相比,准确性提高5.1%。
Description
技术领域
本专利涉及将知识图谱的路径信息和结点的内容信息进行融合,从而提高推荐算法准确率和召回率的方法,属于知识图谱和推荐***相关技术领域。
背景技术
近年来,随着网络信息技术的不断发展,人们可以方便的从各种渠道获取到丰富的信息。但与此同时,人们也面临着信息过载的问题,很难从海量的数据中准确快速的找到自己想要的信息。在这种情况下,个性化推荐算法应运而生。个性化推荐可以利用高效的互联网工具,为人们提供准确的服务,从而帮助用户从海量的信息中个性化的提取有用的信息,以此来满足用户的需求。推荐***可以在用户无明确需求的情况下,根据用户的历史行为数据,挖掘其中的规律,从而为每个用户个性化的提供其感兴趣的信息。在用户使用的同时,推荐***还可以及时的记录下每个用户的行为数据,从而为后续的推荐提供数据来源。
推荐***的核心当属推荐算法,目前推荐算法的研究有很多种,其中协同过滤推荐算法是目前学术界研究最广泛的模型,被广大研究者所应用。该算法主要是针对已有的用户和物品信息,对当前用户最有可能感兴趣的物品来进行预测。主要可分为基于邻居的算法和基于模型的算法两大类。基于邻居的算法主要是根据与目标预测用户相似的其他用户偏好来进行推荐,通过计算不同用户及物品之间的相似度进行推荐的一种方法。而基于模型的算法则是将用户-物品评分矩阵转化为不同的模型,通过模型的建立和调优来进行预测。但该算法在推荐的过程中会受到可解释性、稀疏性、冷启动等诸多制约因素的影响,因此在推荐算法的研究过程中,缓解传统协同过滤推荐算法中的各个问题成为目前研究的重点。
伴随着推荐***的发展,大多数研究者开始致力于研究通过混合多种推荐算法来解决推荐的可解释性、数据稀疏以及冷启动等问题。目前机器学习和深度学习的蓬勃发展也为推荐***提供了优化思路,同时基于知识图谱的推荐也逐渐被研究者所关注。
基于知识图谱的推荐算法主要是以现有的推荐模型为基础,将知识图谱中关于物品、用户等实体的结构化知识加入到推荐模型当中,通过引入额外的知识来改善早期推荐模型中的数据稀疏问题。目前多是利用知识图谱表示学习来获取知识图谱中推荐物品的相关信息,并对该向量进行降维处理,得到知识的低维稠密矩阵,最终完成推荐。但缺点在于无法确定在不同场景下数据和关系的规模,并且未能解决算法的可解释性和冷启动等问题。因此,在基于知识图谱的推荐算法的性能优化上还值得进一步的探讨和研究。
发明内容
本发明旨在提供一种利用用户-物品评分矩阵构建知识图谱,从而根据知识图谱结点的连接性得到每位用户的路径偏好信息,并融合各结点的内容信息来进行推荐的一种方法。
与现有技术的区别在于:1.模型方面:现有技术多是单纯利用知识图谱元路径提取将结点信息进行叠加或单纯利用知识图谱表示技术来将结点信息嵌入到向量中,没有将知识图谱的元路径与知识的具体结点信息相结合来进行推荐预测。2.可解释性方面:现有模型多是利用模型来提升预测的准确性,深度学习模型的缺陷是针对数据进行学习,但无法对模型预测结果进行解释,很难在可解释性上做分析。该模型针对各用户的不同类型偏好进行学习,从而弥补了模型可解释性的问题,使推荐结果的可解性增强。3.冷启动方面:现有技术针对模型的准确率和冷启动问题多是采用模型的dropout来随机丢弃部分结点特征,从而提高模型的鲁棒性,本模型将对模型的修改与多部分结点的属性信息相结合,共同解决冷启动问题,效果得到提升。
该方法主要是基于传统协同过滤推荐中的矩阵分解算法,在其在实际应用当中存在的可解释性差、用户和物品的冷启动问题来进行研究。通过引入知识图谱的概念,首先将每个用户和物品包括其存在的各种属性信息进行预编码处理,并转化成低维向量的形式。其次利用用户和物品的评分信息,将每个用户和物品均作为一个结点存储在知识图谱当中。以图的形式来构建专业领域的知识图谱,通过图的遍历来提取到每个用户对于物品的路径偏好信息,并将每条路径所经过的各结点向量进行融合,将融合后的向量信息输入到循环神经网络模型当中。最后将模型训练结果与各结点属性信息融合,利用交叉熵损失函数来进行模型训练,调节模型参数,以达到最优效果。从而解决算法中存在的可解释性和冷启动问题,为用户提供更精准的推荐。
本发明采用如下技术方案及实现步骤:
(1)选定专业领域数据集,确定该领域元数据的关系和种类。
(2)对数据集中不同类型数据进行预处理,得到标准化数据。该算法整体流程如图1所示。将原始用户评分数据集以8:2的比例生成训练数据集和测试数据集,每个数据以用户-物品数对的形式存储。后将生成的训练集再按20:1的比例生成负样本训练集。其中负样本训练集包含用户对某一物品不感兴趣的数据,每个数据同样以用户-物品数对的形式存储。然后将每个物品属性数据集中出现的各属性存放于字典当中,利用字典来记录每个物品属性的id值。同理再利用字典来记录每个用户属性的id值。最后将物品属性id和用户属性id分别写入对应的文件中,生成物品属性id文件和用户属性id文件。
(3)对物品属性id文件和用户属性id文件中出现的各属性结点进行预编码,从而生成物品属性预编码文件和用户属性预编码文件,预编码向量维度设置为10。
(4)利用训练数据集、负样本训练集、物品属性id文件、用户属性id文件,来以图的形式构建知识图谱。读取训练数据集中出现的结点,将读取到的用户-物品数对存储于列表当中。同理读取负样本训练集中出现的结点,将读取到的用户-物品数对存储于列表当中。构建一有向图。对出现的不同类型结点,在其id编号前添加相应字母,用于对不同类型的结点进行区分。将训练数据集中出现的每个结点数对,添加到有向图中,并用边对其进行相连。分别读取不同属性文件中的结点和属性,以此添加到有向图中。并用边对结点及其所对应的属性相连。对于每个用户-物品数对来说,其最大路径参数m可在[1,5]之间设定,该处设定最大路径参数为5。每条路径最大结点个数n可在[2,10]之间设定,该处设定每条路径最大结点个数为4。读取有向图,利用nx.all_simple_paths来分别提取出正向结点路径信息和负向结点路径信息,存储于正向路径文件和负向路径文件中。
(5)构建循环神经网络GRU,利用循环神经网络对用户的多种偏好进行学习,对来自知识图谱中的偏好路径结点信息进行编码处理,并将编码后的数据添加一层注意力机制,从而保证获取到较远结点信息,防止信息丢失影响预测准确率。将经过注意力机制后的各条路径编码信息送入池化层,利用池化层来区分各条路径的重要程度,从而使最终预测结果更加准确。
(6)为解决算法的冷启动问题,引入结点属性信息的概念。对于每个用户或物品结点来说,其各自的属性结点在知识图谱中呈发散状。因此根据构建好的知识图谱,获取到相应用户和物品的属性信息,进行特征融合。将融合后的用户属性编码于物品属性编码相乘,得到用户属性-物品属性向量,并与步骤五中模型预测结果以7:3的比例进行加和。
(7)将步骤六中的预测结果统一经过sigmod激活函数,得到每个分向量的预测概率,每个分向量的结果在[0,1]之间。
(8)将经过激活函数后的向量输入到交叉熵损失函数nn.BCELoss()中,进行模型训练。
(9)对于训练好的用户和物品特征向量,利用np.dot对两个向量相乘,得到预测评分。将评分从大到小进行排列,得出候选项目序列,此项目序列长度设为20。依次对训练集中每位用户出现的项目在候选序列中进行匹配,若读取到的项目出现在候选序列中,则命中数加1,最终用命中数/训练集用户-评分总数,得出模型的精确率。并用命中数/测试集用户-评分总数,得出模型的召回率。
附图说明
图1为基于知识图谱的推荐算法流程图
图2为基于知识图谱的多路径融合循环神经网络模型图
图3为循环神经网络GRU内部结构模型图
图4为加入结点属性信息的多路径融合循环神经网络模型图
具体实施方式
以下结合附图实例对本发明作进一步详细描述。
本发明提供了一种基于知识图谱的推荐算法性能优化的方法,该方法包括以下步骤:
步骤一:选定专业领域数据集,此处选定目前推荐算法研究领域较为常用的数据集:MovieLens-1M数据集。该数据集包含了756684条匿名的评分数据,共涉及6040个用户以及3382个电影。数据集详细信息如下表所示:
提取到数据集中用户-物品评分信息、用户的id号和属性信息以及物品的id号和属性信息。生成相应的用户-物品评分文件、用户-属性信息文件以及物品-属性信息文件。
步骤二:将采集到的数据分成用户评分数据集、物品属性数据集、用户属性数据集。其中物品属性数据集包含类型、导演、演员属性。用户属性数据集包含性别、年龄、职业属性。将采集到的数据按不同类型进行分类,预处理后得到标准化数据。数据预处理具体步骤如下:
(1)将用户-物品评分文件按8:2的比例生成训练数据集和测试数据集,每个数据以用户-物品数对的形式存储。并将生成的训练数据集再按20:1的比例生成负样本训练集。负样本训练集包含用户对某一物品不感兴趣的数据,每个数据同样以用户-物品数对的形式存储。
(2)读取用户-属性信息文件,将读取到的每个数据属性置于一个字典当中。
(3)针对每个属性赋予其唯一的id值,并将用户-属性信息转化为相应的用户id-属性id的形式。生成新的用户-属性id文件。
(4)同理,将物品-属性信息文件转化为相应的物品-属性id文件。
步骤三:对预处理后的数据进行预编码。预编码的结点包含:用户结点、物品结点、用户各属性结点以及物品各属性结点。设置预编码向量维度为10,分别生成各类结点的预编码文件。
步骤四:根据训练数据集、负样本训练集、物品-属性id文件、用户-属性id文件构建专业领域知识图谱,从而根据生成的知识图谱提取出正向路径信息和负向路径信息。知识图谱具体构建步骤如下:
(1)初始化一个数据列表,用于存放读取到的用户-物品数对。
(2)读取训练数据集中出现的结点,将读取到的用户-物品数对存储于列表当中。同理读取负样本训练集中出现的结点,将读取到的用户-物品数对存储于列表当中。
(3)构建一有向图DiGraph。将训练数据集中出现的每个用户结点前添加字母‘u’、物品结点前添加字母‘i’用以区分不同类型的结点,利用DiGraph.add_node添加到有向图中,并利用DiGraph.add_edge将边进行相连。
(4)读取物品属性id文件,将读取到的每个属性结点前分别添加字母‘g’、‘d’、‘a’用以区分不同属性。同样利用DiGraph.add_node将其添加到有向图中,并利用DiGraph.add_edge边将物品和不同属性进行相连。同理,读取用户属性id文件,将读取到的每个属性结点前分别添加字母‘G’、‘A’、‘O’用以区分不同属性。将其添加到有向图中,并用边将用户和不同属性进行相连。
(5)设置最大路径参数m为5,最大路径参数m可在[1,5]之间设定。并设置每条路径最大结点个数为4,每条路径最大结点个数可在[2,10]之间设定。读取有向图DiGraph,利用nx.all_simple_paths()来分别提取出正向结点路径信息和负向结点路径信息,存储于正向路径文件和负向路径文件中,作为后续模型的输入。
步骤五:构建循环神经网络GRU模型。算法模型图如图2所示,模型的具体构建方法如下:
(1)预处理层:对于步骤四中构建的知识图谱,其中(Ui,Vj)表示一个实体对,其中U代表用户集合,V代表物品集合。i代表某个用户i,j代表某个物品j。若存在用户i对物品j产生过交互,则利用不同长度的路径来连接该实体对。即存在P(Ui,Vj)=P{P1,P2,...,Pm},m的值代表用户-物品数对个数,m值在[1,5]之间,m值过大可能会造成引入过多节点,导致预测结果准确率下降。因此,此处设置m的值为5。另外,知识图谱KG由三元组(h,r,t)组成,其中h∈E,r∈R,t∈E,分别表示一个知识三元组的头实体、关系和尾实体。E和R分别是知识图谱中的实体集和关系集。因此,可以将每个用户的交互行为表示成三元组(Ui,interact,Vj)的形式。其中interact表示用户Ui和项目Vj之间产生过交互。对于其中的任意一条路径存在其中e0=Ui、en=Vj,pm代表用户-物品数对的第m条偏好路径,n表示经过的结点个数。r1、r2...rn表示连接偏好路径相对应的各个关系。其中所经过的e1、e2表示经过的物品属性结点。每条路径有其不同的语义表示。将生成的各条路径送入嵌入层,进行编码。
(2)嵌入层:利用pytorch进行模型搭建。对于每个用户来说,用户-物品评分数对个数m的最大值为5,由于存在数对个数不足5的情况,因此数对个数用m来表示。每个数对经过的结点个数n为4。则对于每个用户-物品数对来说,存在m×4的预编码向量。获取到有向图中的所有结点个数为6149,并设置预编码层输入向量维度为10。将某个用户-物品数对所经过的m条路径逐一进行编码,每条路径预编码向量大小为4×10,预编码向量经过一层nn.Embedding(num_embeddings=6149,embedding_dim=10),并将预编码向量利用nn.Parmeter()转化为模型可修改参数,进行向量编码。编码后每个结点ei存在相对应的嵌入向量Ei={Ei1,Ei2,Ei3....Eir},r表示嵌入向量的维数,此处设置r的值为10。经过编码,对于每个用户-物品数对输出大小为4×10的嵌入向量,利用nn.view转化成大小为4×1×10的向量。
(3)隐藏层:将编码后的4×1×10向量输入到nn.GRU(input_size=10,hidden_size=16,num_layers=1,dropout=0.5)网络中进行训练,生成4×1×16的输出向量和1×1×16的隐藏向量。其中循环神经网络GRU内部结构如图3所示。GRU涉及到两个门控单元,分别为zt更新门和rt重置门。其具体公式如下:
zt=σ(Wz·[ht-1,xt]) (1)
rt=σ(Wr·[ht-1,xt]) (2)
其中Wz、Wr、W分别为更新门权重、重置门权重和候选集权重,其值根据模型训练结果动态调整。ht-1、ht分别为上一时刻GRU的输出值、当前候选集以及当前时刻的GRU输出值。xt为当前时刻网络的输入值。σ代表sigmoid激活函数。[]表示两个向量相连,*表示矩阵的乘积,tanh()为双曲正切激活函数,使用的目的是为了克服模型梯度消失的问题。
利用permute将输出向量的第一维度和第二维度进行交换,生成1×4×16的输出向量。考虑到较远路径结点信息无法全面获取的情况,因此引入注意力机制。首先将隐藏向量利用nn.view转换成大小为1×16×1的隐藏向量,然后利用torch.bmm对大小为1×4×16的输出向量和大小为1×16×1的隐藏向量相乘,得到大小为1×4×1的注意力层向量,并去掉向量的第三维度,得到1×4的注意力层向量。将注意力层向量经过F.softmax,得到每个分向量的概率值,生成1×4的注意力层向量。利用unsqueeze给注意力层向量添加第三维度,生成1×4×1的注意力层向量。再利用torch.bmm对大小为1×4×16的输出向量和大小为1×4×1的注意力层向量相乘,得到大小为1×16×1的注意力层输出向量,并利用squeeze去掉向量第三维度,生成大小为1×16的注意力层输出向量。利用unsqueeze给注意力层输出向量添加第一维度,得到大小为1×1×16的注意力层输出向量。将经过的m条用户-物品评分路径的注意力层输出向量利用torch.cat按列进行向量拼接,得到1×m×16的输出向量。
(4)预测层:将输出向量通过平均池化层nn.AdaptiveAvgPool2d((1,16)),区分m条路径的重要程度,使模型对不同语义赋予不同的重要性权值。其具体公式如下:
h[ij]=avg(hm[ij]) (5)
其中m表示用户-项目数对的第m条路径,范围为1≤m≤5。hm[ij]表示每个(Ui,Vj)数对的各条路径表示,h[ij]表示经过平均池化层后,各路径表示的平均值。经过平均池化层后得到大小为1×16的向量。最后,在平均池化层后加入一层全连接层nn.Linear(in_features=16,out_features=10,bias=True),对向量进行降维,其公式如下:
Oij=f(h[ij])=σ(Wf·h[ij]+bf) (6)
其中f(h[ij])为以h[ij]作为自变量的全连接层函数,Wf为全连接层系数,bf为全连接层偏置,其值根据模型训练结果动态调整。σ为sigmoid激活函数,Oij为最终的预测向量。将经过平均池化层后的向量与全连接层系数相乘,加上全连接层偏置,最终得到大小为1×10的模型训练预测向量。
步骤六:引入结点属性信息的概念。算法模型图如图4所示。获取到步骤五嵌入层中已编码后的用户向量、用户各属性向量、项目向量、项目各属性向量。对于每个用户和物品均包含有3个属性,因此将嵌入向量与原始用户和物品向量利用np.vstack按行逐一进行叠加,生成4×10包含有属性信息的向量,再利用np.mean取各属性特征的平均值,分别得到1×10的用户属性融合向量及物品属性融合向量。将用户向量和物品向量利用np.multiply,对应分向量进行相乘,得到1×10的用户-物品属性向量。将该部分向量结果与步骤五中的模型训练预测向量结果以7:3的比例相加,得到融合预测向量。最后使用sigmod激活函数,输出10个特征各自的概率值。得到大小为1×10的最终预测向量。
步骤七:利用BCELoss()交叉熵损失函数对模型进行训练。在训练时设置epoch值为10,学习率为0.2。交叉熵损失函数具体公式如下:
其中i代表某个用户i,N代表用户总数。oij表示(Ui,Vj)数对的最终预测向量,tij表示(Ui,Vj)数对的目标向量,若(Ui,Vj)数对存在于正向路径信息文件中,则tij为1。否则,tij为0。log()为对数函数。loss(o,t)为以oij作为输入向量,tij作为目标向量的损失函数值。
步骤八:对于训练好的用户和物品特征向量,利用np.dot对两个向量相乘,得到预测评分。将评分从大到小进行排列,得出候选项目序列,此项目序列长度设为20。依次对训练集中每位用户出现的项目在候选序列中进行匹配,若读取到的项目出现在候选序列中,则命中数加1,最终用命中数/训练集用户-评分总数,得出模型的精确率Precision。并用命中数/测试集用户-评分总数,得出模型的召回率Recall。其具体公式如下:
其中R(u)表示根据用户u在训练集上的偏好行为得出的推荐列表,T(u)表示用户u在测试集上的推荐列表。经过实验对比,该模型比传统GRU模型预测准确度提升2.3%,比传统矩阵分解算法模型预测准确度提升5.1%。
Claims (1)
1.基于知识图谱的推荐算法性能优化的方法,其特征在于:
(1)选定专业领域数据集,确定该领域元数据的关系和种类;
(2)对数据集中不同类型数据进行预处理,得到标准化数据;
将原始用户评分数据集生成训练数据集和测试数据集,每个数据以用户-物品数对的形式存储;后将生成的训练集生成负样本训练集;其中负样本训练集包含用户对某一物品不感兴趣的数据,每个数据同样以用户-物品数对的形式存储;然后将每个物品属性数据集中出现的各属性存放于字典当中,利用字典来记录每个物品属性的id值;同理再利用字典来记录每个用户属性的id值;最后将物品属性id和用户属性id分别写入对应的文件中,生成物品属性id文件和用户属性id文件;
(3)对物品属性id文件和用户属性id文件中出现的各属性结点进行预编码,从而生成物品属性预编码文件和用户属性预编码文件,预编码向量维度设置为10;
(4)利用训练数据集、负样本训练集、物品属性id文件、用户属性id文件,来以图的形式构建知识图谱;读取训练数据集中出现的结点,将读取到的用户-物品数对存储于列表当中;同理读取负样本训练集中出现的结点,将读取到的用户-物品数对存储于列表当中;构建一有向图;对出现的不同类型结点,在其id编号前添加相应字母,用于对不同类型的结点进行区分;将训练数据集中出现的每个结点数对,添加到有向图中,并用边对其进行相连;分别读取不同属性文件中的结点和属性,以此添加到有向图中;并用边对结点及其所对应的属性相连;对于每个用户-物品数对来说,设定最大路径参数为5;每条路径最大结点个数n设定为4;读取有向图,分别提取出正向结点路径信息和负向结点路径信息,存储于正向路径文件和负向路径文件中;
(5)构建循环神经网络GRU,利用循环神经网络对用户的多种偏好进行学习,对来自知识图谱中的偏好路径结点信息进行编码处理,并将编码后的数据添加一层注意力机制,将经过注意力机制后的各条路径编码信息送入池化层,利用池化层来区分各条路径的重要程度,从而使最终预测结果更加准确;
(6)为解决算法的冷启动问题,引入结点属性信息的概念;对于每个用户或物品结点来说,其各自的属性结点在知识图谱中呈发散状;因此根据构建好的知识图谱,获取到相应用户和物品的属性信息,进行特征融合;将融合后的用户属性编码于物品属性编码相乘,得到用户属性-物品属性向量,并与步骤(5)中模型预测结果进行加和;
(7)将步骤(6)中的预测结果统一经过sigmod激活函数,得到每个分向量的预测概率,每个分向量的结果在[0,1]之间;
(8)将经过激活函数后的向量输入到交叉熵损失函数中,进行模型训练;
(9)对于训练好的用户和物品特征向量,对这两个向量相乘,得到预测评分;将评分从大到小进行排列,得出候选项目序列,此项目序列长度设为20;依次对训练集中每位用户出现的项目在候选序列中进行匹配,若读取到的项目出现在候选序列中,则命中数加1,最终用命中数/训练集用户-评分总数,得出模型的精确率;并用命中数/测试集用户-评分总数,得出模型的召回率;
包括以下步骤:
步骤一:选定专业领域数据集;
提取到数据集中用户-物品评分信息、用户的id号和属性信息以及物品的id号和属性信息;生成相应的用户-物品评分文件、用户-属性信息文件以及物品-属性信息文件;
步骤二:将采集到的数据分成用户评分数据集、物品属性数据集、用户属性数据集;
将采集到的数据按不同类型进行分类,预处理后得到标准化数据;数据预处理具体步骤如下:
(1)将用户-物品评分文件生成训练数据集和测试数据集,每个数据以用户-物品数对的形式存储;并将生成的训练数据集生成负样本训练集;负样本训练集包含用户对某一物品不感兴趣的数据,每个数据同样以用户-物品数对的形式存储;
(2)读取用户-属性信息文件,将读取到的每个数据属性置于一个字典当中;
(3)针对每个属性赋予其唯一的id值,并将用户-属性信息转化为相应的用户id-属性id的形式;生成新的用户-属性id文件;
(4)同理,将物品-属性信息文件转化为相应的物品-属性id文件;
步骤三:对预处理后的数据进行预编码;预编码的结点包含:用户结点、物品结点、用户各属性结点以及物品各属性结点;设置预编码向量维度为10,分别生成各类结点的预编码文件;
步骤四:根据训练数据集、负样本训练集、物品-属性id文件、用户-属性id文件构建专业领域知识图谱,从而根据生成的知识图谱提取出正向路径信息和负向路径信息;知识图谱具体构建步骤如下:
(1)初始化一个数据列表,用于存放读取到的用户-物品数对;
(2)读取训练数据集中出现的结点,将读取到的用户-物品数对存储于列表当中;同理读取负样本训练集中出现的结点,将读取到的用户-物品数对存储于列表当中;
(3)构建一有向图DiGraph;将训练数据集中出现的每个用户结点前添加字母‘u’、物品结点前添加字母‘i’用以区分不同类型的结点,利用DiGraph.add_node添加到有向图中,并利用DiGraph.add_edge将边进行相连;
(4)读取物品属性id文件,将读取到的每个属性结点前分别添加字母‘g’、‘d’、‘a’用以区分不同属性;同样利用DiGraph.add_node将其添加到有向图中,并利用DiGraph.add_edge边将物品和不同属性进行相连;同理,读取用户属性id文件,将读取到的每个属性结点前分别添加字母‘G’、‘A’、‘O’用以区分不同属性;将其添加到有向图中,并用边将用户和不同属性进行相连;
(5)设置最大路径参数m为5,并设置每条路径最大结点个数为4,读取有向图DiGraph,提取出正向结点路径信息和负向结点路径信息,存储于正向路径文件和负向路径文件中,作为后续模型的输入;
步骤五:构建循环神经网络GRU模型;模型的具体构建方法如下:
(1)预处理层:对于步骤四中构建的知识图谱,其中(Ui,Vj)表示一个实体对,其中U代表用户集合,V代表物品集合;i代表某个用户i,j代表某个物品j;若存在用户i对物品j产生过交互,则利用不同长度的路径来连接该实体对;即存在P(Ui,Vj)=P{P1,P2,...,Pm},m的值为5;
另外,知识图谱KG由三元组(h,r,t)组成,其中h∈E,r∈R,t∈E,分别表示一个知识三元组的头实体、关系和尾实体;E和R分别是知识图谱中的实体集和关系集;因此,将每个用户的交互行为表示成三元组(Ui,interact,Vj)的形式;其中interact表示用户Ui和项目Vj之间产生过交互;对于其中的任意一条路径存在其中e0=Ui、en=Vj,pm代表用户-物品数对的第m条偏好路径,n表示经过的结点个数;r1、r2...rn表示连接偏好路径相对应的各个关系;其中所经过的e1、e2表示经过的物品属性结点;每条路径有其不同的语义表示;将生成的各条路径送入嵌入层,进行编码;
(2)嵌入层:利用pytorch进行模型搭建;对于每个用户来说,用户-物品评分数对个数m的最大值为5,由于存在数对个数不足5的情况,因此数对个数用m来表示;每个数对经过的结点个数n为4;则对于每个用户-物品数对来说,存在m×4的预编码向量;获取到有向图中的所有结点个数,并设置预编码层输入向量维度为10;将某个用户-物品数对所经过的m条路径逐一进行编码,每条路径预编码向量大小为4×10,预编码向量先转化为模型可修改参数,进行向量编码;编码后每个结点ei存在相对应的嵌入向量Ei={Ei1,Ei2,Ei3....Eir},r表示嵌入向量的维数,此处设置r的值为10;经过编码,对于每个用户-物品数对输出大小为4×10的嵌入向量,利用nn.view转化成大小为4×1×10的向量;
(3)隐藏层:将编码后的4×1×10向量输入到nn.GRU网络中进行训练,生成4×1×16的输出向量和1×1×16的隐藏向量;
GRU涉及到两个门控单元,分别为zt更新门和rt重置门;其具体公式如下:
zt=σ(Wz·[ht-1,xt]) (1)
rt=σ(Wr·[ht-1,xt]) (2)
其中Wz、Wr、W分别为更新门权重、重置门权重和候选集权重,其值根据模型训练结果动态调整;ht-1、ht分别为上一时刻GRU的输出值、当前候选集以及当前时刻的GRU输出值;xt为当前时刻网络的输入值;σ代表sigmoid激活函数;[]表示两个向量相连,*表示矩阵的乘积,tanh()为双曲正切激活函数;
将输出向量的第一维度和第二维度进行交换,生成1×4×16的输出向量;
首先将隐藏向量转换成大小为1×16×1的隐藏向量,然后对大小为1×4×16的输出向量和大小为1×16×1的隐藏向量相乘,得到大小为1×4×1的注意力层向量,并去掉向量的第三维度,得到1×4的注意力层向量;得到注意力层向量的概率值,生成1×4的注意力层向量;给注意力层向量添加第三维度,生成1×4×1的注意力层向量;再对大小为1×4×16的输出向量和大小为1×4×1的注意力层向量相乘,得到大小为1×16×1的注意力层输出向量,并去掉向量第三维度,生成大小为1×16的注意力层输出向量;给注意力层输出向量添加第一维度,得到大小为1×1×16的注意力层输出向量;将经过的m条用户-物品评分路径的注意力层输出向量按列进行向量拼接,得到1×m×16的输出向量;
(4)预测层:将输出向量通过平均池化层区分m条路径的重要程度,使模型对不同语义赋予不同的重要性权值;其具体公式如下:
h[ij]=avg(hm[ij]) (5)
其中m表示用户-项目数对的第m条路径,范围为1≤m≤5;hm[ij]表示每个(Ui,Vj)数对的各条路径表示,h[ij]表示经过平均池化层后,各路径表示的平均值;经过平均池化层后得到大小为1×16的向量;最后,在平均池化层后加入一层全连接层对向量进行降维,其公式如下:
Oij=f(h[ij])=σ(Wf·h[ij]+bf)
其中f(h[ij])为以h[ij]作为自变量的全连接层函数,Wf为全连接层系数,bf为全连接层偏置;σ为sigmoid激活函数,Oij为最终的预测向量;将经过平均池化层后的向量与全连接层系数相乘,加上全连接层偏置,最终得到大小为1×10的模型训练预测向量;
步骤六:引入结点属性信息的概念;获取到步骤五嵌入层中已编码后的用户向量、用户各属性向量、项目向量、项目各属性向量;对于每个用户和物品均包含有3个属性,因此将嵌入向量与原始用户和物品向量利用按行逐一进行叠加,生成4×10包含有属性信息的向量,再取各属性特征的平均值,分别得到1×10的用户属性融合向量及物品属性融合向量;将用户向量和物品向量进行相乘,得到1×10的用户-物品属性向量;将用户-物品属性向量与步骤五中的模型训练预测向量结果相加,得到融合预测向量;最后使用sigmod激活函数,输出10个特征各自的概率值;得到大小为1×10的最终预测向量;
步骤七:利用交叉熵损失函数对模型进行训练;在训练时设置epoch值为10,学习率为0.2;交叉熵损失函数具体公式如下:
其中i代表某个用户i,N代表用户总数;oij表示(Ui,Vj)数对的最终预测向量,tij表示(Ui,Vj)数对的目标向量,若(Ui,Vj)数对存在于正向路径信息文件中,则tij为1;否则,tij为0;log()为对数函数;loss(o,t)为以oij作为输入向量,tij作为目标向量的损失函数值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011455909.8A CN112417306B (zh) | 2020-12-10 | 2020-12-10 | 基于知识图谱的推荐算法性能优化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011455909.8A CN112417306B (zh) | 2020-12-10 | 2020-12-10 | 基于知识图谱的推荐算法性能优化的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112417306A CN112417306A (zh) | 2021-02-26 |
CN112417306B true CN112417306B (zh) | 2024-02-02 |
Family
ID=74776778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011455909.8A Active CN112417306B (zh) | 2020-12-10 | 2020-12-10 | 基于知识图谱的推荐算法性能优化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112417306B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022231522A1 (en) * | 2021-04-28 | 2022-11-03 | Nanyang Technological University | Explainable recommendation system and method |
CN113407819B (zh) * | 2021-05-20 | 2022-06-17 | 桂林电子科技大学 | 一种基于残差网络的序列推荐方法、***及存储介质 |
CN113487377A (zh) * | 2021-06-07 | 2021-10-08 | 贵州电网有限责任公司 | 一种基于gru网络的个性化实时推荐方法 |
CN113420233A (zh) * | 2021-06-23 | 2021-09-21 | 新疆大学 | 协同知识感知增强网络推荐方法 |
CN113254550B (zh) * | 2021-06-29 | 2022-04-19 | 浙江大华技术股份有限公司 | 基于知识图谱的推荐方法、电子设备和计算机存储介质 |
CN113342995B (zh) * | 2021-07-05 | 2022-12-02 | 成都信息工程大学 | 一种基于路径语义和特征提取的负样本提取方法 |
CN113987200B (zh) * | 2021-10-19 | 2024-03-15 | 云南大学 | 神经网络结合知识图谱的推荐方法、***、终端、介质 |
CN114265986B (zh) * | 2022-02-28 | 2022-07-12 | 南京大学 | 一种融合知识图谱结构与路径语义的信息推送方法和*** |
CN114820139B (zh) * | 2022-05-25 | 2024-05-28 | 重庆大学 | 一种基于知识图谱路径推理的多用户推荐*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110275964A (zh) * | 2019-06-26 | 2019-09-24 | 程淑玉 | 基于知识图谱与循环神经网络的推荐模型 |
-
2020
- 2020-12-10 CN CN202011455909.8A patent/CN112417306B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110275964A (zh) * | 2019-06-26 | 2019-09-24 | 程淑玉 | 基于知识图谱与循环神经网络的推荐模型 |
Non-Patent Citations (1)
Title |
---|
融合知识图谱与循环神经网络的推荐模型;程淑玉 等;小型微型计算机***(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112417306A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112417306B (zh) | 基于知识图谱的推荐算法性能优化的方法 | |
CN109299396B (zh) | 融合注意力模型的卷积神经网络协同过滤推荐方法及*** | |
Tautkute et al. | Deepstyle: Multimodal search engine for fashion and interior design | |
CN111797321B (zh) | 一种面向不同场景的个性化知识推荐方法及*** | |
CN111274398B (zh) | 一种方面级用户产品评论情感分析方法及*** | |
CN106897371B (zh) | 中文文本分类***及方法 | |
CN111127146B (zh) | 基于卷积神经网络与降噪自编码器的信息推荐方法及*** | |
CN110765260A (zh) | 一种基于卷积神经网络与联合注意力机制的信息推荐方法 | |
CN112328900A (zh) | 一种融合评分矩阵和评论文本的深度学习推荐方法 | |
CN114693397B (zh) | 一种基于注意力神经网络的多视角多模态商品推荐方法 | |
Cong et al. | Self-supervised online metric learning with low rank constraint for scene categorization | |
CN108897791B (zh) | 一种基于深度卷积特征和语义相似度量的图像检索方法 | |
CN111027595A (zh) | 双阶段语义词向量生成方法 | |
CN112487200B (zh) | 一种改进的包含多重边信息与多任务学习的深度推荐方法 | |
CN112800344B (zh) | 一种基于深度神经网络的电影推荐方法 | |
CN112417289A (zh) | 一种基于深度聚类的资讯信息智能推荐方法 | |
CN111259264B (zh) | 一种基于生成对抗网络的时序评分预测方法 | |
CN114332519A (zh) | 一种基于外部三元组和抽象关系的图像描述生成方法 | |
CN116680363A (zh) | 一种基于多模态评论数据的情感分析方法 | |
CN114662652A (zh) | 一种基于多模态信息学习的专家推荐方法 | |
CN113535928A (zh) | 基于注意力机制下长短期记忆网络的服务发现方法及*** | |
Zhao et al. | Big transfer learning for fine art classification | |
CN114841778B (zh) | 一种基于动态图神经网络的商品推荐方法 | |
Ramesh Babu et al. | A Design of Eigenvalue based CNN tool for Image Retrieval | |
CN114564594A (zh) | 一种基于双塔模型的知识图谱用户偏好实体召回方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |