写这篇文章的目的就是为了记录自己在学习数据挖掘中利用矩阵(Matrix)和协同过滤(Collaborate Filtering)的一些学习笔记,不然就怕自己忘记掉了。
- 目录
- 1.SVD是个啥(What is SVD?)
- 2.SVD中的Factor在协同过滤矩阵中意味着什么(What are factors?)
- 3.协同过滤矩阵中的空白是怎么被填实的(What is the relationship between Matrix and SVD?)
- 4.SVD协同过滤矩阵怎么样效果才会最好?(What is best)
1.SVD是个啥
定义
简单的讲就是把一个A=m*n的矩阵分解成3个部分 U=m*r,Σ=r*r,V=r*n
SVD
其中r为matrix的秩,秩是用来能压缩空间维度的最小的单位,因为这不是这篇文章的重点,大家可以看看知乎上别人写的:如何理解矩阵的「秩」
应用
exp1.
如果A是一个文章*词汇的矩阵,那么三个分解后的矩阵就是U(文章*主题),Σ(主题*主题),V(主题词汇),其中Σ是一系斜对角线的数,数的大小代表这个主题是否有代表性。这里的主题代表文章的主题,比如武侠,言情等。
exp2.
如果A是一个用户*电影的矩阵,那么三个分解后的矩阵就是U(用户*主题),Σ(主题*主题),V(主题电影),这里的主题代表电影的主题,比如恐怖片,爱情片等。
2.SVD中的Factor在协同过滤矩阵中意味着什么
在SVD中,我们把一个A=m*n的矩阵分解成3个部分 U=m*r,Σ=r*r,V=r*n。
相同的在协同过滤矩阵中我们也把一个用户*电影的矩阵分解成三部分P=m*f, Σ=f*f, Q=f*n
但是,在协同过滤矩阵中 f 并不等于r,在协同过滤中f 的范围为[r,n]。我的理解就是可以分为f个主题,最少的主题数为r,最多的主题数为n
未完待续
参考资料:
1.David Jurgen的PPT(SI671课程资料)
2.Surprise的官网