一种基于深度学习的面向隐式反馈推荐方法与流程

文档序号:16669642发布日期:2019-01-18 23:29阅读:1139来源:国知局
一种基于深度学习的面向隐式反馈推荐方法与流程

本方法涉及推荐算法,特别是一种基于深度学习的面向隐式反馈的推荐算法。



背景技术:

随着社会的发展和时代的进步,信息技术和互联网技术进入高速发展的模式,社会从信息匮乏时代进入到信息过载时代。在信息过载情况下,无论是信息的发布者或者信息的接受者都面临着很大的挑战。信息的发布者所面临的问题是:如何让发布的多样化信息有针对性的被信息的接受者接收并关注;信息的接收者所面临的问题是:如何从海量的信息中找到自己喜欢的信息。为了帮助人们有效快速的筛选信息,推荐算法应运而生。推荐算法被大量的使用在服务行业、电子商务、社交网络、缓存内容选择上。推荐算法通过对用户爱好和行为的分析和建模,将用户有可能感兴趣的项目推荐给用户。推荐算法的效果和收集到的用户信息和所使用的推荐算法的好坏有直接的关系。用户的评论、评分、以及用户的相关信息等是用户主动提供的,这些信息非常直观的显示出用户的个人喜好,这类信息被称为显式反馈;对于用户被动提供的信息,如用户的点击、下载、观看、购买历史等一系列不能直接表达用户个人喜好的信息,则被称为隐式反馈。当前,绝大多数的推荐算法仅仅针对显式反馈数据,而忽略了隐式反馈数据,但隐式反馈数据总量远远多于显示反馈的,有的场景下甚至只有隐式反馈数据(如航天,通信等),由此可见,针对隐式反馈的推荐算法是十分必要的。

对于隐式反馈数据缺少负反馈数据和信息维度较少等问题,现今针对隐式反馈的方法可分为以下3种:(1)基于单一类别的协同过滤的推荐算法,此算法将只存在正样本的协同过滤问题归纳为单一类型的协同过滤问题(one-classcollaborativefiltering,occf),算法将所有的缺失数据视为负样本数据(allmissingasnegative,aman),或是将所有的缺失数据视为未知数据(allmissingasuknown,amau),对于每个样本数据基于不同的权重并将缺失的数据一并纳入权重的模型进行训练,或是对缺失数据的负样本进行分布假设,是此类算法的通用解决方法。(2)引入外部信息辅助的隐式反馈推荐算法。仅仅依靠隐式反馈推荐效果不理想的根本原因在于:缺少对用户喜好的直接判断。因此出现了引入外部信息辅助的隐式反馈推荐算法。此类方法分为以下基本3类:引入上下文的隐式反馈推荐算法、引入跨域知识的隐式反馈推荐算法、引入社交信息的隐式反馈推荐算法。引入上下文的隐式反馈推荐算法是充分发掘用户所处的上下文信息,如时间,地点,状态,心情等,这些上下文信息对用户对项目的选择有很大的关系,将上下文信息作为辅助信息引入会提高隐式反馈推荐的效果;引入跨域知识的隐式反馈推荐算法是将迁移学习的一种可行方法,将别的领域中学习的知识来辅助推荐系统中的学习任务,代表算法是lfm模型中其他领域所学到的潜在因子可以帮助目标领域的特征算法的学习;引入社交信息的隐式反馈推荐算法是辅助于用户的准确、全面的用户信息,如好友信息、区域信息,社区信息等,挖掘用户所感兴趣的项目。(3)基于排序的推荐算法。现今基于排序的推荐算法正在逐步的成为推荐算法中的热点。排序推荐算法是通过现有的数据进行挖掘和处理并按照相应的规则形成一个排序的模型,之后的用户对象可根据此模型进行排序。主要分为以下2类:逐点排序和逐队排序。

上述三种隐式反馈的方法存在以下问题:

