严春燕+戴仕明
摘 要: 互联网产生的海量信息带来了“信息超载”的问题。文章基于协同过滤算法对用户喜好进行了研究。阐述了协同过滤的基本思想,对用户喜好数据的采集及预处理过程进行了研究;在数据分析过程中提出几种常用的计算相似度的方法并进行了比较;研究了协同过滤算法的两个分支的不同适用场景,并与基于内容的算法进行比较,对现有算法存在的不足提出了改进。
关键词: 协同过滤; 用户喜好; 数据采集; 预处理; 相似度
中图分类号:TP391.9 文献标志码:A 文章编号:1006-8228(2017)07-56-04
Research on user preferences using collaborative filtering algorithm
Yan Chunyan1, Dai Shiming2
(1. College of Computer and Information, Jiangxi Agricultural University, Nanchang, Jiangxi 330045, China;
2. College of Software, Jiangxi Agricultural University)
Abstract: The massive information generated by the Internet brings the problem of "information overload". This paper studies user preferences by using collaborative filtering algorithm; Describes the basic idea of collaborative filtering, and studies the acquisition and pretreatment of user preference data; in the process of data analysis, several common used similarity algorithms are proposed and compared; the two branches of the collaborative filtering algorithm in different applicable scenes are studied, and compared with the content-based algorithm to improve the existing algorithms.
Key words: collaborative filtering; user preferences; data acquisition; pretreatment; similarity
0 引言
隨着互联网的快速发展,数据信息正在成指数量级增长,而用户很难从中找到自己感兴趣的内容,这就形成了“信息超载(Information overload)[1]”的问题。为了很好地解决用户需求与互联网庞大的数据之间的矛盾,推荐算法是解决这个矛盾的主要技术。
协同过滤算法[2]是目前最广泛应用的算法。协同过滤算法常被用于分析用户潜在感兴趣的物品,这些依据来自于其他相似用户对产品的喜好分析。简单来说就是:物以类聚,人以群分。
1 协同过滤的基本思想
协同过滤算法最早出现于1992年,被用于邮件过滤系统,是目前较为流行的推荐算法。协同过滤具有预测和推荐的功能,协同过滤算法的出现标志着推荐系统的产生。协同过滤也被认为是集体智慧[2]的典范,不需要对项目进行特别处理,而是通过用户建立起物品与物品之间的联系,喜欢相同物品的用户之间更有可能具有相同的喜好。协同过滤算法分为两类,一类是基于用户(User-based)的协同过滤算法,另一类是基于物品(Item-based)的协同过滤算法。
1.1 基于用户的协同过滤算法
基于用户的协同过滤算法[3]的基本原理是根据所有用户对物品的评分,发现与当前用户喜好相似的其他用户,在应用中一般采用K-最近邻(K-Nearest-
Neighbor,KNN)算法[4],然后,基于这些相似用户的喜好信息,为当前用户进行推荐。这个算法主要包括两步:
⑴ 找到和当前用户喜好相似的用户集,计算两个用户的喜好相似度;
⑵ 找到这个用户集中用户喜欢的,且当前用户没有听说过的物品推荐给当前用户。
1.2 基于物品的协同过滤算法
基于物品的协同过滤算法[5]的基本原理是根据用户的所有历史喜好数据来计算物品的相似度,然后把与用户喜欢的物品相似的物品推荐给用户。这个算法主要包括两步:
⑴ 计算物品之间的相似度;
⑵ 根据物品的相似度和用户的历史行为给用户推荐物品。
2 数据采集及预处理过程
2.1 数据采集的方式
用户喜好数据的采集可以从下面表1这几种用户行为方式中发现用户喜好,并通过分组和加权这两种不同的组合方式对用户行为进行处理。
⑴ 以Web日志的方式。从用户给网站服务器发出http请求开始,网站服务器就会在Log文件中添加一条记录,记录远程主机名(或IP地址)、发送请求的日期、请求返回的状态等。随后网站服务器会以http形式将页面返回到用户的浏览器内,之后会有专门的处理服务器对大量Log文件进行处理,产生网站分析报表,如图1所示。
[网站服务器][浏览器网页][处理服务器][网站分析报] [http请求][http形式返回][Log文件]
不同的数据采集方式有不同的优缺点,表2对三钟数据采集方式的优缺点进行了详细的比较,为各网站开发者在选择数据采集方式时作为参考。
2.2 数据预处理
大量的原始数据中存在着很多模糊的、重复的、不完整的、有噪声的数据,会严重影响到数据分析的执行效率,甚至可能导致最后结果误差很大,因此,在进行数据分析之前,需要对原始数据进行预处理,提高数据的质量。数据预处理主要包括数据清理,数据集成,数据变换与数据规约等技术。如图4所示:
3 数据分析
3.1 相似度的计算
预处理之后,得到了用户喜好,再通过用户喜好来计算相似用户或物品,然后基于用户或者物品进行推荐。基于用户和基于物品这两种算法都需要计算相似度,下面介绍几种常用的相似度计算方法:
⑴ 欧几里得距离
假设X,Y是n维空间的两个点,
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
则它们的欧几里德距离:
则相似度,需要在欧几里得距离上进行一个转换:
⑵ 皮尔逊相关系数(Pearson correlation coefficient)
皮尔逊相关系数常用于计算两个变量之间的紧密程度,取值在[-1,+1]之间,相关系数的绝对值越大,相关性越强,相关系数大于0是正相关,相关系数小于0是负相关。
假设X,Y是n维空间的两个点,
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
则它们的皮尔逊相关系数:
⑶ 余弦相似度(Cosine similarity)
用空间向量中两个向量夹角的余弦值,来表示两个向量之间的差异。取值在[-1,1]之间,余弦值越接近1,两个向量夹角越小,越相似。
假设X,Y是两个n维向量,
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
则它们的余弦相似度:
3.2 基于用户和基于物品的适用场景
根据User-based基本原理可以看出User-based更加社会化,更倾向于推荐相似用户中的热点。在新闻类网站中,用户喜好往往是其次,热门程度和時效性是新闻推荐的重点,所以User-based给用户推荐和他有相同喜好的人关注的新闻,这样既保证了热点和时效性,又兼顾了个性化。
但在图书推荐系统、电子商务和电影网站等方面,用户数量往往远远大于物品数量,如果User-based需要消耗更大的空间,此时基于Item-based能发挥更大的作用。因为在这些网站中,用户的喜好一般比较固定,Item-based能更好地给用户推荐相似物品,增加用户对推荐系统的信任度。
3.3 与基于内容算法进行比较
基于内容算法[6]的核心思想是依据物品或内容的元数据,再通过元数据寻找物品或内容的相似度,然后基于用户历史喜好记录,给用户推荐相似物品。基于内容的算法只考虑了物品本身的性质,将物品按标签方式形成集合,基于用户的历史喜好记录推荐相似物品,如果你选择了集合中的一个,则向你推荐集合中的其他物品。而协同过滤算法融合了集体智慧的思想,在大量用户行为中寻找答案,既基于用户购买的历史记录,又基于用户的相似度来推荐物品,这样基于协同算法推荐的精确度就会更高。
3.4 现有算法的不足以及改进
本文的协同过滤算法,在实际推荐系统中存在冷启动问题,在基于用户的协同过滤算法中存在用户活跃度问题[7],以及在基于物品的协同过滤算法中存在物品流行度问题[7]。为解决这三类问题,提出以下几种改进方法。
对于冷启动问题,可以分为新用户冷启动问题、新物品冷启动问题以及新系统冷启动问题。
⑴ 对于新用户冷启动问题,可以把热门排行结果推荐给新用户,待用户数据充足之后,再进行个性化推荐。
⑵ 对于物品冷启动问题,可以通过计算物品内容信息来得到物品相似度,再给用户推荐与内容相似的物品。可以将物品表示成一个关键词向量,将这些专有名词和其他一些重要词组成关键词集合,最后对集合中的关键字进行排名,再用TF-IDF公式[8]计算关键词的权重,最后生成关键词向量。
⑶ 对于新系统冷启动问题,在没有用户行为数据和物品内容信息计算相似度的情况下,可以使用专家标记的方式。
用户活跃度问题改进,用户活跃度能隐式地推断用户对未知物品喜好的可能性。本文定义用户活跃度与其浏览过的物品数量成正比,那么活跃度低的用户产生的用户行为,对计算物品相似度更加有作用,这就需要惩罚用户的活跃度。
物品流行度问题改进,物品流行度也可以隐式地表示用户喜好。本文定义物品流行度与浏览该物品的用户数量成正比,那么冷门物品被浏览更能计算出用户的相似度,因此需要惩罚物品的流行度。
4 结束语
本文从数据采集、数据预处理、相似度计算、算法适用场景这几方面进行了深入的研究,并将基于内容算法与协同过滤算法进行了比较,之后对现有算法存在的不足进行改进,提高了算法的准确度和覆盖率。下一步将研究如何将基于用户和基于物品的协同过滤算法根据不同的权重结合起来,在考虑用户相似度的同时也兼顾物品的相似度,以此提高推荐的精确度。
参考文献(References):
[1] 李书宁.互联网信息环境中信息超载问题研究[J].情报科学,
2005.10:149-152
[2] 项亮.推荐系统实践(第3版)[M].人民邮电出版社,2012.
[3] 荣辉桂,火生旭,胡春华,莫进侠.基于用户相似度的协同过滤
推荐算法[J].通信学报,2014.2:16-24
[4] 余小鹏,周德翼.一种自适应k-最近邻算法的研究[J].计算机
应用研究,2006.2:70-72
[5] A Collaborative Filtering Recommendation Algorithm
Based on Item and Cloud Model[J]. Wuhan University Journal of Natural Sciences,2011.1:16-20
[6] 陈洁敏,汤庸,李建国,蔡奕彬.个性化推荐算法研究[J].华南师
范大学学报(自然科学版),2014.5:8-15
[7] 王锦坤,姜元春,孙见山,孙春华.考虑用户活跃度和项目流行
度的基于项目最近邻的协同过滤算法[J].计算机科学,2016.12:158-162
[8] Belkin N,Croft B. Information filtering and information
re-trieval[J]. Communications of the ACM,1992.35(12):29-37