一种改进的协同过滤推荐算法

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

种改进的协同过滤推荐算法

摘要:协同过滤算法自提出以来便得到了广泛运用,但

协同过滤算法本身具有的数据稀疏性及冷启动问题也制约了算法的性能。通过分析协同过滤算法的原理和不足,提出了一种改进协同过滤算法的思路,并在MovieLens 数据集上进行了验证,一定程度上提高了

算法性能。

关键词关键词:推荐系统;协同过滤;数据稀疏性文献标识码:A 文章编号:1672-7800(2016)004-0063-03 0 引言网络技术的

迅猛发展使得互联网上的信息呈现爆炸式

中图分类号:TP312

增长,为人们的生活和学习提供了便利,与此同时,海量的数据也带来了一些问题,其中最主要的就是“信息过载”问题。所谓信息过载问题,是指由于不相关的垃圾数据过多从而导致用户无法准确找到自己想要信息的问题。

为应对信息过载问题,人们提出了各种解决方案,其中

最为用户所熟悉的无疑是搜索引擎技术。但搜索引擎的服务是被动的,它要求使用者必须先给出一个搜索关键字,然后才能提供与该关键字相关的信息。这种完全依赖于关键字的服务模式要求用户能用关键字准确描述自己所需信息,否则

无法提供服务,但是现实中用户很多时候并不能精确描述自己的需求信息。这种情况下,以推荐系统为代表的技术可以较好地解决该问题,提高用户的使用体验。

1 协同过滤算法

1.1算法介绍

“协同过滤”技术最早由GlodBerg等于20世纪90年代

提出,该技术最初被用来过滤电子邮件[1],此后这种技术取得了商业上的巨大成功,得到了广泛使用[2-3] 。协同过滤的基本思想是,如果两个用户在一些项目上具有相似的评价信息,包括显示的直接评分信息或者点击、购买等隐式评价信息,则这两个用户具有相似兴趣。一般而言,协同过滤需要使用到的用户评价信息会被存储在一个数据表中,该表可以被称为用户评分矩阵。

协同过滤技术的关键在于计算两个用户或者项目的相

似度,然后根据相似的用户或者项目进行推荐。其中如果根据某一用户的评分数据寻找到与其相似的用户,并依据相似用户的爱好对活动用户进行推荐的思想被称为基于用户的协同过滤。如果知道用户对某一项目评分较高,则可以根据评分矩阵寻找与这一项目相似的项目推荐给用户,这种思想被称为基于项目的协同过滤。

两种协同过滤算法的基本步骤比较相似。首先,依据用

户对物品的评分建立用户评分矩阵,矩阵的行数为系统中用

户的数量,列数为系统中物品的数量,没有评分数据的默认为零;然后依据用户评分矩阵计算相似度,目前比较主流的相似度计算方法有余弦相似度和Pearson 相关系数。

余弦相似度:将某一用户的评分看作1个N维向量,用

户之间的相似度是通过用户的评分向量间夹角的余弦来计算,夹角越小则相似度越高,余弦向量相似度计算公式如下:

1.2算法优缺点

协同过滤技术是目前最成功的推荐技术,尽管这种技术

在商业上取得了巨大成功,但该技术依然有一些关键技术点有待改进。相对于其它各种推荐技术,协同过滤的最大优点在于这种技术不需要被推荐对象具备专业领域知识,不需要分析被推荐对象的特征属性,因为协同过滤推荐完全依赖于用户对项目的评分数据,与被推荐对象的具体特征无关,从而使得这种技术可以运用于各种领域的推荐,使用范围较广。

尽管协同过滤有各种优点,但这种算法本身也存在一些

在一个大的系统中,如购物网站中,存在的项目或者物

不足,主要是数据稀疏性问题和冷启动问题[4]。

品数量数以百万计,而一个用户可能评价的项目只占其中常小的一部分,这就造成了评分矩阵的稀疏性,事实上在大

型商用推荐系统中,评分矩阵的密度很少有超过1%的[4]。

根据协同过滤算法的原理,用户或项目的相似度是根据两个用户评分向量中的共同项来计算的,在评分矩阵过于稀疏的

情况下,可能没有足够的共同项来计算相似度,从而影响推荐精度[5] 。

除了数据稀疏性问题,协同过滤算法面临的另一个挑战

是冷启动问题,冷启动问题可以看成是稀疏性问题的极端情况。当一个新项目加入系统时没有评价数据,则该项目不可能被推荐,推荐系统也就失去作用。

2 改进的协同过滤算法随着推荐系统规模越来越大,传统推荐算法

中的问题也

越来越突出。当前的推荐系统有成千上万的物品和用户,由此建立的用户评分矩阵将非常大,计算相似度的过程将非常耗时。同时,系统中物品众多,而一个用户打分的物品可能只有很少几项,这将导致评分矩阵中出现大量的未评分项,从而导致评分矩阵的稀疏性。为改善这些问题,可以使用聚类算法对原始数据进行聚类,划分出不同的聚类簇,这样推荐算法可以在聚类簇中快速找到邻居集合,从而提高算法效率。

2.1 聚类算法根据上述原理对原始数据进行聚类,将相似项目划分

同一个簇中,此后计算相似度和寻找邻居项目时都使用经过聚类后的聚类簇作为数据源。聚类算法可以选用经典的

K-means 算法,算法过程如下:

输入:原始项目数据和聚类个数K。

输出:K 个聚类。

①从原始项目集合中随机选择K个对象作为初始聚类中

心点;②计算每个对象到各中心点的距离,并根据最小距离划分类别;

③重新计算每个聚类类别的中心点;④重复②和③直到不再变化。经过上述步骤后,原始项目数据集将被划分到几个不同的聚类簇中,每个聚类簇就是一个子评分矩阵,此后查找活动项目的相似邻居就在目标项目所在的子矩阵中进行。由于一个推荐系统的项目相对固定,变化不大,因此可以事先离线计算,对系统的实时性并无影响。

2.2协同过滤推荐考虑到系统中项目数量较大,聚类之后每个子矩

阵中的

数据可能依然比较稀疏,因此可以使用基于项目的协同过滤对这些需要使用的子矩阵进行一定程度的填充,以降低子矩阵的稀疏度。算法过程如下:①计算子矩阵中的每个项目与其它项目的相似度,并取其中相似度最大的N个作为最近邻;

②根据邻居的评价信息,利用预测值公式来计算未评价项的预测值,并将值填入子矩阵。经过以上步骤得到新的、稀疏

度降低后的子矩阵,然后使用基于用户的协同过滤算法在该

矩阵上进行推荐。 3 实验结果

3.1 数据集与评价标准实验采用MovieLens 数据集,在实验中使

用u1.base 训

练数据集来实现用户对未评分的电影进行分值预测,将预测

的评分与u1.test 测试数据集中的分值进行比较。本文采用平

均绝对误差(MAE)作为衡量推荐质量的标准,MAE是通过

用户的预测评分与实际评分之间的差值来判断预测的精确度,差值越小,则预测精度越高。若预测用户对项目的评分

集合为{r1,r2,,,ri,,,rn},而实际的测试数据集中用

户对项目的评分集合为{t1 , t2 , , , ti, , , tn},则MAE 可定义如下:

相关文档
最新文档