一种基于用户正负偏好学习的兴趣点推荐方法与流程

文档序号:19376269发布日期:2019-12-10 23:54阅读:305来源:国知局
一种基于用户正负偏好学习的兴趣点推荐方法与流程

本发明涉及计算机技术领域,尤其涉及一种基于用户正负偏好学习的兴趣点推荐方法。



背景技术:

近年来,随着云计算、物联网、移动互联网、人工智能等技术的迅速发展,为人们外出活动带来了很多便利,如看电影,就餐和旅游等。然而,互联网空间各类应用的层出不穷引发了数据的爆炸式增长,如何从纷繁复杂的数据中获取有价值的信息,为用户推荐合适的兴趣点(pointofinterest)显得尤为重要。传统的基于位置的推荐,主要根据兴趣点热度统计信息或者结合用户和兴趣点的特征来进行推荐,但是在处理复杂的数据耗时长,也只能学习用户和兴趣点的浅层特征,不能高效地为用户提供个性化推荐。

目前已公布的发明专利“基于用户正负反馈画像编码的个性化兴趣点推荐方法”,公开号为cn109189944a,该发明根据图表示学习获得兴趣点的特征,并根据不同的评分信息来获取用户的画像编码,最后通过用户的画像编码与兴趣点做相似度计算产生推荐列表。但是上述专利在利用线性运算构建用户画像时不能学习用户和兴趣点的高阶交互特征,也没有考虑兴趣点的属性特征对用户的影响,也即难以用兴趣点隐含的属性特征刻画用户偏好。因此,很难根据用户的偏好和兴趣点的深层特征为用户产生高个性化的兴趣点推荐。相比于传统的推荐技术,深度学习模型可以通过多层神经网络捕捉用户和项目的高阶历史交互特征,以此刻画用户对项目的深层偏好特征表示,达到为用户生成高个性化推荐的目的。基于这个考虑,本发明描述的是“一种基于用户正负偏好学习的兴趣点推荐方法”,该方法利用用户访问兴趣点的历史记录来划分用户的正、负评价数据,并根据用户和兴趣点的属性构建知识图谱,利用图表示学习方法来获得兴趣点的隐式特征向量,然后使用神经网络为用户和兴趣点的正、负交互评价行为构建出用户正、负反馈偏好两个神经网络模型,最后分别使用训练好的两个模型为用户生成并优化兴趣点推荐列表,以此提高推荐的精确度和个性化。



技术实现要素:

本发明的目的在于提供一种基于用户正负偏好学习的兴趣点推荐方法,使用神经网络学习用户和景点交互的深层次特征,同时训练出两个神经网络模型,正偏好神经模型和负偏好神经模型;正偏好神经网络模型产生用户喜欢的景点的列表,然后通过负偏好神经网络模型优化并得到最终推荐列表,为用户提供更精确的景点推荐;以解决传统的兴趣点推荐精度不高和推荐结果个性化程度低等问题。

为了达到上述目的,本发明提供了一种基于用户正负偏好学习的兴趣点推荐方法,包括:

采集用户对已访问的兴趣点的历史评价数值和已访问的兴趣点的相关属性数据,对采集到的数据进行预处理,对预处理后的数据中的用户、兴趣点和兴趣点属性进行统一编号;

根据用户对每个已访问的兴趣点的历史评价数值,将该用户已访问的兴趣点分别划分为正反馈兴趣点列表和负反馈兴趣点列表;

利用兴趣点、属性类型和具体属性值信息,构建兴趣点相关的三元组集合,并以三元组为基础单元建立完整兴趣点知识图谱;并将知识图谱中每个兴趣点、属性类型和兴趣点属性值学习表示为唯一对应的特征向量,分别构建兴趣点特征向量矩阵、属性类型特征向量矩阵和兴趣点属性值特征向量矩阵;

使用用户的正、负反馈兴趣点列表和利用所述正、负反馈兴趣点列表中对应兴趣点的兴趣点特征向量矩阵、属性类型特征向量矩阵和兴趣点属性值特征向量矩阵,构建基于注意力机制的用户偏好记忆模块,所述用户偏好记忆模块为用户构建其对应的偏好特征向量矩阵,所述偏好特征向量矩阵包括正偏好特征向量矩阵和负偏好特征向量矩阵;