(1)加入权重的假设不稳定,会导致推荐的结果出现偏差;计算所有样本的时间复杂度较高,所花费的时间成本较高;由于缺失的部分信息无法被利用,有时会导致结果随机出现等问题。

(2)用户和项目交互的上下文信息数据难以获得和挖掘,并缺乏多样化的辅助信息使得推荐算法的结果较差。知识的迁移范围跨度较大,会对推荐的结果产生较大的偏差。

(3)计算样本的时间复杂度较高,忽略了样本与样本之间、用户与用户之间的关系,有时模型计算需要大量的时间和硬件进行计算。



技术实现要素:

为了解决上述加入权重的假设不稳定,会导致推荐的结果出现偏差,用户和项目交互的上下文信息数据难以获得和挖掘,计算样本的时间复杂度较高的问题,本发明提出了以下技术方案:

(1)选择隐式数据作为训练数据,如果所用数据集为显式反馈的数据集,则需要进行数据的预处理将显式数据转换为隐式数据;并建立隐式数据相对应的用户-项目交互矩阵;

(2)根据用户-项目交互矩阵通过变分自动编码机的方式将用户和项目映射到同一个潜在空间中,得到用户的特征向量b和项目的特征向量c;

(3)将用户的特征向量b和项目的特征向量c进行向量的乘法操作,并储存运算完毕得到的新向量a;

(4)将用户的特征向量b和项目的特征向量c进行镶嵌组成新向量d,将d输入多层深度神经网络结构模型的输入层对多层深度神经网络结构模型参数进行训练,同时得到输入层的输出向量e,即目标向量;其中新向量d由c放在b的后面扩维得到;所述的深度神经网络由输入层,隐藏层,输出层三层组成,输入层采用变分自编码结构,隐藏层和输出层均采用多层感知机;

(5)将(3)中得到的用于表征数据线性特征的新向量a和(4)中得到的表征数据非线性特征的目标向量e进行镶嵌得到新向量f,将f输入隐藏层按照步骤4得到的模型参数继续训练,得到新的模型参数,同时得到隐藏层的输出向量;一般此深度神经网络进行20次迭代,也可以根据精度要求调整迭代次数,但最少不应该低于10次,最高不应高于200次。

(6)将(5)所得到的隐含层的输出输入输出层,得到输出层的最终预测结果;通过最小化最终预测分数和真实分数之间的差距来不断的训练此多层深度神经网络结构模型,获得该网络结构模型的最优参数,完成对该网络结构模型的参数训练;

(7)将需要预测的数据放入已经训练好的神经网络结构模型中,得到预测结果。

训练数据经过输入层将用户和项目抽象成二值化一元向量;再将输入层所得到的一元向量送入隐藏层即多层感知机中进行训练,用以发掘用户和项目中的潜在联系,本发明既提取了数据的线性特征,又提取了数据的非线性特征并将他们相融合,提取出的数据特征较为全面。最终输出层得到的是预测分数训练通过最小化和其目标值yui之间逐点损失进行。本方法将隐式反馈数据送入深度神经网络中,用非线性的方式提取数据特征,又使用一个线性的内核从数据中学习数据特征,再将两种方法学习到的数据特征相互融合,互相强化,可以更好的对用户-项目的交互矩阵进行分析,在短时间内可以得到较好的结果。

有益效果

本发明根据所收集的用户与项目的数据集建立深度学习模型,预测用户有可能感兴趣的项目列表,并给出前后排序。本方法无前期人为权重设置,使得推荐结果不会出现人为导致的偏差;由于是针对隐式推荐的方法,不需要其它维度的数据,需要的数据相对较好获得;由于本发明使用深度神经网络,与传统的推荐算法相比,所需的数据量少,较好的解决了冷启动问题,本方法简单易行,硬件要求低,时间消耗少。

附图说明

图1方法流程图

图2准确率变化曲线图

图3归一折扣累计利润变化曲线图

具体实施方式

