APP下载

基于Slope One 算法的图书推荐系统优化

2015-03-16杨凌云

电脑知识与技术 2015年4期
关键词:协同过滤

杨凌云

摘要:Slope One算法是一种易实现,运算效率高,可扩展性好的协同过滤推荐算法,但该算法依赖大量用户对待预测项目的评分,在数据稀疏的情况下用户评分的可靠性对推荐结果的影响很大。该文首先利用LensKit工具下的Slope One算法和某在线图书网站的数据进行了图书推荐实验,分析了三个导致图书推荐效果不好的原因,然后提出了稀疏数据下的基于预测评分可靠性加权的Slope One算法优化,最后对优化后的推荐算法进行对比实验,证明改进后的图书推荐系统在内存使用率和推荐质量上均有明显提高。

关键词: 协同过滤; 图书推荐系统; Slope One算法; 算法优化; LensKit工具

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)04-0079-03

Abstract:Slope One algorithm is a collaborative filtering algorithm, which is easy to implement with high operational efficiency and good scalability. However this algorithm relies on a large number of users ratings to the item which should be predicted. The final rating prediction is affected a lot by the reliabilities of the users ratings when data is sparse. This paper firstly uses LensKit to realize Slope One algorithm based book recommendation with online book website data, and analyses three reasons that lead to ineffective recommendation result. Then it proposes a way to weight the reliabilities of the predictions to optimize Slope One algorithm when data is sparse. Finally this paper uses the same data set to validate this optimized Slope One algorithm and proves that the book recommendation system is improved on both storage usage and recommendation quality.

Key words:collaborative filtering; book recommendation system; Slope One; algorithm optimization; LensKit

1 概述

随着因特网的飞速发展,互联网上的信息总量呈现出了爆炸式的增长,用户很难在海量的数据中找到自己喜爱的图书。图书推荐系统主要通过分析大量在线读者的兴趣相似度或图书相似度,搜索当前读者可能感兴趣的图书推荐给他。传统的协同过滤推荐算法主要基于用户数据项评分矩阵,有基于用户和基于项目的两种近邻协同推荐法。Slope One算法是另一种经典的基于用户-项目评分矩阵的协同过滤算法,该算法是一个增量算法,对评分较少的用户也可以产生推荐,同时准确度比传统的基于用户或项目相似度的协同过滤算法要好[1]。该文用真实的电子图书网站数据和LensKit开源工具,利用基于加权Slope One算法进行了图书推荐实验,并分析了在LensKit对Slope One的实现中和在数据稀疏情况下的三个导致推荐效果不好的缺陷,然后提出了相应的解决方案。改进后的基于Slope One图书推荐系统不仅在推荐精度上有了明显的提高,还节省了系统内存。

2 基于加权Slope One算法的图书推荐

Slope One算法是由Daniel Lemire教授在2005年提出的一个基于数据项的协同过滤推荐算法[2],它和其他基于评分的协同过滤算法不同,不用计算数据项之间的相似度[3],而是用一种简单的线性回归模型进行预测:[f(x)=x+b]。其中常数项系数b为两个项目评分之间的平均差,用户UserB对书本BookA的评价建立在书本BookA和书本BookB的评分差之上,通过公式[rUserB,BookA=rUserB,BookB+(rUserA,BookA-rUserA,BookB)]获得。上述提出的基本Slope One只考虑了两个项目的平均评分偏差,并没用考虑其他因素,在实际应用中并不采用[4],这里我们采用LensKit下的经典加权Slope One算法实现图书推荐系统。LensKit是一个开源的工具,可以用来学习、研究或者构建个性化推荐系统,还可以用来对新的推荐算法或者评估方法进行实验[5]。

2.2 LensKit下的图书推荐系统实验

利用LensKit工具对加权Slope One算法的实现,对某真实电子图书网站用户浏览和购买的历史数据进行实验。实验数据集中包括该网站2014年一月至三月共20729条图书数据,19922个用户购买及访问的记录,将前两个月的数据作为训练集,后一个月数据作为测试集。LensKit中把Slope One算法的中间结果(比如数据项之间的偏差矩阵、推荐结果)储存在了内存中,对内存的需求比较高,所以我们随机选择了每组数据中的三分之一来进行实验,实验流程分为评分矩阵形成、预测评分和形成推荐三个步骤[7]。

4 结束语

本文先阐述了基于LensKit下加权Slope One算法的在线图书推荐系统的实现及推荐结果,指出此算法的在图书推荐系统应用中的三个缺陷。然后提出了在数据稀疏情况下,从实时计算评分偏差矩阵和基于预测评分可靠性加权两方面进行Slope One算法在图书推荐系统中的优化。最后对优化方案进行验证,证明了优化后的Slope One算法在提高图书推荐质量和降低系统内存消耗上都取得了显著效果。

参考文献:

[1] Mahmood T,Ricci F.Improving recommender systems with adaptive conversational strategies[C]. New York,USA:ACM Press,2009.

[2] Daniel Lemire,Anna Maclachlan,Slope One Predictors for Online Rating-based Collaborative Filtering[J].In SIAM Data Mining(SDM'05),2005,April 21-23:45-46.

[3] 刘旭东,陈德人,王惠敏.一种改进的协同过滤推荐算法[J].武汉理工大学学报,2010,32(4):550-553.

[4] 罗敏.基于过滤技术的网上书籍推荐系统[D].上海:复旦大学,2006.

[5] Michael D. Ekstrand,Michael Ludwig.Rethinking The Recommender Research Ecosystem: Reproducibility,Openness,and LensKit.Proceedings of the Fifth ACM Conference on Recommender Systems[C].New York,USA:ACM Press,2011.

[6] 孙丽梅,李晶皎,孙焕良.基于动态K邻近的SlopeOne协同过滤算法[J].计算机科学与探索,2011,5(9): 857-864.

[7] 王霞.基于项的协同过滤在推荐系统中的应用研究[J].计算机工程与设计,2007,28(7):1719-1722.

[8] 朱郁筱,吕琳媛.推荐系统评价指标综述[J].电子科技大学学报,2012,41(2):163-175.

猜你喜欢

协同过滤
基于用户评分和项目类偏好的协同过滤推荐算法
基于用户相似度加权的Slope One算法
图书推荐算法综述
改进的协同过滤推荐算法
基于链式存储结构的协同过滤推荐算法设计与实现
基于相似传播和情景聚类的网络协同过滤推荐算法研究
基于协同过滤算法的个性化图书推荐系统研究
混合推荐算法在电影推荐中的研究与评述
关于协同过滤推荐算法的研究文献综述
基于混合信任模型的协同过滤推荐算法