使用用户的正反馈兴趣点集合,基于监督式学习方式训练该用户的正偏好神经网络模型;使用用户的负反馈兴趣点集合,基于监督式学习方式训练该用户的负偏好神经网络模型;

使用训练好的该用户的正偏好神经网络模型预测该用户未访问过兴趣点的访问概率并将其排序,获得用户正反馈的前k个兴趣点;然后使用训练好的该用户负偏好神经网络模型去预测这k个兴趣点的概率,将排名前k/2的兴趣点从这k个兴趣点中删除,将剩下的k/2的兴趣点作为最终给该用户推荐的兴趣点。

进一步,使用图表示学习模型transe将三元组中的兴趣点、属性类型和属性值映射到同一个特征向量空间中,即用三元组中的兴趣点实体,属性和属性值通过模型的评分函数进行训练,使兴趣点实体、属性类型和属性值转化成对应的特征向量。

进一步,所述正偏好特征向量矩阵包括用户即时正偏好矩阵和用户历史正偏好矩阵。

进一步,所述负偏好特征向量矩阵包括用户即时负偏好矩阵和用户历史负偏好矩阵。

进一步,所述兴趣点的相关属性数据包括:兴趣点等级、兴趣点评分、景区类型、地理位置、门票价格、游玩时长和适宜游玩季节。

进一步,所述正反馈兴趣点列表中保存的信息包括:用户id、正反馈标签值以及具体访问的兴趣点id序列;所述负反馈兴趣点列表中保存的信息包括:用户id、负反馈标签值以及具体访问的兴趣点id序列;其中,正反馈标签值和负反馈标签值用于标志该列表是正反馈列表还是负反馈列表。

进一步,所述正反馈标签值为1,所述负反馈标签值为0。

进一步,所述用户偏好记忆模块为用户构建正偏好特征向量矩阵的方法包括:

生成初始用户偏好特征矩阵;

学习用户即时正偏好特征向量;

更新用户历史正偏好特征向量;

构建用户完整偏好特征向量。

进一步,所述正偏好神经网络模型的训练流程具体包括:

读取某用户对应的正反馈兴趣点列表,构建模型的输入数据;

根据输入数据查找用户和兴趣点特征向量,构建模型输入向量数据;

将特征向量向量输入多层前馈神经网络,学习用户对兴趣点的深层正偏好特征;

利用神经网络分类器预测用户对兴趣点的访问概率;

利用反向传播算法,优化模型中权重参数以及用户记忆模块中的对应用户、兴趣点特征向量。

本发明的有益效果如下:

1、根据用户对兴趣点的历史评分偏好来划分用户的正负偏好,同时利用构建用户正负偏好神经网络模型,分别学习用户与正负兴趣点的深层交互特征,准确刻画用户的正负偏好,提高兴趣点推荐的个性化。

2、本发明使用知识图谱特征表示学习模型,获取兴趣点、属性类型和兴趣点属性值的特征向量,通过学习兴趣点知识图谱的语义特征,以此扩展后续兴趣点推荐方法中的属性语义信息,使得推荐结果更加贴近个人偏好并且增加推荐结果的可解释性。

3、本发明利用记忆网络和注意力机制学习用户的即时(短期)偏好和历史(长期)偏好特征向量。相比循环神经网络模型lstm/gru等,注意力机制的特征学习方法具有运算量小的优点,保证了推荐算法的实时性。同时模型通过记忆网络增加了外部记忆功能,能够有效保存用户的长、短期隐式偏好。

4、本发明利用监督式学习方式训练出正偏好神经网络模型和负偏好神经网络模型,使用正偏好神经网络预测出候选推荐兴趣点列表,在使用负偏好神经网络将候选兴趣点进行优化,从而进一步提高兴趣点推荐的个性化和合理性。

附图说明

图1为本发明实施例提供的兴趣点推荐整体结构流程图;

图2为本发明实施例提供的数据采集和处理流程图;

图3为本发明实施例提供的兴趣点知识图谱特征学习流程图;

图4为本发明实施例提供的兴趣点推荐模型总体结构图

图5为本发明实施例提供的用户偏好记忆模块学习用户偏好向量的流程图;

