一种融入用户好奇心机制的推荐方法与流程

文档序号:17723036发布日期:2019-05-22 02:18阅读:233来源:国知局
一种融入用户好奇心机制的推荐方法与流程

本发明涉及个性化推荐技术领域,具体涉及一种融入用户好奇心机制的推荐方法。



背景技术:

随着互联网的发展,互联网每时每刻都在产生大量的数据,而这些数据大多是杂乱无序的,用户很难直接从这些数据中提取出自己想要的信息,这个问题就是信息超载问题。这是一个全世界所关注的一个问题。经过了多年的研究,从这些信息中挖取重要信息的技术逐渐趋于成熟,其中最重要的一个技术就是个性化推荐技术。个性化推荐技术可以通过用户的兴趣、特点、历史纪录,向每个用户推荐用户感兴趣的信息。个性化推荐技术在各个领域之间都起着关键的作用,例如音乐推荐、电影推荐、商品推荐等等。

目前推荐技术中,应用最广泛的是协同过滤算法,特别是基于矩阵分解的协同过滤算法,这类算法一般可以推荐与用户历史记录相似度比较高的物品,以提高推荐的准确率,所以是一种基于准确率的算法。但是在实际应用场景中,如果给用户推荐过多与历史记录相近的物品,就会使用户产生抵触感。所以需要为不同用户提供更丰富、多样化的推荐。推荐多样化同时也意味着准确率的损失,这时候就需要在准确率和多样性两者之间权衡。

在心理学上,心理学家认为,好奇心是一个人的行为的驱动力,激起好奇心的刺激源有几种,包括冲突(conflict)、新颖度(novelty)、不确定性(uncertainty)等等。19世纪70年代,冯特(wundt)提出了刺激度和好奇心的关系,他发现,好奇心并不是随着刺激度的增长而线性增长的,而是有一个最优点,如果过了这个最优点,随着刺激度的增长,人类会产生焦虑,好奇心也随之降低;当小于最优点,随着刺激度的降低,人类会觉得无聊,好奇心也会下降。所以冯特用一种u形曲线来描述刺激度与好奇心水平的关系,这就称为冯特曲线。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供一种融入用户好奇心机制的推荐方法。这种方法结合社交好奇心和个人好奇心,使用心理学上的冲突(conflict)以及新颖度(novelty),并且使用冯特曲线,对每一个用户的好奇心进行建模,以使得推荐提高多样性。

本发明通过计算用户历史物品的刺激度;对历史刺激度进行统计,曲线拟合;使用矩阵分解的方法,找出相关度较高的m个物品,形成基于准确率的推荐列表;对m个物品进行刺激度计算,并且通过曲线计算好奇心程度,并且进行排序,得到基于好奇心的推荐列表。最后结合基于准确率的列表以及基于好奇心的推荐列表,使用波达计数法对m个物品进行重排序,最后为用户推荐排名最高的top-n个物品。具体技术方案如下。

一种融入用户好奇心机制的推荐方法,包括如下步骤:

步骤一:在没有好友关系的用户数据中,通过k最近邻算法,找到隐式好友,在每个用户的历史数据中,对隐式或者显式的好友,使用皮尔逊相关系数计算用户和好友间的相似度,把每个用户的好友按照相似度从大到小排序。

步骤二:在历史数据集中,对于用户u浏览过的物品i,计算其冲突度;根据用户u与好友的相似度排名列表中,从头找出浏览过物品i并且对物品i进行过评分的用户,分别找出小于或等于k个打分高于平均分的好友以及小于或等于k个打分低于平均分的好友,再利用下面的冲突度公式计算物品i对用户u的冲突度

其中指物品i对用户u的冲突度,分别表示对物品i给出正面评价(评分大于或等于平均分)和反面评价(评分小于或者等于平均分)的用户u的好友的集合,集合数量不大于k个用户,按照相似度从小到大排序。rv,i是用户v对物品i的打分,pou,i和neu,i分别指用户u的社交关系(隐式好友或者显式好友)对于物品i的总的正面和反面评价,通过对好友打分和平均分的差的加权平均来计算,其中pccu,v,pccu,w分别指用户u和用户v以及用户w的皮尔逊相关系数,表示相似度;是最高评分的平均分,一般可以取为总分的一半,例如,如果评分最高评分为5分,则rw,i指用户w对物品i的评分。

