一种改进的协同过滤推荐算法

时间:2022-08-04 06:23:31

一种改进的协同过滤推荐算法

摘 要:针对传统推荐算法中忽略用户兴趣随时间推移而转移和热门项目对刻画用户相似度的影响两个问题,介绍了一种改进的基于用户的协同过滤算法。通过以MovieLens数据集为分析与示例对象,给出了用户相似度、惩罚系数、时间衰减因子与评分预测函数的具体计算方法,对引入时间因子与惩罚系数的协同过滤算法进行了说明,并进行了算法步骤设计。

关键词:协同过滤算法;时间因子;惩罚系数

中图分类号:F06 文献标志码:A 文章编号:1673-291X(2016)23-0006-02

引言

推荐算法可以有效地对用户提出个性化推荐,以更好服务客户。主要的推荐技术有基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、组合推荐等。

1994年GroupLens提出了基于用户的协同过滤算法,而后Amazon于2000年提出了基于物品的协同过滤算法,二者构成了当代协同过滤算法的基础。传统的协同过滤算法主要集中于分析项目及用户的特征,从中归纳用户兴趣,借此向其推荐可能感兴趣的项目。然而,用户消费的环境(如时间、地点、心情等)也会对用户的消费行为造成影响,这些影响很难单纯从用户和项目的特征中寻得,而往往集中于消费行为信息中。此外,用户的兴趣与爱好很可能随时间推移而发生变化,也经常存在从众心理。若将这些因素考虑在推荐算法当中,就可以很好地提升推荐准确度。

一、算法描述

基于用户的协同过滤算法的核心是找到与目标用户兴趣相近的用户群体,基于此用户集的消费行为和项目评分,计算目标用户对某一相似群体感兴趣但目标用户没有购买过的项目的预估评分,再按评分高低排序得到推荐项目集。本算法在此基础上,引入了时间因子与惩罚机制,旨在更加精确刻画用户最近兴趣并降低热门项目对用户相似度的影响。

本文在对算法进行阐释时使用了由GroupLens Research Project提供的MovieLens数据集。数据集记录了7个月间943个用户对1682个电影的10万余个评分。评分数据中包含了用户编号,电影编号,评分(1―5分,整数)和评分时间戳。数据集中还提供了对应的电影数据,包含了电影编号,电影名称,上映时间及电影的分类信息(共19种分类)。其中,同一部电影可能拥有多个分类,即某部影片可能既是音乐剧,又是动画片,同时还是部喜剧。

1.用户相似度

认为同目标用户消费过相同项目的用户便是与目标用户兴趣相似的用户,而所消费的共同项目数量越多、对项目的评分越类似,相似度越大。然而,值得注意的是,有一些用户倾向于给出更高的评分,而另一些用户给分则偏低。在数据集中,用户编号为181的用户在所观看的435所电影中,给了297部电影1分的评价,平均评分1.4977分;而编号373的用户给341部电影的平均评分为3.5322分,其中仅有39部电影被评为1分。

因此,评分的相对高低比绝对高低更能表示用户对某一项目的偏好程度。常用的衡量用户间的相似度的是Pearson相关相似性,通过用户对某一项目的评分和用户的平均给分之差来代表用户对该项目的评价。Sab代表用户a与用户b所消费过的项目的交集,rai代表用户a对项目i的评分,ra表示用户a的平均评分。则有

2.惩罚系数

现实中存在一些可能并非符合用户以往消费习惯,但是出于从众心理等各类因素,用户也消费了的项目。很显然,这些热门项目的消费行为会对刻画用户兴趣和相似度有一定消极影响,而共同消费了非热门项目更能说明用户之间具有相似性。

使用编号为823的用户进行实例说明。通过对该用户的观影记录进行分析,可知该用户尤其偏爱剧情片与喜剧片,这两类电影在他所观看的185部影片中占据了绝大部分(分别为68部和65部)。然而,该用户只观看过一部西部片,并给出了5分的满分评价。数据集中这部编号为97的影片共有175条评分记录,即大约每五名用户中就有一人对该电影进行评分。实际上,这部影片上映后引起了极大的轰动,并最终摘得七项奥斯卡奖项,是一部具有较高流行度的热门影片。同时,用户还观看了一部编号为1267的喜剧片并给出了4分评价,而在所有评分记录中,只有22个人观看过这部非热门影片。西部片并不符合823用户的一致观影偏好,但若使用经典协同过滤算法,则与编号为1267的喜剧片在描绘用户相似性时具有平等地位,甚至该部西部片由于评分更高,最终的刻画影响甚至会高于用户一直偏爱的喜剧片,这就会在对用户进行画像及推荐时造成一定偏差影响。

因此,引入惩罚系数p,用于消除流行度大的热门项目对相似性的偏差作用。消费某项目的用户数量越多,代表该项目流行度更大,因此在描绘相似度时权重应越小。用N(i)代表所有购买过项目i的用户集合,ni为该用户集合的用户数量,nc为总用户数量,则惩罚系数计算公式为:

3.时间衰减因子

用户对项目的喜好并非一成不变。随时间的推移,用户的价值观与审美观都可能有所调整。编号为506的用户在1997年9月至次年1月间共给出了228个评分记录。通过分析某月所观看的特定类型电影占该月观影总数,绘制对比图如图1所示。从中可以看出,用户的观影习惯会发生改变,如9月份所观看的影片中只有24%的电影是动作片,但1月份动作片已经占据了该用户观影数量的75%。而9月份时用户观看了8%的恐怖片,但是后4个月间只看过一部恐怖片。从而,相比于恐怖片,2月份时用户接受所推荐的动作片的可能性要更高。因此,对用户兴趣的追踪十分重要,用户最近的消费行为更能充分并准确地反映用户当前的兴趣与需求。

基于前文阐述,引入时间衰减函数 ,其中 ,表示当前时刻与用户a购买i行为发生时刻之差。即,离现在越远的消费行为所表示的用户兴趣程度越小,而越近的消费行为影响程度越大。本文中采用指数衰减函数,记 ,其中 为常数。时效性越强, 取值应越大。对应的改进后的Pearson系数为:

4.评分预测函数

推荐算法作为向用户提供个性化服务的重要工具,其精确性的提升一直备受关注。本文针对应用广泛的基于用户的协同过滤算法,通过引入时间因子来赋予最近购买商品更大权重,以更好估计用户需求,且引入了惩罚系数,来降低热门物品的购买行为对用户兴趣刻画的偏差影响。但本算法仍存在一定不足之处,如主要依靠经验确定时间衰减函数中常数项的取值会引入人为偏差。在日后研究中可引入机器学习,提升准确度。

上一篇:对小学《品德与生活》学生自主学习的反思 下一篇:让思维导图在物理教学中插上翅膀