深度学习-推荐系统 第一章研读笔记(4)

139 阅读2分钟

引言

  • 本文继续介绍推荐系统研读笔记,紧接上次文章的特征值分解法,本文将介绍一个更为常用的方法-SVD分解法

2 SVD奇异值分解

  • 注:正交矩阵,即一个n阶矩阵满足该矩阵乘以该矩阵结果为单位矩阵,则该矩阵为正交矩阵(T表示转置),公式表达是:

    • 或者ATA=E或者AAT=E
  • SVD的表达式为:

A=UΣVT(2.1)A = UΣV^{T}\tag{2.1}

pic1.zhimg.com/80/v2-bd3e0…

  • 假设A是一个M* N的矩阵,那么得到的U是一个M* M的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个M * N的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量)如上图
  • 那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 A^T ,将会得到一个方阵,我们用这个方阵求特征值可以得到:
(ATA)vi=λivi(2.2){(A^TA)}v_{i} = \lambda_{i}{v}_{i} \tag{2.2}
  • 这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到
σi=λi(2.3)\sigma_{i} = \sqrt{\lambda_{i}}\tag{2.3}
μi=1σiAvi(2.4)\mu_{i} = \frac{1}{\sigma_{i}}Av_{i}\tag{2.4}
  • 这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
AmnUmrΣrrVrnT(2.5)A_{m*n} \thickapprox U_{m*r}Σ_{r*r}V_{r*n}^{T}\tag{2.5}
  • r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子: pic1.zhimg.com/80/v2-1d071…

  • 右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。

  • 关于数学部分的推导就到此为止,个人数学功底有限。

  • 参考博客

  • 奇异值分解的缺点

    • 奇异值分解需要原始的共现矩阵是稠密的,但是互联网场景下大部分用户的行为历史都是非常少的,也就是共现矩阵比较稀疏,所以如果在该场景下使用需要进行太南充
    • 奇异值分解的计算复杂度太高,而互联网的数据场景动辄百万千万,计算成本太高。因此衍生出最后一个最常用算法