1 / 7
文档名称:

基于svd的协同过滤推荐算法研究.doc

格式:doc   大小:16KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于svd的协同过滤推荐算法研究.doc

上传人:三角文案 2022/2/26 文件大小:16 KB

下载得到文件列表

基于svd的协同过滤推荐算法研究.doc

文档介绍

文档介绍:基于SVD的协同过滤推荐算法研究
  摘要:目前市面上大多数协同过滤推荐系统普遍具有显著的缺陷,比如冷启动、数据稀疏性等问题。该文在协同过滤推荐算法的研究基础上,对协同过滤推荐算法进行了优化,并设计了基于SVD的协同过滤推荐算法。日志,将用户的行为偏好数据收集起来,分析用户潜在未被发现的兴趣。当用户和项目的潜在特征挖掘完成后,每个用户与项目都可以看作是相同特征空间上的向量。预测用户是否对某项目感兴趣,直接可以计算两个向量的点积,作为用户对项目的评分预测[5]。利用SVD能够用小得多的数据集来表示原始数据集,这样可以去除噪声和冗余信息,在信息提取时节省大量的空间。基于这个优势,将SVD应用到推荐系统中提取相关特征,能有效避免数据稀缺性、冷启动以及拓展性方面问题,使推荐效率得到进一步提升。
  (1)基于SVD的推荐优化
  假设矩阵A代表用户和资源关系,通过SVD矩阵分解,A=TSD,则[R0=T0S0D0,S0=diag(a1,...,ar)],其中,T0和D0是m×n以及r×n的正交矩阵,r是矩阵R0的轶,S0是r×r的对角矩阵。
  输入:矩阵R0
  输出:矩阵T,S,D
  步骤1:R0通过SVD,得到T1,S1,D1;   步骤2:简化S1,把对角线内比1小的值都替换成0,把对应整体为0的列与行删掉,从而取维数是S的对角矩阵;
  步骤3:基于S,简化T1,D1,继而取得T,D,则有R=TSD,并且R≈R0;
  步骤4:计算S平方根取得[S12];在计算T,D取得[TS12,S12D]。
  通过上述的算法能够构成准确度高的最近邻居以及对应的top-N推荐集;相应的项矩阵是[S12D],其规模是S×N。
  (2)协同过滤推荐算法优化
  通过上述矩阵简化,算法在查找相似用户与项目方面的效率更高,但是简化矩阵过后的用户量就会变得更加稀缺。基于这样的状况,在协同过滤算法基础上加入了KNN与RkNN,解决了矩阵稀缺以及相似用户寻找困难等问题。
  赋予数据集S,D(p,q)是p,q两点间的距离,计算RkNN的值,
  输入:基于用户的评分矩阵A(m,n),项目j,用户i
  输出:i在j的预测评分
  步骤1: 在A(m,n)内计算用户i和另外用户的相似程度,加入距离矩阵D;
  步骤2:用户i,基于距离矩阵D,寻找到i相近的序列,取得最近邻列表KNN;
  步骤3:距离矩阵D进行扫描,用户i找到最近邻序列,取得最近邻列表RkNN;
  步骤4:最近邻-相似性列表KNN与RkNN当中分别取前K个项;
  步骤5:基于推荐产生式,计算用户i在项目j当中的预测评分P。
  (3)基于SVD的协同过滤推荐算法
  步骤1:计算[TS12(m,k)]与[S12D(k,n)],设为A、B,其中[TS12(m,k)]与[S12D(k,n)]是项目相关矩阵;
  步骤2:在[A(m,k)],[B(k,n)]中计算[DA],[DB]并计算用户相似度,其中[DA],[DB]是用户距离矩阵;
  步骤3:i,在[DB]里找到i的kNN以及RkNN,计算这部分用户所浏览过的项目集,然后从这些项目集当中删除被i浏览过的项目集,从而得到[Su],其中i是用户,[Su]