基于电影系统的协同过滤算法的改进
2018-03-22刘佳玮
互联网的发展带来了科技智能化的普及,信息化的发展带来了数据量的庞大。文章以电影系统为模型对协同过滤算法进行了深入的研究。研究了不同场景下的多种的相似度的计算,页面停留时间进行了深层次的研究,并且对冷启动问题也進行了初步的改进,从而提高推荐系统的准确性。
【关键词】协同过滤 用户偏好 相似度 页面停留 冷启动 电影推荐
随着网络的不断发展,科技也变得越来越智能化。网上浏览的信息都将成为刻画人物形象特征的一部分。通过协同过滤算法 的研究,可以将每个用户和物品向量化和标签化,将潜在的用户或者物品推荐给具有相似偏好的用户。
1 协同过滤推荐算法简介
协同过滤算法是通过分析某一用户的偏好特征,在海量用户群体中寻找与指定用户偏好相似的用户,融合寻找到众多相似用户对某一信息的综合评价,从而来预测该用户对这一信息的喜好程度。该算法可细分为两种:一种为基于物品的协同过滤 ,一种为基于用户的协同过滤 。本文是以电影为模型的协同过滤算法研究。
1.1 基于用户的协同过滤算法
基于用户的协同过滤,对于电影推荐来说,即是根据用户对电影的评分,发现与当前用户喜好相似的其他用户,计算用户之间的相似度,从而基于用户之间的相似度进行电影的推荐。算法的主要步骤:
(1)收集用户偏好,即用户的观影历史。
(2)计算用户之间的相似度。
相似度算法有以下几种:
设N(u)为用户u喜欢的电影的集合,N(v)为用户v喜欢的电影的集合。是用户喜欢的相同电影。
其中,p(u,i)表示用户u对电影i的感兴趣程度,S(u,K)表示和用户u相似度最高的K个用户的集合,N(i)表示对电影i喜欢的用户集合,Wuv表示用户u和用户v的兴趣相似度, 表示用户v对电影i的兴趣。
1.2 基于物品的协同过滤算法
基于物品的协同过滤,对于电影推荐来说,即根据用户对不同电影的喜好评分进而计算电影之间的相似度,基于电影之间的相似度进行电影的推荐。算法的主要步骤:
(1)收集用户偏好,即用户的观影历史。
(2)计算物品之间的相似度,即计算电影之间的相似度。
相似度的计算:余弦相似度和Jaccard 公式(前文已提及)中N(u)代表的是偏爱电影u的用户的集合,N(v)代表的是偏爱电影v的用户的集合。是电影u和电影v都偏爱的用户量。
(3)根据物品的相似度和用户的历史行为给用户推荐物品,即根据电影的相似度和用户的观影历史给用户推荐电影。公式如下:
Puj代表了用户u对电影j的感兴趣程度,N(u)代表了用户u感兴趣的电影集合,S(i,K)是与电影i相似程度最高的K个电影集合(j是这个集合中的某一部电影),Wij代表了电影i和电影j之间的相似度,rui表示用户u对电影i的偏好特征。
2 推荐系统算法的改进与仿真
2.1 数据的采集和分析
从折线图1可以更加清晰地看出,如果根据均值来判断,这就意味着,一位典型用户会在大部分页面上停留接近4分钟。所以,平均值很难具有说服力的。但是可以确定的是,原始数据是没有问题的。通过观察,可以发现有均值>中位数,大概只有24秒左右。这不仅代表大多数时候页面停留时间,还说明了均值并不能反映典型用户的访问行为。
在实际应用当中,最值之间的差距更加明显,比如某个用户可能在打开这个页面之后离开电脑,很久才关闭浏览器或访问下一个页面,以致于能显著地拉高均值;比如有些用户可能在不停地刷新某个页面,这会导致有大量的记录会在0~5秒之间:这是一种典型的右偏分布。
首先,定义异常值的属性。根据经验设定一个阈值,比如30分钟(通用的会话过期时间),可删除原始数据中大于1800秒的数据,从而剩下数据的均值会大大减小。得到的数据虽然比以前可靠,但还是问题是,为什么要以30分钟为基准?从异常产生的原因及其的分布情况出发,不难发现数据中的异常值基本为最值及接近最值的数字,那么下一步需要考虑如何排除异常。
如果把单个用户的所有浏览时间按照由小到大的顺序会发现,数据大致是呈指数大于1的幂函数2e状态分布。但是在实际情况中,有效数据通常是大致呈指数小于1的幂函数2-e状态。就如同看体育比赛时,裁判会去掉一个最低分和一个最高分,剩下的数取平均作为运动员的最终得分。当然,如果数据容量太大,不能只去掉一个最小值和一个最大值,而是要批量去掉若干最小值和最大值。所以,选择以中位数M为参考阈值,选取
为有效数据区间,从而把区间以外的异常数据排除掉,达到自动删除记录中异常值的目标。
30分钟为界得到的有效数据和自动获取有效数据的比较:
30分钟:2.735 20.859 480.924 16.031 70.682 11.672 11.625 8.422 25.156 16.640 28.703 50.172 22.500 32.968 33.859 890.730 8.801
自动获取的数据:2.735 20.859 16.031 70.682 11.672 11.625 8.422 25.156 16.640 28.703 50.172 22.500 32.968 33.859 8.801
从上面的比较可以看出,自动获取的数据将数据的范围缩小了许多,数据基本集中在一个区间范围内。
2.2 统计页面停留时间
首先,做一个页面停留时间的事件,命名为【停留时长】。然后,在前端新写一段小程序去记录时间,触发某个事件的时候,小程序开始时间的记录,触发另一事件的时候记为结束,从而计算出停留时长,把值赋【停留时长】事件中去。例如:想记录【观看电影介绍】的时长,在点击详细信息展开按钮的时候自动触发计时器,开始计时,然后在退出网页或者关闭浏览器的时候停止计时,然后将记录到的时长作为【观看电影介绍】事件的属性值上传。
2.3 冷启动
冷启动问题,分为两种冷启动。
(1)当用户的可参考数据量参考价值不大的时候(比如新注册用户,或因异常记录刚刚申诉结束的用户),可以选取所有用户在该网页的有效浏览数据的中位数作为阈值。
(2)当新的电影需要推荐给用户的时候,需要将新的电影通过向量空间模型展示,从而可以将该电影表示成关键词向量,例如可以将新电影的关键词向量分为电影类型,导演,主要演员等等。
3 总结
本文以传统的协同过滤算法为基础,针对电影推荐进行了深入的探索及改善。着重研究了页面停留时间对推荐系统的影响,,归纳总结出较为有效的去除异常值的方法,从而更好地对用户进行个性化推荐。同时也涉及了一部分冷启动方面的问题,通过进一步的研究,力致将三者更加完美的结合在一起,从而更好的提高推荐系统的准确性。
(通讯作者:洪蕾)
参考文献
[1]项亮.推荐系统实践(第3版)[M].人民邮电出版社,2012.
[2]A Collaborative Filtering Recommendation Algorithm Based on Item and Cloud Model[J].Wuhan University Journal of Natural Sciences,2011.1:16-20
[3]荣辉桂,火生旭,胡春华,莫进侠.基于用户相似度的协同过滤推荐算法[J].通信学报,2014,2:16-24.
作者简介
刘佳玮,女,中国计算机学会会员,就读于金陵科技学院软件工程(嵌入式培养)专业,曾获锐聘之星程序设计大赛三等奖、软通动力编程大赛三等奖等奖项。
作者单位
金陵科技学院软件工程学院 江苏省南京市 211169