IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]SVD推荐算法(一)

    linger2012liu发表于 2015-04-24 20:12:52
    love 0
    SVD推荐算法(一)

    看了不少论文,总结起来用SVD做推荐主要有两种不同的方式。

    1 本质上是memory-based,只不过先用SVD对user-item的评分矩阵做降维,得到降维后的user特征和item特征,可以分别做userbased的协同过滤和itembased的协同过滤。

    2 本质上是model-based,跟传统数学意义的SVD没有太大关系,只不过借鉴了SVD分解R=U*S*V这个形式,通过最优化方法进行模型拟合,求得R=U*V。

    本文主要讲解第一种情况,第二种情况下次再讲。

    可以参考的论文:

    《Applying SVD on Generalized Item-based Filtering 》

    《Application of Dimensionality Reduction in Recommender System -- ACase Study》

    memory-based的userbased和itembased关键点之一,是user相似度和item相似度的计算。

    而相似度的计算依赖于特征。

    最原始的做法,一个user的特征就是她对所有item的打分,而一个item的特征就是所有user对她的打分。

    在数学意义上,SVD是这样子的,一个M*N矩阵的R可以分解成为三个矩阵相乘的形式,

    R=U*S*V

    (U是M*M矩阵,S是M*N的对角矩阵,V是N*N的矩阵)。

    这是严格相等的。

    S的对角元素称之为奇异值。

    如果我们减少奇异值的数量,可以得到一个逼近相等的分解。

    R约等于U*S*V

    (U是M*k矩阵,S是k*k的对角矩阵,V是k*N的矩阵)

    于是我们可以拿这个维度减少的U作为user特征,

    V作为item特征。

    然后拿这些降维后的特征去计算相似度。

    然后又有人发现,我们上面的R其实是用0来填补那些未知评分的,感觉这样不太好。因为未知评分可能是高分,可能是低分。直接用0来填补就表示低分了。然后提出了一种填补缺失评分的方法,使得更加合理一些。先用该item的平均打分作为所有没有对item打分user的评分,得到一个填充矩阵,然后对于每个user,该user的对所有item的打分减去该user已知打分的平均值。得到这个矩阵后,再做SVD分解,再利用新特征做相似度计算。

    最后再用userbased或者itembased预测评分。

    参考资料:

    Applying SVD on Generalized Item-basedFiltering

    http://www.tmrfindia.org/ijcsa/v3i34.pdf

    Application of Dimensionality Reduction inRecommender System -- A Case Study

    http://ai.stanford.edu/~ronnyk/WEBKDD2000/papers/sarwar.pdf

    A Singular Value Decomposition Approach ForRecommendation Systems

    http://blog.csdn.net/yuzhongchun/article/details/40779371

    SVD 笔记

    http://my.oschina.net/zenglingfan/blog/178906


    本文作者:linger

    本文链接:http://blog.csdn.net/lingerlanlan/article/details/45250805






沪ICP备19023445号-2号
友情链接