图6为本发明实施例提供的用户正/负偏好神经网络模型训练流程图;

图7为本发明实施例提供的兴趣点推荐列表生成流程图。

具体实施方式

下面将结合示意图对本发明的具体实施方式进行更详细的描述。根据下列描述,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。

如图1所示,本实施例提供了一种基于用户正负偏好学习的兴趣点推荐方法,包括:

采集用户对已访问的兴趣点的历史评价数值和已访问的兴趣点的相关属性数据,对采集到的数据进行预处理,对预处理后的数据中的用户、兴趣点和兴趣点属性进行统一编号;

根据用户对每个已访问的兴趣点的历史评价数值,将该用户已访问的兴趣点分别划分为正反馈兴趣点列表和负反馈兴趣点列表;

利用兴趣点、属性类型和具体属性值信息,构建兴趣点相关的三元组集合,并以三元组为基础单元建立完整兴趣点知识图谱;并将知识图谱中每个兴趣点、属性类型和兴趣点属性值学习表示为唯一对应的特征向量,分别构建兴趣点特征向量矩阵、属性类型特征向量矩阵和兴趣点属性值特征向量矩阵;

使用用户的正、负反馈兴趣点列表和利用正、负反馈兴趣点列表中对应兴趣点的兴趣点特征向量矩阵、属性类型特征向量矩阵和兴趣点属性值特征向量矩阵,构建基于注意力机制的用户偏好记忆模块,用户偏好记忆模块为用户构建其对应的偏好特征向量矩阵,偏好特征向量矩阵包括正偏好特征向量矩阵和负偏好特征向量矩阵;

使用用户的正反馈兴趣点集合,基于监督式学习方式训练该用户的正偏好神经网络模型;使用用户的负反馈兴趣点集合,基于监督式学习方式训练该用户的负偏好神经网络模型;

使用训练好的该用户的正偏好神经网络模型预测该用户未访问过兴趣点的访问概率并将其排序,获得用户正反馈的前k个兴趣点;然后使用训练好的该用户负偏好神经网络模型去预测这k个兴趣点的概率,将排名前k/2的兴趣点从这k个兴趣点中删除,将剩下的k/2的兴趣点作为最终给该用户推荐的兴趣点。

具体的,本实施例以用户获取的兴趣点为景点为例,以对本发明的兴趣点推荐方法做详细说明,图2是本实例数据采集和处理的流程图,具体的步骤包含:

步骤1、利用现有的网络爬虫技术,在携程、同程旅游、马蜂窝以及百度百科等网站上爬取推荐景点和景点的多种旅游属性值,旅游属性类型包括:景点等级、景点评分、景区类型(多项)、地理位置、门票价格、游玩时长、适宜游玩季节等等。由于爬取的原始数据不能完全符合本方法后续计算的要求,需要属性值数据进行必要的处理及转化。例如景点的地理位置属性值,爬取的原始值是具体门牌号,但是在构建三元组时我们把地址按照行政区域划分;例如景点门票属性值,爬取的原始值是50、90或者100元的具体金额,但是我们保存属性时是按照价格区间划分为高中低三档;例如景点评分,爬取的原始值是3.8、4.2或者4.8的具体综合评分,保存综合评分时对分值四舍五入,然后变为1分,2分,3分,4分和5分五档。同时,爬取网站上每位用户对已爬取所有景点的实际评分信息,该评分序列作为每位用户与景点的交互历史数据。

步骤2、由于步骤1爬取的原始数据不能直接进行计算,需要为这些数据设置唯一的id值。本方法将步骤1中的数据分为四类数据,并用四个表分别存储这四类数据和对应的id值。四个表分别为用户id表,景点id表,属性类型id表和属性值id表,其中用户id表存储的是用户名称和对应的id值,景点id表存储的是景点名称和对应的id值,属性类型id表存储的是属性类型名称和对应的id值,属性值id表存储的是景点的所有属性值名称和所对应的id值;在这四个表中,首个数据的id值设置为1,后续数据的id值逐个加1,例如在景点id表中,“漓江景区”的id值为1,“象鼻山公园景区”的id值为2,“七星公园景区”的id值为3;例如在属性值id表中,“5a级景区”的id值为1,“4a级景区”的id值为2,“3a级景区”的id值为3;

