SVD推荐算法(一),SVD算法(


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



 


相关内容