陆俊尧,李玲娟
(南京邮电大学 计算机学院,江苏 南京 210023)
推荐系统的目的是为用户进行精准高效的信息推送,在现有的推荐技术中,基于协同过滤的推荐技术是最为成功的。“协同过滤”[1]一词最早是由GlodBerg等在90年代中期开发推荐系统Tapestry[2]时提出的,并且在后来得到了广泛的研究和应用。协同过滤推荐算法主要分为基于用户间相似度的(User-Based)[3-5]协同过滤推荐算法和基于项目间相似度的(Item-Based)[6-9]协同过滤推荐算法。前者基于用户之间的相似度,为目标用户推荐其相近用户感兴趣的项目;后者计算项目之间的相似度,从而为目标用户提供与其感兴趣项目相似度较高的项目。
由于与日益增加的用户数量相比,项目的数量是相对稳定的。所以,基于项目间相似度的协同过滤算法可以有效地减少计算量,提高推荐的时效性。但是面对爆炸式增长的数据量,协同过滤算法的计算效率仍面临着挑战。
作为新一代大数据计算平台,Spark具有基于内存计算的特性,同时也支持对加载到内存中数据的反复查询,非常适合大数据场景下的数据计算,已成为当今最为火热的大数据计算框架之一[10]。
为了提高协同过滤乃至推荐系统的效率,研究了Item-Based协同过滤算法在Spark平台上的并行化方案,并通过实验对该方案的准确性以及时效性进行了验证。
在基于协同过滤的推荐系统中,最关键的部分就是用户-项目评分矩阵A(m,n),它由数量为m的用户集合U={u1,u2,…,um}对数量为n的项目集合I={i1,i2,…,in}的评分构成,用户u对项目i的评分用Rui表示,推荐则基于评分矩阵按照评分高低进行。……