步骤3、由于所采集到的用户对景点实际评分并不都是整数,其分值都在0分和5分之间,为了准确描述用户对景点的喜欢和讨厌的特性,对这些分值进行处理如下:大于0分而小于等于1分为1分,大于1分而小于等于2分为2分,依此规则将用户对景点的评分分为五个等级:5分,4分,3分,2分,1分,并将这些用户访问过的景点标签设置为1,用户没有访问过的景点的标签设置为0;假设大于等于3分的景点为用户喜欢的景点,小于3分的景点为用户不喜欢景点。然后将每位用户的历史景点交互数据分为两组:正反馈景点列表和负反馈景点列表。每个列表中保存保存信息包括:用户id、正负反馈标签值以及具体访问的景点id序列。其中正负反馈标签用于标志该列表是正反馈还是负反馈列表,具体的该值为1代表正反馈,0代表负反馈。

步骤4、将采集到景点和景点的多种属性等数据用一系列三元组(h,r,t)的形式表示,其中h是景点id,r是属性类型id,t是景点对应的具体属性值id,例如:三元组(漓江景区,景区等级,国家5a级景区),其中“漓江景区”表示为景点实体h,“国家5a级景区”表示属性值t,“景区等级”为景点属性类型。在景点知识图谱中,h和t表示头尾实体,r表示实体间相连的边,所有三元组构成一张关于所有景点及其对应属性值的图,即景点知识图谱。该知识图谱使用图数据库软件neo4j保存。

步骤5、从知识图谱中取出三元组中的景点实体,属性类型和属性值,然后根据步骤3的景点id表,属性id表和属性值id表,将每个三元组的景点,属性类型和属性值转换成对应的数字形式,并使用特定的文本文件统一保存处理后的所有三元组。在该文件中每个三元组占一行,例如三元组(象鼻山公园,地理位置,桂林市七星区),转换成数字后表示为(h1,r10,t9)。

由于景点的三元组不能作为神经网络模型的输入特征向量,因此景点及其属性特征需要使用图表示学习模型进行向量化表示操作,即将图谱中所有景点及其属性值等实体转为向量表示。本实例使用transe模型进行知识图谱特征学习,特征学习流程如图3所示,具体包括:

步骤1、构建k行*d列的景点特征矩阵p,l行*d列的属性类型特征矩阵r和m行*d列的景点属性值特征矩阵a。其中p矩阵的每一行对应一个景点id的向量,共k个景点向量;r矩阵的每一行对应一个属性类型id的向量,共l个属性类型向量;a矩阵的每一行对应一个属性值id的向量,共m个景点属性值向量。每个向量的维度为d列,本实施例中向量维度d为100维。

步骤2、特征学习模型将p、a、r三个特征矩阵进行初始化。具体地,将矩阵中每个向量用正态分布的随机值进行向量各个维度初始化;然后对所有的向量用向量模值进行归一化处理,通过归一化来控制向量的模长度,使向量的模不至于过长或者过短。

步骤3、从景点知识图谱对应的文本文件中依次读取每个三元组,将其中的景点id、属性类型id和属性值id作为对应特征矩阵的行索引值,读取对应的特征向量。然后计算每个三元组的得分。得分函数的目标是衡量三元组中h、r和t的三个向量在特征空间中满足空间距离关系h+r≈t,即实体h的特征向量加上属性类型向量r大约等于属性值特征向量t。三元组得分函数定义为:

fr表示得分函数,l1/2表示得分函数可以使用l1第一范式或者l2第二范式距离进行运算,整个公式的含义是景点特征向量h和属性向量r相加所得的向量趋近与属性值特征向量t。在模型训练时使用随机梯度下降的方法更新景点实体、属性类型和属性值的特征向量。

步骤4、在实际的模型训练过程中,为了区分正例与错误的三元组,所用到的目标函数为:

其中,s是正例三元组的集合,s-是负例三元组的集合,函数max(x,y)返回x和y中较大的值,γ为正例三元组得分和负例三元组的得分之间的间隔距离。transe模型训练的过程也就是通过随机梯度下降算法,通过正、负例三元组计算目标函数梯度,对应更新三元组中景点、属性类型和属性值对应的特征向量,最大化目标函数l。最终通过优化l函数,使得正例三元组中的景点向量h和属性类型向量r相加所得的向量越来越接近属性值向量t,而负例三元组中的景点实体向量h和属性类型向量r相加所得的向量越来越远离属性值向量t。

