李涛 黎路 符丁
摘要:由于大规模动态数据集在推荐时难以兼顾推荐准确度的问题,该文在充分考虑用户所处上下文情景因素,提出一种基于上下文的协同过滤推荐技术,以提高用户偏好的预测准确度。实验表明,该技术能有效提高推荐质量和效率。
关键词:协同过滤;推荐准确度;时间上下文
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)27-0174-02
Abstract: Due to large scale dynamic data set between recommendation accuracy problem when recommended, in this paper, give full consideration to the user in a context situational factors, proposes a collaborative filtering recommendation technology based on the context, in order to improve the prediction accuracy of user preference. Experiments show that the technology can effectively improve the recommendation quality and efficiency.
Key words: Collaborative Filtering(CF); recommendation accuracy; time context
隨着电子商务网站的发展,让用户从纷繁复杂的物品(产品和服务)中做出最恰当的选择显得非常困难,于是推荐系统应运而生。推荐系统根据用户的兴趣、行为、情景等信息,建立用户的兴趣模型为用户提供个性化的服务,其核心技术是推荐算法。但大多数已有的推荐算法只是关注把最相关的物品推荐给用户,却忽略了用户所处的上下文情景信息,如用户访问系统的时间、地理位置、用户的状态和职业等。这些信息对于提高推荐系统的推荐准确度是非常必要的。本文在协同过滤推荐的基础上,提出了基于时间上下文推荐算法。
1 协同过滤推荐
协同过滤被认为是推荐系统所采用的最为成功的技术之一[1]。其基本思想是利用已有用户群过去的行为或意见预测当前用户最可能喜欢哪些物品或对哪些物品感兴趣。协同过滤主要分为基于物品的协同过滤和基于用户的协同过滤 [2]两种。
基于用户的协同过滤算法是找到与目标用户兴趣相似的用户群,找到这个群中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户。基于物品的协同过滤算法是利用用户之前有过行为记录,然后根据物品的相似度和用户的历史行为,给目标用户推荐和之前物品类似的物品。协同过滤推荐主要是借鉴和目标用户相关人群的观点来进行推荐。
2基于上下文信息的推荐
由于传统的协同过滤推荐算法,只考虑了用户和物品这两种信息,并没有将它们放入某种情境中考虑,而情境信息对用户偏好有一定的影响。因此,在某些特殊的场景下给用户推荐信息,把上下文信息整合到推荐流程也是至关重要的。比如,工作日时,用户上午访问网站时可能会倾向于浏览时事新闻,晚上会浏览娱乐新闻和购物信息。
本文在基于用户协同过滤推荐算法的基础上加入了时间上下文信息。通过将时间上下文信息作为附加的数据整合到推荐流程里,来处理对用户的兴趣和偏好的建模和预测问题。对于计算用户偏好的评分函数R中不仅有用户和和物品这二维信息还加入了第三维信息——时间,评分函数R定义为:
R : User×Item ×Time—> Rating
其中,User和Item分别是用户和物品的取值域,Rating是一个评分的取值域,Time代表时间上下文信息。将时间上下文信息建模到推荐算法中,让推荐系统能够预测用户在某个特定时刻的兴趣。
在传统的协同过滤推荐算法中首先进行相似度的计算。利用余弦相似度公式计算用户间或者物品间的相似度。公式如2-13]。
[wuv=i∈N(u)?N(v)1|N(u)||N(v)|] (2-1)
如考虑时间这一上下文因素,对此公式作一点相应的改动,在公式中引入了和时间有关的衰减项[11+αtui-tvi],其中[tui]是用户u对物品i产生行为时间,[tvi]是用户v对物品i产生行为时间,[α]是时间衰减参数。该衰减项表示,如果用户u和用户v对物品i产生行为的时间越远,那么这两个用户的兴趣相似度就会越小[4]。公式如2-2。
[wuv=i∈N(u)?N(v)11+αtui-tvi|N(u)||N(v)|] (2-2)
在得到用户相似度之后要进行用户对物品的兴趣的预测,推荐公式如2-3。
3算法实现
算法实现主要有以下两步骤[5]:
1) 计算用户相似度矩阵
2) 预测用户u对i的兴趣,得到用户最感兴趣的信息推荐列表
与传统的基于用户的协同过滤算法不同之处,在计算用户相似度的时候加入了时间这个情景因素。
改进后相似度可以通过如下代码实现[6]:
def UserSimilarity(train):
item_users=dict()
for u, items in train.items():
for i, tui in items.items():
if i not in item_users:
item_users[i]=dict()
item_users[i][u]=tui
C=dict()
N=dict()
for i, users in item_users.items():
for u,tui in users.items():
N[u]+=1
for v,tvi in users.items():
if u==v:
continue
C[u][v]+=1/(1+alpha*abs(tui-tvi))
W=dict()
for u,related_users in C.items():
for v,cuv in related_users.items():
W[u][v]=cuv/math.sqrt(N(u)*N(v)
return W
预测用户u对i的兴趣,得到用户最感兴趣的信息推荐列表,算法可以通过如下代码实现 :
def Recommend(user,train,W):
rank=dict()
interacted_items=train[user]
for v,wuv in sorted(W[u].items,key=itemgetteer(1),reverse=True)[0:K]:
for i,tvi in train[v].items:
if i in interacted_items:
continue
rank[i]+=wuv
return rank
4 实验结果
为了验证改进后算法的性能进行了相关实验。实验使用的是Last.fm公开数据集,利用数据集中对1000多个用户的大约两千多万条听歌记录数据,对用户协同过滤算法和改进后基于上下文的算法,通过准确度、覆盖率、召回率三种指标进行评测。
经实验结果可以得出,相似用户数K和进行推荐的物品数量,对推荐的准确度和召回率是有很大影响的。通过K选取不同值,所计算的召回率、准确度、覆盖率由表1和表2所示。
两种算法的准确度对比如图1所示 。
由图1所示,基于时间上下文推荐算法在预测准确度方面有明显提高。
5 结束语
实验表明,基于上下文的算法在推荐精度和用户满意度明显优于传统的非情景感知的算法。因此,在推荐系统里,上下文情景信息整合到推荐算法中的广度和深度,毫无疑问会影响消费者偏好的预测的准确度。
参考文献:
[1] Anand S,Mobasher B.Contextual recommendation. WebMine,LANI,4737,2007,142-160.
[2] 曾春,邢春晓,周立柱. 个性化服务技术综述[J].软件学报, 2002,13(10):1952-1961.
[3] 陈婷. 基于上下文感知的个性化信息服务系统的研究与设计[D].北京:北京邮电大学.2013
[4] 赵亮湖,乃静,张守志.个性化推荐算法设计[J].计算机研究与发展,2002,39(8):986-991.
[5] 吳湖,王永吉,王哲,等.两阶段联合聚类协同过滤算法[J].软件学报,2010,21(5):1042-1054.
[6] 项亮.推荐系统实践 [M].人民邮电出版社,2012,6:132-133.