SVD在推荐系统中的应用
来源:互联网 发布:牛排做法 知乎 编辑:程序博客网 时间:2024/05/18 02:39
%svd chengxu A = [5 5 0 5;5 0 3 4; 3 4 0 3; 0 0 5 3; 5 4 4 5; 5 4 5 5];A = A';[U S V] = svd(A);U = U(:,1:4);S = S(1:4,1:4);V = V(:,1:4);reA = U*S*V';%give one new userbob = [5 5 0 0 0 5];uservector = bob*V*S;for i = 1:1:size(A,1) temp = U(i,:); similarity = temp*uservector'/(sqrt(temp*temp')*sqrt(uservector*uservector')); userlist(i) = similarity;endrank = sort(userlist);l = size(rank,2);t = zeros(1,size(A,2));for i=l:-1:l-1 indx = find(rank(i)==userlist); sim = rank(i); t = t + A(indx,:)*sim;endindex = find(bob==0);rank = t(index);rank
matlab的代码很简单,因为有现场的svd函数可以使用
首先进行svd分解,之后我们会得到U,S,V三个矩阵
个人是这么理解的
如果在最初的矩阵中:列代表item而行代表了user
那么u则代表了user和中间量的关系,V代表了item与中间量的关系
S代表了不同中间量在期中所占的比重,或者是贡献。
这个中间量,我们可以理解为是item和类别,例如电影我们可以分为喜剧或者等等。
这就产生了一个附带产品
我们可以根据U和V对user和item进行聚类。这个以后再说
下面我们来了一个新的用户,我们知道它的一些信息,
那么,我们可以通过V和S把用户的信息映射到U相同的平面
然后计算新用户和Old user的相似度
通过老用户对item的兴趣,计算新用户对没有见过的item的兴趣程度
对这个结果rank后,即使最终推荐的顺序。
参看:
http://blog.csdn.net/abcjennifer/article/details/8131087
- SVD在推荐系统中的应用【推荐】
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- SVD在推荐系统中的应用
- svd在推荐系统中的应用
- mac共享无线网
- C primer plus第五版第十七章film2.c的一个错误
- org.hibernate.InvalidMappingException: Could not parse mapping document from resource
- Objective-C语法快速参考
- android 设置系统屏幕亮度
- SVD在推荐系统中的应用
- Java集合类01
- 程序员面试中什么最重要?
- ubuntu安装配置Mysql
- 有关全屏手写
- Php魔术常量
- FastReport 程序员手册
- 苦逼的程序员
- 防火墙开发硬件选型