transe模型中的正例三元组及由景点知识图谱中的客观事实构成;负例三元组则由算法通过随机替换正例三元组中的景点或属性值得到,即构成与客观事实相反的三元组。例如正例三元组(象鼻山景区,景区等级,国家5a级)可以构建负例三元组(象鼻山景区,景区等级,国家2a级)、(大榕树景区,景区等级,国家5a级)等等。模型通过构建若干负例三元组并配合正例三元组完成景点知识图谱中各个景点特征向量的训练。

由于三元组的景点实体、属性类型和属性值通过模型训练后映射到向量空间中,使得景点特征向量、属性类型向量和属性值向量之间的结构语义相似性,景点实体向量对应的属性值向量仍保留该景点的属性特征,因此景点向量h也具有对应属性值向量t的相关高级语义特征,属性值向量能很好的刻画对应的景点属性值特征;若两个不同景点实体具有同一种属性值,通过transe模型训练后的两个实体向量在向量空间中也具有相似性;同样的,两个不同景点具有多种相似的属性值,通过transe模型训练后的两个景点实体向量在向量空间中也存在相似性。例如七星公园和象鼻山公园的旅游类型、票价、游玩时长等具有相似性。因此,在景点知识图谱中,这两个景点所连接的属性值在结构上也具有相似性,所这两个景点实体特征向量在向量空间中也比较接近。

图4为本发明所设计的兴趣点推荐模型总体结构图。该模型主要包括三个部分:景点知识图谱特征表示学习模型,用户偏好记忆模块和用户偏好神经网络预测模型。其中第一部分景点知识图谱特征学习流程由图2及图3描述;第二部分用户偏好记忆模块关于用户偏好特征向量的产生方法由图5描述;第三部分用户正/负偏好神经网络预测模型训练方法由图6描述。

本发明为了能够让景点知识图谱中的景点属性语义与用户-景点的交互序列语义能够有机结合,在用户偏好神经网络模型之前增加了“用户偏好记忆模块”,该模块结构位于图4中的虚线框内。偏好记忆模块使用外部记忆部件分别存储用户历史正/负偏好特征矩阵uh+/-和用户即时正/负偏好特征矩阵ui+/-。四个偏好特征矩阵均为n行*d列矩阵,矩阵的每行代表一位用户的偏好特征,每个向量的维度为d列,本实施例中向量维度d为100维,系统全部用户为n位。其中,用户历史正偏好向量融合了用户所有历史正反馈景点的相关特征,用户即时正偏好向量融合了用户当前访问正反馈景点的相关特征;类似的,对应的用户负偏好向量则存储了负反馈景点的相关特征。另外,为了更好地刻画用户偏好特征,本发明使用用户访问景点的特征向量以及该景点对应的各个属性值特征向量构成。具体地,用户偏好记忆模块采用注意力机制动态学习景点特征向量与景点属性值向量之间的相似性,即权重值。然后再计算带权重值的当前景点及景点对应属性值特征向量作为用户的即时偏好特征表示。同时,将用户当前时刻的即时偏好特征向量与该用户的历史偏好特征向量拼接后,作为完整用户偏好特征向量输入至用户正/负偏好神经网络模型中进行训练。最后,记忆模块将用户即时偏好特征向量更新至用户对应的历史偏好特征向量中。

由于用户正偏好特征矩阵与用户负偏好特征矩阵的生产方法的区别仅在于输入的特征向量数据不同。因此,下面仅以用户正偏好学习为例,详细说明用户偏好记忆模块构建用户正偏好特征矩阵的方法流程,即构建用户即时正偏好特征矩阵ui+和用户历史正偏好特征矩阵uh+的流程。该流程如图5所示,具体步骤包括:

步骤1、生成初始用户偏好特征矩阵。在外部存储中按照用户id为存储索引,为系统全部的n个用户开辟即时正偏好特征矩阵ui+和历史偏好特征矩阵uh+。两个矩阵为n行*d列存储空间,矩阵每行对应一个用户的d维偏好特征向量。每个用户的偏好特征向量初始化为0。