(1)使用movienlens(1m)作为模型的训练集和测试集的来源,movienlens(1m)有6040个用户和3706个项目,此数据集包含100万个评分,每个用户至少有20个评分,此电影评分数据集被广泛的使用,用来推荐算法的效果。对其数据进行处理,用户对项目有评价的交互统一标记为1,用户对项目没有进行评价的交互统一标记为0,并舍弃除时间戳外其余属性数据,使其完全转换成隐式反馈数据集,并根据leave-one-out的原则,将每个用户最近的一次交互作为模型的测试集,其余数据作为模型的训练集。并建立用户-项目交互矩阵(user-itemmatrix)。

(2)将用户-项目交互矩阵(user-itemmatrix)中用户所对应的项目进行抽取,得到用户对应的项目列表(item-list),此列表为3706元的一维向量,并通过多项式变分自动编码机(variationalautoencoder)的方式,得到用户所对应的初始用户特征向量,此特征向量为1024元的一维向量,再将此特征向量通过一层全连接层的神经网络(mlp)进行一次维度压缩,使其变成用户特征向量(userlatentvector),记为向量b。将用户-项目交互矩阵(uesr-itemmatrix)中项目所对应的用户进行抽取,得到项目对应的用户列表(user-list),此列表为6040元的一维向量,并通过多项式变分自动编码机(variationalautoencoder)的方式,得到项目所对应的初始用户特征向量,此特征向量为1024元的一维向量,再将此特征向量通过一层全连接层(mlp)的神经网络进行一次维度压缩,使其变成项目特征向量(itemlatentvector),记为向量c。

(3)将(2)中所得到的用户特征向量(userlatentvector)既向量b,和项目特征向量(itemlatentvector)既向量c,进行向量的点乘,得到点乘之后向量,记为向量a。

(4)将用户特征向量b(itemlatentvector)和项目特征向量c(itemlatentvector)镶嵌得到一个128元的一维向量,记为向量d,作为本方法所采用的深度神经网络隐藏层-多层感知机(mlp)的输入,进行深度神经网络参数的训练。并得到目标向量e在此方法隐藏层中使用的深度神经网络-多层感知机(mlp)是一种塔式网络结构,底层最宽,每个后继层具有更少的神经元数量。网络共有4层,每层的的神经元数量分别为128、64、32、8。此神经网络的定义为:这其中w是感知机中的权重矩阵,b为神经网络的神经阀值,a为神经网络的激活函数,在此使用的是relu激活函数;z为此神经网络的训练结果,pu为用户最终特征向量,qi为项目最终特征向量,yui为此神经网络预测的分数;考虑到yui的可能取值具有二值性(0或1),选取此深度神经网络的优化函数为二类交叉熵损失函数(binarycross-entroyloss),使用随机下降法进行神经网络(sgd)的训练优化。

(5)将(3)中得到的向量a与(4)中所得到的向量e进行镶嵌得到一个72维的一元向量,得到一个72元的一维向量,记为向量f。将向量f放入一个一层的全连接的神经网络中进行训练,得到隐藏层的输出结果。

(6)将隐藏层的输出结果输入输出层中,得到模型预测分数,和真实的结果的分数做出对比,从而优化深度神经网络的参数,当迭代次数达到20次之后,深度神经网络趋于稳定,各项参数达到较为优异的效果。

(7)用(1)中选出的测试集测试深度神经网络,选用准确率precision和归一折扣累计利润(normalizeddiscountedcumulativegain)来测试本发明所述方法的效果。ntp是算法推荐的物品为用户喜欢的数量,nfp为算法推荐的物品为用户不喜欢的数量;

当测试的样本空间为20时,算法的效果如图2、图3所示。由图2图3可见,准确率和归一折扣累计利润只经过一次迭代就能得到相对平稳的效果,准确率稳定在0.7左右,归一折扣累计利润稳定在0.41左右,图2、3横轴代表迭代次数,对应迭代次数下面的数字分别代表对应迭代次数的准群率和归一化累计增益,且都是较为理想的结果。

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