参考论文:Using Singular Value Decomposition Approximation For Collaborative Filtering
背景:
m-n矩阵是一个打分矩阵,m是用户的数量,n为项目的数量,Ai,j表示用户i对项目j的评分情况。矩阵A一般存在两个问题。
1> 矩阵A通常非常的庞大,m、n可能有上百万或者是上亿的数量级
2> 矩阵A是一个非常稀疏的矩阵
所以我们希望可以定义一个低维矩阵X,实际上是一个线性模型,可以近似的接近矩阵A。我们通常会假设Aij = Xij+error,而error服从均值为0,标准差为
所以有
所以在给定Xi,j条件下,Ai,j的似然函数为:
我们假定 是相互独立的,则有:
我们要极大化logPr(A|X),其实就是最小化
我们可以通过极小化上面的式子找到这样的一个低维矩阵X,使得可以近似A,这就转换为最小二乘法,可以用SVD来解决此类问题,如果A被分解为了