步骤2、学习用户即时正偏好特征向量。为了更好的利用用户访问的景点属性值来刻画用户的偏好特征,用户偏好记忆模块采用注意力机制来动态学习景点向量与对应的景点属性值向量权重值,进而构建用户当前t时刻的即时偏好特征向量注意力机制由以下公式定义:

其中为pt用户u在当前t时刻访问的景点,为景点pt具有的所有l个景点属性值特征向量ai集合;αi为景点pt的特征向量pt与其拥有的属性值特征向量的相似度权重值,该权重的计算方法由以下公式计算:

其中softmax()为归一化多分类函数,s(x,y)为向量相似度评分函数。在本实施例中,该评分函数s实际返回两个输入向量的点积运算结果,由公式5定义。其中景点属性值与属性类型向量输入前要作相减操作,即向量相减运算ai-ri,原因是在景点知识图谱特征学习时,transe模型的训练目标为使每个三元组中景点h、属性类型r和属性值t的三个向量在特征空间中满足空间距离关系h+r≈t,也即h≈t-r。因此,在计算景点特征向量pt与景点属性值特征向量ai的相似度时,要先计算景点属性值特征向量ai与对应属性关系向量ri的向量差值。

所以用户u在当前t时刻的即时正偏好特征向量由以下公式定义:

由以上公式可知,用户的即时正偏好特征向量由当前访问的景点特征向量pt累加上该景点的带权重景点属性值特征向量构成。公式(6)中运算符+号为向量元素加运算操作。该方法能够确保用户偏好既包含用户访问景点的语义特征,也包含景点在知识图谱中相关的景点属性值的语义特征。

步骤3、更新用户历史正偏好特征向量。在计算好当前用户的即时正偏好特征向量后,用户偏好记忆模块需要将更新到该用户对应的历史正偏好特征向量中。该特征向量具体计算由以下公式定义:

上式中向量存储了用户u在前一个时刻t-1所对应的历史正偏好特征。公式(7)保证了用户当前t时刻的历史正偏好特征向量由用户各个时刻的即时正偏好特征依次更新得到。公式(7)中运算符+号为向量元素加运算操作。

步骤4、构建用户完整偏好特征向量。随后,用户偏好记忆模块将用户的历史和即时正偏好特征向量拼接后构建得到用户u的完整正偏好特征向量该特征向量由下式定义:

公式(8)中符号⊕为向量拼接操作,即将两个d维向量收尾拼接为一个2d维的向量。随后,向量将作为用户特征数据再与对应的景点特征向量pt一并输入到用户偏好神经网络模型,用于该模型的训练。

为了更好地刻画用户的偏好特征,本发明分别构建用户正/负偏好两个神经网络模型学习用户与评价景点的高阶交互特征。两个模型分别使用用户的正反馈景点列表和负反馈景点列表作为输入数据。正偏好模型用于学习各用户对景点的正偏好(喜爱)特征,负偏好模型用于学习各用户对景点的负偏好(讨厌)特征。由于两个神经网络模型的结构和训练方法相同,因此下面仅描述正偏好神经网络模型的训练流程,如图6所示,具体包括:

步骤1、读取某用户对应的正反馈景点列表,构建模型的输入数据。模型的训练数据分为正例和负例训练数据两种。例如,用户u的正反馈景点列表包括:则一个正例训练数据由该用户和一个正反馈景点数据对构成,即表示为负例则从用户u未访问过的景点集合中通过随机采样方式构成,表示为为了简化模型训练复杂度,每个输入正例数据只搭配四个负例。同时,为了保证模型有效收敛,本实例采用小批次随机梯度下降的方法训练模型,每个批次包含128个训练数据,即每次向模型输入128组用户-景点对数据。

步骤2、根据输入数据查找用户和景点特征向量,构建模型输入向量数据。例如输入正例训练数据时,根据当前输入的用户-景点数据对模型从记忆模块中查找对应的用户正偏好特征向量和景点特征向量同时,根据公式(9)将两个向量进行拼接,得到模型的初始输入向量z0。

步骤3、将特征向量输入多层前馈神经网络,学习用户对景点的深层正偏好特征。模型多层前馈神经网络由线性隐层和非线性激活函数构成。每层神经网络的输出向量作为下一层网络的输入向量,这个结构保证了每层神经网络逐步拟合用户对景点的偏好特征。模型的计算公式如下:

