1 协同过滤算法简介
1.1 协同过滤核心思想以及分类
协同过滤以其特有的优势成为众多专家和学者关注的焦点,目前在各大电子商务网站得到广泛应用。该算法的思想是:根据系统中已有的评分数据计算用户(或项目)之间的相似性;根据计算得到的相似性找出当前用户(或项目)的最近邻;根据最近邻中用户(或项目)的评分预测当前用户对其他项目的评分值,最终根据评分值大小确定是否将该项目推荐给当前用户。
协同过滤推荐算法可以分为基于用户的协同过滤(UCF)与基于项目的协同过滤(ICF)。这两个算法的共同点在于二者都是根据用户-项目评分矩阵建立推荐系统模型,从而为用户提供个性化推荐服务的。不同之处在于UCF是根据用户之间的相似性找到目标用户的最近邻集,然后根据该集合中用户的评分情况确定目标用户的推荐结果。而ICF则是通过分析项目之间的相似性,最终将与目标用户评价较好的项目相似度较高的作为推荐列表的结果。
1.2 协同过滤的优缺点
基于协同过滤算法的推荐系统主要有以下优点:
(1)协同过滤算法的数据源是用户对项目的评价信息,不用考虑项目是否属于同一类别,所以协同过滤算法可以从属性不同的项目中提取有用的信息。
(2)协同过滤算法同时考虑了当前用户和其他用户的评价信息,这样能够增加产生推荐可利用的信息量,从而提高推荐的质量与效率。
(3)协同过滤算法的新颖性较高,推荐结果可能是用户意想不到的。
目前,协同过滤技术已经得到了广泛应用。但是网站商品信息量和用户人数在不断攀升,网站的结构也越来越复杂,因此基于协同过滤的推荐系统面临着一系列问题[1],比如:稀疏性问题、冷启动问题和可扩展性问题。
冷启动问题分为系统冷启动、用户冷启动和项目冷启动。系统冷启动问题主要解决如何在一个新开发的网站上设计个性化推荐系统,从而在网站刚发布的时候就能让用户体验到个性化推荐服务。用户冷启动主要解决的是在没有新用户的行为数据时如果为其提供个性化推荐服务。项目冷启动主要解决将新上架的项目推荐给可能对它感兴趣的用户。另外,电子商务网站、商品、用户的数量都在不断增加,推荐系统将面临严重的可扩展性问题。
2 稀疏性问题描述
稀疏性问题是推荐系统面临的主要问题,也是导致推荐系统质量下降的重要原因。在一些大型网站如亚马逊,用户评价过的项目质量相对网站中总项目数量可谓是冰山一角,这就导致了用户项目评分矩阵的数据极端稀疏,在计算用户或项目的最近邻时准确率就会比较低,从而使得推荐系统的推荐质量急剧下降。
3 稀疏性问题解决方式
稀疏性问题直接影响这推荐系统的质量问题,因此受到了学术界和应用界的高度关注。目前提出的解决稀疏性问题的方式已经有很多种,常用的有:简单填值、聚类、降维、结合内容的过滤方法等。
3.1 简单填值的方法
填值法就是用一个固定的数值填充系统中所有的未评过分的项目,从而解决稀疏性问题一种方法。常用固定值的选取方法有两种:
(1)缺省值可以设为评分的平均值,或者对前两者进行某种合成。该方法在一定程度上能缓解数据稀疏性问题,但在用户和项目数量很大的情况下填充所有缺省值,完成推荐的计算量也比较大,因此适合于小规模数据库。另外用户对未评过分的项目评分情况会有一些差异,该方法采用统一的数值进行填充,没有考虑到用户的兴趣差异,抹杀了用户的个性。
(2)众数法。众数法就是将目标用户所有评分的众数作为新项目预测评分的方法。从统计学的角度来说,采用众数法这种预测方法的准确率会比较高,但是在实际生活中,采用众数法预测用户对项目的评分可能会是错误的。另外,用户对项目的评分可能会存在多个众数或者没有众数的情况,因此众数法的应用局限性比较大。
3.2 聚类的方法
该方法根据用户兴趣之间的差异,利用某种聚类算法将系统中的所有用户划分为不同的群体;系统把用户所在群体的中心值作为用户对未评项目的评分预测值,进行用户项目评分矩阵的填充。主要的聚类方法有k-means聚类和遗传聚类等。聚类方法针对的对象可以是用户,也可以是项目,还可以对用户和项目均进行聚类。其中,对用户进行聚类时首先要对用户-项目评分数据库进行聚类,然后选择目标用户所属类的用户作为最近邻集合;对项目进行聚类时根据用户对项目评分的相似性对项目进行k-means聚类生成相应聚类中心,在此基础上计算目标项目与聚类中心的相似性,从而只需在与目标项目最相似的若干个聚类中就能寻找到目标项目的最近邻,并能够产生推荐列表,这种方法是由邓爱林等人提出的[2];对用户和项目均进行聚类的方法主要有层次聚类、biclustering聚类和co-clustering聚类等。聚类的方法利用相似群体的评分信息提高了预测的准确度,但不能体现用户间的爱好区别,因此推荐结果的准确率并没有得到显著提高。3.3 降维的方法
用户-项目评分矩阵出现数据稀疏的情况是由项目的高维数据引起的,因此可以考虑采取一定措施降低项目数据的维度,进而达到约减数据的目的。目前常见的降维技术主要有简单降维方法、矩阵分解和主成分分析(PCA)三类。
(1)简单降维方法。简单的降维方法就是通过设置限制条件删除一些用户和项目,从而降低用户-评分矩阵的维度。被删除的往往是没有参加过评分活动或者是评分次数很少的用户,或者是没有被用户评价过或者是被评价的次数很少的项目。利用该方法可以在一定程度上降低评分矩阵的维度,但是无法对被删除的用户或者项目进行推荐,这就导致了用户流失和信息隐藏的问题。
(2)矩阵分解。矩阵分解的最简单方法是单值分解算法。用该方法分解用户-项目评分矩阵,可以约减评分矩阵中的数据。但是该算法在分解矩阵的过程中会造成数据遗失,影响准确率。
奇异值分解(SVD)是一种矩阵分解的有效方式,该技术在计算机科学、统计学等领域有着广泛应用。SVD可以将高度相关且在一起出现的内容作为单独因子,把通常很大的矩阵向量拆解成更小阶的近似矩阵。奇异值分解能够应用于协同过滤算法解决数据稀疏性问题,主要原因是协同过滤中用户对项目评分是因为用户对这些项目的隐含特性比较感兴趣,而这些项目之间也存在着一些共同的特征。用户喜欢某一项目的表现为用户对这些项目的评分比较高,所以通过将用户的评分用线性代数方法分解为一些特征,可以根据用户对这些特征的喜好程度来预测用户对他所没有评过分的项目的喜好。
(3)主成分分析。主成分分析是基于矩阵特征值分解计算的标准统计分析方法。该方法式将原来的变量重新组合成一组新的互相无关的综合变量,同时根据实际需要可以从中取出几个能够尽可能多地反映原来信息综合变量作为新的参考信息。经过PCA处理后,原始评分数据被投射到最相关的主特征向量上,从而能够约减数据集。
降维技术虽然在一定程度上能够降低用户-项目评分矩阵的规模和稀疏程度,但采用该技术也流失了一部分用户对项目的评分数据。C C Aggarwak指出降维技术产生的效果与数据集密切相关,在项目空间维度很高的情况下进行降维,效果往往难以得到保证。
3.4 结合内容的过滤
协同过滤利用的信息只是用户评分数据,基于内容的过滤可以具体显示用户的描述信息,因此将这两种方式融合在一起可以增加可利用的数据量。具体的融合方式有以下四种[3]:
(1)综合考虑协同过滤和基于内容的过滤的推荐结果,采用一定方式将两种结果融合在一起。
(2)将协同过滤和基于内容的过滤集成到一个统一的模型。
(3)将协同过滤的部分功能集成到基于内容的过滤。
(4)将基于内容过滤的部分功能集成到协同过滤。
4 结束语
数据稀疏性不仅降低了最近邻居搜寻准确率,而且也降低了推荐覆盖率,直接影响着推荐的质量与效率。因此稀疏性问题一直是进行推荐系统研究的重点。目前,众多专家和学者已经提出了解决数据稀疏性的方法,有效的提高了推荐结果的质量。