
收稿日期:2016-06-02;修回日期:2016-07-16 基金项目:国家科技支撑计划资助项目(2014BAH24F04);国家社科基金资助项目(15CGL031);中央高校基本科研业务费资助项目(3132016306)作者简介:李桃迎(1983-),女,安徽萧县人,副教授,博士,主要研究方向为数据挖掘、信息系统集成(ytaoli@126. com);李墨(1992-),女,浙江宁波人,硕士,主要研究方向为协同过滤算法、个性化推荐;李鹏辉(1989-),男,山东潍坊人,硕士,主要研究方向为个性化推荐.基于加权 Slope One 的协同过滤个性化推荐算法*李桃迎,李 墨,李鹏辉(大连海事大学 交通运输管理学院,辽宁 大连 116026)摘 要:针对传统协同过滤算法存在冷启动、数据稀疏、运行效率低下等问题,分析了较传统协同过滤算法更加高效准确的 Slope One 算法的优点、原理及流程。针对 Slope One 算法未考虑用户兴趣变化和用户相似性这两方面的问题,提出了基于用户兴趣遗忘函数和用户最近邻居筛选策略的改进方案,以期提高推荐的质量,同时采用MovieLens 数据集进行了实验验证。
实验对比结果佐证了该算法确实提高了推荐准确度并且减少了响应时间。关键词:推荐算法;协同过滤;邻居选择;用户兴趣遗忘函数中图分类号:TP181 文献标志码:A文章编号:1001-3695(2017)08-2264-05doi:10. 3969/j. issn. 1001-3695. 2017. 08. 005Personalized collaborative filtering recommendationalgorithm based on weighted Slope OneLi Taoying,Li Mo,Li Penghui(Transportation Management College,Dalian Maritime University,Dalian Liaoning 116026,China)Abstract:The traditional CF algorithm has the problem of cold start,data sparseness and low operation efficiency. This paperchose Slope One algorithm which was more efficient and accurate than traditional CF algorithm for research and analyses its ad-vantages,principle and process. It pointed out shortcomings of Slope one algorithm that it did not take user interest changesand user similarity into account. This paper put forward improved scheme of Slope one algorithm based on user interest forget-ting function and user nearest neiors. The experimental test on MovieLens dataset proves the feasibility and better time per-formance of improved scheme.Key words:recommendation algorithm;collaborative filtering(CF);neior-selection;user interest forgetting function0 引言随着信息技术的发展和互联网的普及,网络上汇集了海量的信息。
运算/过滤:我们收集互联网上40多种过滤算法及自己研究的算法进行整合。运算/过滤:我们收集互联网上40多种过滤算法及自己研究的算法进行整合,对每条公式都有详细的说明,让人一目了然,每期都会不断的新增新公式。杀号/预测.运算/过滤:我们收集互联网上40多种过滤算法及自己研究的算法进行整合,对每条公式都有详细的说明,让您一目了然,每期都会不断的新增新公式.如果您有把握,也可以自行设置条件过滤,如果没有把握也可以按照我们验证过的高效算法过滤,我们推出高中低三个过滤缩水推荐选择,缩水率最高可达98%,将不可能出现的垃圾注清除,让您以最少的钱购买最有质量的号码.指标/数据:我们将所有红蓝球数据进行统计,统计内容包括期号。
“参加过几次阿里云天池数据大赛,刚开始是推荐算法比赛,我网上一搜到处都是协同过滤,尝试过,后来听别人说用规则建立评分模型,我也尝试过,看着大家都在建立特征用逻辑回归lr训练预测、群里天天谈论着随机森林rf、大家都在鼓吹gbdt神奇,我都一一尝试过。协同过滤是推荐系统中最经典的算法,相对于历史行为强相关策略,对用户兴趣、poi属性相当于是做了抽象和泛化。4. 熟悉回归分析模型、关联规则挖掘、分类和聚类算法、协同过滤算法等数据统计模型和挖掘算法,了解完整的数据挖掘过程方法论,并有独立完整的建模实践经验。

