协同过滤推荐系统中数据稀疏问题的解决基于项目的协同过滤推荐算法[1,3,4],从产品角度进行分析,寻找与目标产品相似的产品集合,然后进行预测和推荐。它基于一个假设,即用户对与其感兴趣产品相似的产品也感兴趣。由于项目间的相似性相对稳定,而通常项目的数量比用户数量少,这样可以减少计算量,降低数据稀疏性。 算法步骤: (1)通过相似性算法,计算列向量的余弦相似性,即产品向量的相似性。 (2)选择相似性最高且没有被目标用户评价过的前M个产品,作为产品的邻居集合Mp。 (3)对邻居集合中产品的评分进行加权求和,得到目标用户对目标产品的预测评分 2.2 降低矩阵维数的技术 降低矩阵维数的技术可对原始稀疏数据直接进行数据处理,降低数据稀疏性。主要算法有单值分解、聚类等。 2.2.1 单值分解 单值分解算法利用矩阵的单值分解原理,对用户—产品矩阵进行分解,从而降低矩阵的维数,抽取出主要信息[2,5]。 算法步骤: (1)使用每个产品的平均评分——列平均值——填充矩阵中的未评分项。 (2)利用用户的平均评分——行平均值——进行标准化,产生矩阵R。 (3)对R进行单值分解,得到 (6)根据同一产品被邻居评分的频繁程度产生推荐。 从算法步骤可以看出,通过单值分解得到的较低维的UkS1/2k矩阵比原始用户—产品稠密,并且抽取出了所有用户信息。在这个矩阵上进行相似性计算,可以减少计算量,提高在线推荐速度,并且提高推荐质量。实验表明,该算法在分解矩阵过程中,不可避免数据遗失。当原始矩阵极度稀疏时,单值分解算法试验结果并不理想。算法需要较大的计算量,较少的存储空间。 2.2.2 聚类 单值分解通过矩阵运算降低数据稀疏性,聚类[6-9]则是通过一些聚类算法将产品或用户聚成若干具有共同性质的类;然后在小的聚类数据中产生推荐。 (1)取前K个用户作为K个独立的聚类质心;剩余的每个用户与其最近质心进行比较。 (2)在形成聚类质心的基础上,重新计算聚类的质心。 (3)聚类内部的成员关系被重新估算。重复(1)-(3),直到产生的K个聚类不再变化。 (4)在目标用户所在的类中进行用户相似性计算,主要运用第一部分中的相关相似性方法计算,得到最近邻居集合。 (5)对最近邻居的评分数据进行加权处理: (6)预测产生后,根据预测评分的高低对目标用户进行推荐。 2.3 基于内容的协同过滤算法 2.1、2.2节中介绍的算法都是建立在用户对产品评分的基础上,在一定程度上都缓和了数据稀疏带来的问题。基于产品内容的协同过滤算法[11]与前面介绍的几种算法的不同之处,是考虑到了产品本身的信息。由于增加了信息量,可以有效提高推荐质量。 本文原文 单纯的基于产品内容的算法,根据单个用户已评价产品的内容信息,如电影的导演、演员、类型等,建立用户兴趣模型,进而产生推荐。这样的算法存在一些弊端:①由于通常获得的只是产品的部分信息,其他一些未知信息很有可能影响用户的行为,这就造成了推荐的不准确。②用户的喜好通常是多样的,而单个用户评分的产品数量却非常少。这样就使推荐局限于特定类型的产品上。 基于内容的协同过滤技术则不同。目前这方面的算法主要有线性结合型和连续结合型两个类型,如图2、3所示。 线性结合型算法步骤: (1)通过历史评价的产品内容信息,建立用户兴趣模型。 (2)比较用户模型,得到基于内容的用户相似性。 (3)根据用户—产品评分矩阵,得到基于评分的用户相似性。 (4)将两个相似性进行线性组合,得到用户相似性。 (5)根据相似性,得到目标用户的最近邻居集。 (6)通过邻居集对目标用户进行评分预测和推荐。这个过程可以用2.1、2.2节介绍的算法进行。 连续结合型算法步骤: (1)通过历史评价的产品内容信息,建立用户兴趣模型。 (2)根据每个用户兴趣模型的相互比较,获得目标用户的最近邻居集。 (3)将符合目标用户或其邻居兴趣模型的产品推荐给目标用户。 以上两种算法混合了协同过滤算法和基于内容的推荐算法,缓和了传统协同过滤算法没有考虑产品本身信息的缺陷,也解决了基于内容的推荐算法中单个用户信息稀少的问题。然而,产品信息的获取和存储,是一个困难且昂贵的问题。 |
|