步骤三:对于用户u历史数据的物品i,按照时间轴,选取用户在接触物品i前所接触的ρ个物品,然后计算物品i和前ρ个物品的不相似度,不相似度通过皮尔逊相关系数转化而成,物品i与物品j的不相似度公式所示:

其中,pcci,j指物品i与物品j的皮尔逊相关系数。

新颖度的计算公式如下所示:

其中e-μz属于衰减系数,用于模拟人的记忆衰减,越长远的物品,对新颖度的影响越小;通过调节μ的值把新颖度控制在0到1的范围里,新颖度是通过对目标物品和ρ个物品的不相似度的加权求和进行计算。

步骤四:通过计算每一个用户u在历史数据集中的每一个物品i的新颖度和冲突度的加权求和对每个用户u的物品i的刺激度siu,i进行计算,计算公式如下:

最终得到历史数据集中每个物品i对用户u的历史刺激度列表,α是权值,用于调整新颖度和冲突度对刺激度的影响。

步骤五:对每个用户的冯特曲线进行训练方法如下:对于每个用户的每一个历史物品,根据每一个历史物品新颖度和冲突度,计算每一个历史物品刺激度siu,i,得到每一个用户对每个物品的历史纪录的刺激度列表,然后进行统计,统计方式如下:把0-1分成50个盒子,给每一个盒子加上编号0,1,2,…,49,把用户浏览过的物品分到50个盒子里面。计算每一个盒子里面的物品的个数,计算公式如下:

其中是用户u的刺激度列表,count(itvx)指放在第x个盒子的物品个数,x是盒子编号。然后计算每一个盒子中的物品个数占所有物品的比例,即用每个盒子中的物品个数除以所有盒子中的物品总数:

得到每个盒子所对应的频率cu(si),并且每个用户都得到一组映射si->cu(si),其中si为刺激度,等于盒子的编号乘以0.02,对应的cu(si)是盒子中的物品的占总数的比例。

冯特曲线的函数定义如下面所示,其中是所需要学习的参数,θr和θp分别设定为20、-20。

由每个用户得到一个映射,把每个盒子物品的频率当作是好奇心度,而每个盒子的编号乘以0.02为刺激度,从而得到刺激度到好奇心度的一个目标映射,因此目标函数如下定义:

在给定某个刺激度siu,i的情况下,表示预测的好奇心程度,cu(siu,i)表示真实的好奇心程度,目标是最小化lossu,通过梯度下降最小化目标函数,以得到每个用户的冯特曲线即好奇心模型。

步骤六:使用现有的基于准确率的方法,例如if-mf(基于隐式反馈的矩阵分解,出自论文collaborativefilteringforimplicitfeedbackdatasets)得到用户u对所有没有接触过的物品i的相关度,相关度的具体过程为:首先,把用户的历史训练数据作为输入,得到评分矩阵r,其中,r的大小为m*n,r的第u行第i列为用户u对物品i的评分rui,其余设为0;pui表示用户u对物品i的偏好,定义如下面pui所示,cui用于表示用户u对物品i的偏好程度,α是上升率,用于调整cui随rui变化的变化速度,ε用于调整cui的大小,分数rui越高,则用户u对物品i的偏好程度越高;损失函数如loss公式所示,其中xu为用户u的隐空间,yi为物品i的隐空间,均为向量,也是训练过程所需要学习的对象;相关度模型的训练过程就是使用交替最小二乘法最小化loss;最后,物品i对用户u的相关度relui等于用户u的隐空间xu与物品i的隐空间yi的内积,其中λ属于正则化参数,用于防止过拟合,表示列向量xu的转置。

cui=1+αlog(1+ru,i/ε)

步骤七:把物品按照相关度从大到小的排序,获得相关度最高的m个物品,得到用户u的基于准确率的推荐列表然后对这m个物品计算其刺激度,通过训练后的冯特曲线进行映射,得到用户对这m个物品的好奇心程度;通过好奇心对物品进行从大到小的排序,得到用户u的基于好奇心程度的推荐列表对这两个推荐列表使用波达计数法计数进行排序优化,得到重排序的推荐列表l,最后在推荐列表l中选取分数最高的top-n个物品作为用户的推荐列表,其中n<m。

进一步的,所述每个用户数据都可以用(u,i,r,t)元组组成,即用户u在t时刻为物品i打分r,u和i分别指用户和物品的集合。|u|=m,|i|=n分别表示数据集中用户和物品的数量。