分别计算近邻集合的项目评分 score 与用户(或项目)相似度 similarity 的乘积,求和取平均值作为该项目的预测值 recommend_value。d)生成推荐列表。统计目标用户对不同项目的预测值recommend_value,选取排在最前面的 N 个项目组成 top-N 推荐集合,作为最终推荐结果反馈给用户。1.2 协同过滤算法的瓶颈问题随着系统规模的扩大和用户数量的增多,协同过滤算法逐渐暴露出一些颇具挑战性的问题,列举如下[8,9] :a)数据稀疏性问题。协同过滤算法的执行依赖于大量的用户评分数据。在实际应用中,虽然整体的评分数据量很多,但是具体到单个用户上就会显得稀少。用户评分数据的缺失导致构建的用户—项目评分矩阵成为高维稀疏矩阵。若用户共同评分的产品数较少,产生的推荐列表就带有很强的偶然性,导致推荐结果的可靠性急剧下降。b)冷启动问题。新用户冷启动问题是指当有新用户加入系统时,几乎没有或者只有少数几个项目评分,系统无法准确定位用户的兴趣偏好,难以保证推荐质量,可能导致已有用户的大量流失。新项目冷启动问题是指当有新项目添加到系统时,因缺少用户对它的评分数据而无法对其进行推荐,这样就更难获得用户的有效评价,致使新品被无限冷藏。
c)扩展性问题。随着用户和项目数量急剧增加,整个用户—项目评分矩阵的维度将被提升至数十万甚至上百万级别,用户(项目)相似性的计算需要耗费更多的时间,严重拉低了系统的实时响应速度。1.3 Slope One 算法基本原理及流程Slope One 算法的核心思想是根据用户群体对每个项目的评分推算出项目两两之间的评分差值,从而依据项目评分差值以及用户的历史评分记录来近似地估计该用户对目标项目的评分。Slope One 算法采用了线性回归分析的计算方法,认为用户对项目 X 和 Y 的评分之间存性关系 y = ax + b。由于y = ax + b在计算过程中可能出现过拟合现象,所以实际操作时采用了更为简洁的计算公式 [10] 如下:y = x + b (1)假设现有用户对项目 X、Y 的评分向量集 S ={〈x 1 ,y 1 〉,〈x 2 ,y 2 〉,…,〈x n ,y n 〉},里面的每一个数值对都代表一个用户分别对项目 X、Y 的评分。则根据最小二乘法计算项目 Y 对 X的评分差 b 的估计值的计算公式为b =∑ni =1 (y i- x i )n(2)之后就可根据目标用户对项目 X 的评分和评分差 b 来估算其对项目 Y 的评分。
因为并不是所有的用户评分数据都是有价值的,所以Slope One 算法会筛选出符合条件的数据参与计算,这也是它较为高效的原因所在。下面将以一个简单实例来详细阐述Slope One 算法的具体流程。假设有 A、B、C、D 和 E 五个用户以及 I、J、K 、M 四个项目。用户对各项目的评分记录如表 1 所示,其中,“- ”表示用户没有对该项目进行评分slope one 算法 是基于什么的,“?”代表需要预测的评分,即用户 A 对项目 K 的评分。表 1 用户—项目评分表user I J K MA 3 4 ? 5B - 3 4 4C 4 - - 5D - 3 2 3E - 2 5 -采用 Slope One 算法预测用户 A 对项目 K 评分的一般流程如下[10] :a)筛选用户集合。在用户—项目评分矩阵中,并非所有的用户都参与了目标项目的评分,如图 2 所示,首先筛选出对项目 K 评过分的所有用户集合,即{B,D,E}。b)筛选项目集合。首先寻找目标用户的已评分项目,然后依次查看集合中其他用户是否对该项目进行过评分,如果有用户参与过评价,就将该项目纳入到参与算法运算的项目集合中。
如图 3 所示,算上待预测项目 K,最终参与计算的项目集合为{J,K,M}。c)预测项目评分。筛选出参与计算的用户集合和项目集合之后,就能够锁定 Slope One 需要的用户—项目评分数据,即用户集合与项目集合交叉点对应的评分。在多项目情景下,用户 u 对项目 j 预测评分 P(u)j 的计算公式如下:dev j,i =∑ u∈U j,i (r u,i - r u,j )card(U j,i)(3)P(u)j =1card(I j )∑i∈I j (dev j,i+ r u,i ) (4)其中:dev j,i 是指项目 j 相对项目 i 的评分偏差;U j,i 表示对项目 i和 j 都评过分的用户集合;I j 表示用户 u 所有已评分且满足条件(i≠j∩U j,i ≠)的项目集合;r u,i 和 r u,j 分别表示用户 u 对项目 i、j 的评分;card()表示集合的元素个数。因此,分别计算出项目 K 相对项目 J 和 M 的评分偏差:dev K,J =(4 -3)+ (2 -3)+ (5 -2)3=1dev K,M =(4 -4)+ (2 -3)2= -0.5然后使用式(4)计算出用户 A 对项目 K 的最终预测评分为· 5 6 2 2 · 第 8 期 李桃迎,等:基于加权 Slope One 的协同过滤个性化推荐算法P(A)k =(r A,J + dev K,J )+ (r A,M + dev K,M )2=(4 +1)+ (5 -0.5)2=4.75Slope One 同其他推荐算法一样,在预测完项目评分之后采用 top-N 等方式生成推荐列表。

1.4 Weighted Slope One 算法Weighted Slope One 算法是一种比较常用的 Slope One 改进算法。分析式(4)发现,Slope One 在用 dev j,i 预测项目 j 评分P(u)j 时,只是简单地将用户评过分的其他项目数量作为分母,求取了根据用户 u 对其他项目评分推算出的项目 j 的评分的均值。这种简单的做法没有将 dev j,i 的可信度差异考虑在内,即忽略了用户评分数对计算项目评分偏差作出的贡献。Slope One 算法在计算不同项目之间的评分差异时,参与计算的用户数量是不一样的。为了均衡每个项目对目标项目的影响,对 Slope One 进行了加权处理,改进后的公式如下:P(u)j =∑ i∈I j (dev j,i + r u,i )·card(U j,i )∑ i∈I j card(U j,i )(5)2 Slope One 算法的改进方案尽管与传统的协同过滤算法相比,Slope One 算法在推荐效率和推荐质量方面都有着不俗的表现,但是仍然存在些许缺陷与不足。Slope One 算法面临的主要问题如下:a)Slope One 算法在预测项目评分时,只是片面地使用用户对项目的评分数据进行计算,并没有充分考虑到用户兴趣变化的可能性。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-104101-1.html
活该