其中,zl表示的是第l层的隐藏层输出的向量,w和b分别表示隐藏层中的权重矩阵和偏置向量,f(*)是一个非线性的激活函数,例如sigmoid,tanh或者relu;本实例选择relu作为激活函数,因为其实验性能最好。

本实例采用的多层前馈神经网络的层数是3层。因为层数l设置太小,不利于模型学习用户-景点交互的深层语义特征;而如果层数设置太大,则会增加模型计算复杂度,且容易造成模型过拟合,其泛化能力受限。其中第一层隐层的权重矩阵w0的维度为300行*200列,即将输入特征向量由300维变换为200维特征向量,第二层隐层的权重矩阵w1的维度为200行*100列,即将输入特征向量由200维变换为100维特征向量;第三层隐层的权重矩阵w2的维度为100行*100列。

步骤4、利用神经网络分类器预测用户对景点的访问概率。最后一层前馈神经网络输出后,模型通过一个全连接层,预测出用户对景点的访问概率,计算公式如下:

其中,σ(*)是sigmoid函数,它的定义为:

是表示的是用户对景点的预测值,这个分值被sigmoid函数归一化在0到1之内,值越高,代表用户越偏好该景点,而这样处理是为了在后面计算损失函数时能与用户-景点对的标签值比较,以便优化模型的训练。

步骤5、利用反向传播算法,优化模型中权重参数以及用户记忆模块中的对应用户、景点特征向量。为了能够让模型有效逼近训练数据的最优解,本发明采用对数交叉熵损失函数来优化模型,目标函数定义如下:

其中由模型的公式(12)得到,y是用户-景点对的景点标签值,0代表该景点为负例(用户未访问过),1代表该景点为正例(用户访问过)。损失函数主要目的是计算用户对景点的预测概率与训练数据中景点的标签值的差值。该差值越小,说明模型的预测的结果越好。而模型的训练过程就是通过使用随机梯度下降方法,依次调整神经网络中各层中的权重矩阵和偏置向量以及对应的用户及景点特征向量。优化过程使损失函数值逐渐变小,最终使损失函数收敛稳定。本实施例中,随机梯度下降算法的参数更新学习率设置为0.001。

以上为用户正偏好神经网络模型的训练过程,通过将用户的正反馈景点列表数据输入到该模型,能够学习用户对景点的正偏好特征,即用户真正喜爱的景点特征。而使用相同的模型结构和用户的负反馈景点列表,本方法构建的用户负偏好神经网络模型能够学习用户对景点的负偏好特征,即用户讨厌的景点特征。

图7为兴趣点推荐列表生成流程图。

根据训练完后的两个模型,通过正偏好神经网络模型预测得到用户喜欢的候选景点列表,然后再通过负偏好神经网络模型来进一步优化候选推荐景点列表,以此提高景点推荐的精确性。景点推荐产生具体流程如图7所示:

步骤1、使用每个用户与该用户未访问过的所有景点对应的用户-景点对,作为正偏好神经网络模型的输入,通过模型计算出用户对每个景点的访问概率,然后选出排名前k的景点作为候选;

步骤2、将步骤1得到的k个候选景点及该用户作为负偏好神经网络的输入,通过该模型计算出该用户对k个景点排序。由于负偏好模型刻画了用户的隐式负偏好特征,因此该模型给出的排名越高,代表用户对该景点越不喜欢。因此,此时对k个景点排名实际上找出了其中用户相对不喜爱的景点排名。

步骤3、利用步骤2产生的景点排序优化步骤1产生的k个景点候选推荐列表。以下假设候选景点数k为10,说明具体推荐列表优化过程。利用正偏好神经网络计算得到用户没有访问过的景点的访问概率,按照预测概率值将排序前10的景点作为推荐备选景点;再利用负偏好神经网络计算该用户对这10个景点的访问概率,根据预测概率对这10个景点进行降序排序。负偏好排序结果中排名前5的景点判断为用户相对不喜欢的5个景点,将这5个景点从正偏好排序的10个景点中删除,剩下5个景点为本方法推荐的最终景点列表。

上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1