进一步的,步骤六中得到相关度的具体过程为:通过用现有的基于准确率的方法,如if-mf(基于隐式反馈的矩阵分解)等,使用用户历史数据进行训练。首先,把用户的历史训练数据作为输入,得到评分矩阵r,其中,r的大小为m*n,r的第u行第i列为用户u对物品i的评分rui,其余设为0。pui表示用户u对物品i的偏好,定义如下面pui所示,cui用于表示用户u对物品i的偏好程度,α是上升率,用于调整cui随rui变化的变化速度,,ε用于调整cui的大小,分数rui越高,则用户u对物品i的偏好程度越高。损失函数如loss公式所示,其中xu为用户u的隐空间,yi为物品i的隐空间,均为向量,训练过程所需要学习的对象。此模型的训练过程就是使用最小二乘法最小化loss。最后,物品i对用户u的相关度relui等于用户u的隐空间xu与物品i的隐空间yi的内积。

cui=1+αlog(1+ru,i/ε)

步骤七:基于步骤六计算用户u没接触过的物品的相关度,把物品按照相关度从大到小排序,获得相关度最高的m个物品,得到用户u的基于准确率的推荐列表然后利用每个用户的好奇心模型对这m个物品计算其刺激度,通过训练后的冯特曲线进行映射,得到用户对这m个物品的好奇心程度。通过好奇心程度对物品进行从大到小的排序,得到用户u的基于好奇心程度的推荐列表对这两个推荐列表使用波达计数法计数进行结合重排序即排序优化,得到重排序的推荐列表l,最后在推荐列表l中选取分数最高的top-n个物品作为用户的推荐列表,其中n<m。所述波达计数法的具体步骤如下:

分别对推荐列表中的m个物品进行评分,分数由其在列表中的位置决定,公式如下:

分别表示物品i根据其在中位置所获得的评分。

其中t为候选物品的数量,等于上述的m。是指物品i分别在列表中的位置。然后通过对这两个分数进行加权求和,得到物品i的分数,最后进行排序,选取分数最高的topn个物品进行推荐,公式如下:

f_scoreu,i是物品i对用户u的最后评分,β是权值,通过调节β,以调节推荐列表对最终结果的影响,使结果在多样性和准确性之间进行权衡。

本发明相对于现有技术具有如下的优点及效果:

1、通过对每个用户的心理进行建模,结合了两种刺激度的度量,一种是与社交相关的冲突(conflict),另一种是与个人相关的新颖度(novelty),结合了社交和个人的好奇心刺激度。

2、采用了一个新的函数来拟合刺激源和好奇心程度的关系,使用梯度下降方法,因为数据量小,拟合速度比较快。

3、利用好奇心的理论进行推荐,结合准确率相关的推荐方法,使得准确率损失尽可能少的情况下,让推荐列表的多样性尽可能高,提供的推荐更个性化。

附图说明

图1是融入用户好奇心机制的推荐方法的框架图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

一种融入用户好奇心机制的推荐方法,如图1所示,包括如下步骤:

步骤一:在没有好友关系的用户数据中,通过k最近邻算法,找到隐式好友,在每个用户的历史数据中,对隐式或者显式的好友,使用皮尔逊相关系数计算用户和好友间的相似度,把每个用户的好友按照相似度从大到小排序。

每个用户数据都可以用(u,i,r,t)元组组成,即用户u在t时刻为物品i打分r,u和i分别指用户和物品的集合。|u|=m,|i|=n分别表示数据集中用户和物品的数量。

步骤二:在历史数据集中,对于用户u的每一个物品i,计算其冲突;根据用户u与好友的相似度排名从头找出浏览过目标物品并且进行过打分的用户,分别找出小于或等于k个打分高于平均分的好友以及小于或等于k个打分低于平均分的好友,再利用下面的冲突度公式计算物品i对用户u的冲突度:

其中指用户u对物品i的冲突度,分别表示给出正面评价(评分大于或等于平均值)和反面评价(评分小于平均值)的好友的集合,集合数量不大于k个用户,按照相似度从小到大排序。rv,i是用户v对物品i的打分,pou,i和neu,i分别指用户u的社交关系对于物品i的正面和反面评价,通过对好友打分和平均分的差的加权平均来计算其中pccu,v,pccu,w分别指用户u和用户v以及用户w的皮尔逊相关系数,表示相似度;是指最高评分的平均分,rw,i指用户w对物品i的评分。

步骤三:对于用户u历史数据的某一个物品i,按照时间轴,选取用户在接触该物品前所接触的ρ个物品,然后计算当前物品和前ρ个物品的不相似度,不相似度通过皮尔逊相关系数转化而成,如下公式所示:

新颖度的计算公式如下所示:

其中e-μz属于衰减系数,用于模拟人的记忆衰减,越长远的物品,对新颖度的影响越小。可以通过调节μ的值把新颖度控制在0到1的范围里。新颖度是通过对目标物品和ρ个物品的不相似度的加权求和进行计算。

步骤四:通过新颖度和冲突度的加权求和对每个用户u的物品i的刺激度进行计算,计算公式如下:

最终,对用户u的历史训练数据中浏览过的每个物品,计算其刺激度,得到每个用户u的历史刺激度列表.

步骤五:对每个用户的冯特曲线进行训练,方法如下,于每个用户的每一个历史物品,计算根据上述计算步骤,计算其刺激度siu,i,得到每一个用户对每个物品的历史纪录的刺激度列表,然后进行统计,统计方法如下:把0-1分成50份,给每一份编上编号0,1,2,…,49,把刺激度按照0.02的间隔,分到50个盒子里面并对盒子进行编号。计算每一个盒子里面的物品的个数,计算公式如下:

其中是用户u的刺激度列表,count(itvx)指放在第x个盒子的物品个数,x是编号。然后计算每一个盒子中的物品个数占所有物品个数的比例,即用每个盒子中的物品个数除以所有盒子中的物品总数:

得到每个盒子所对应的频率cu(si),并且每个用户都得到一组映射si->cu(si),其中si为刺激度,等于盒子的编号乘以0.02,对应的cu(si)是盒子中的物品的占总数的比例。

冯特曲线的函数定义如下面所示,其中是所需要学习的参数,θr和θp可以分别直接设定为20以及-20。

由上面可以得到每个用户得到一个映射,把每个盒子物品的频率当作是好奇心度,而每个盒子的编号乘以0.02为刺激度,可以得到刺激度到好奇心度的一个目标映射,因此目标函数如下定义:

在给定某个刺激度si的情况下,表示预测的好奇心程度,cu(siu,i)表示真实的好奇心度,目标是最小化lossu,通过梯度下降方法最小化目标函数,以得到每个用户的冯特曲线。

步骤一至五对应图1中的刺激源引起的好奇心模型训练步骤,所使用的数据是数据层的时序训练数据,即用户的历史数据。其中,curu,i是物品i对用户u的好奇心程度,由刺激度siu,i通过冯特曲线映射获得,即

步骤六:通过基于准确率的训练后的模型,获得相关度最高的m个物品,训练步骤如下:首先,把用户的历史训练数据作为输入,得到评分矩阵r,其中,r的大小为m*n,r的第u行第i列为用户u对物品i的评分rui,其余设为0。pui表示用户u对物品i的偏好,定义如下面pui所示,cui用于表示用户u对物品i的偏好程度,α是上升率,用于调整cui随rui变化的变化速度,,ε用于调整cui的大小,分数rui越高,则用户u对物品i的偏好程度越高。损失函数如loss公式所示,其中xu为用户u的隐空间,yi为物品i的隐空间,均为向量,训练过程所需要优化的对象。此模型的训练过程就是使用最小二乘法最小化loss。最后,物品i对用户u的相关度relui等于用户u的隐空间xu与物品i的隐空间yi的内积。

cui=1+αlog(1+ru,i/ε)

步骤七:根据用户没有接触过的物品的相关度,把物品按照相关度从大到小的排序,取出用户u的相关度最高的m个物品。得到用户u的基于准确率的推荐列表然后对这m个物品计算其刺激度,通过训练后的冯特曲线进行映射,得到用户对这m个物品的好奇心程度。通过好奇心程度对物品进行从大到小的排序,得到用户u的基于好奇心程度的推荐列表采用波达计数法,把结合重排序,波达计数法的具体步骤如下描述:

分别对推荐列表中的m个物品进行评分,分数由其在列表中的位置决定,公式如下:

分别表示物品i根据其在中位置所获得的评分。

其中t为候选物品的数量,等于上述的m。是指物品i分别在列表中的位置。然后通过对这两个分数进行加权求和,得到物品i的分数,最后进行排序,选取分数最高的topn个物品进行推荐,公式如下:

f_scoreu,i是物品i对用户u的最后评分,β是权值,通过调节β,以调节推荐列表对最终结果的影响。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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