在推荐领域,我们为了捕捉更多隐含特征,需要对用户-物品共现矩阵进行分解,对矩阵分解的方法主要有三种:
- 特征值分解(Eigen Decomposition)
- 奇异值分解(Singular Value Decomposion)
- 梯度下降(Gradient Descent)
如果使用特征值分解,前提要求是待分解矩阵为方阵,在真实情况中显然是不适用的。
对于奇异值分解,存在共现矩阵M(m,n),我们可以将其分解成:
其中 U UU 是(m,m)的正交矩阵,V VV 是(n,n)的正交矩阵,Σ \SigmaΣ 为(m,n)的特征值矩阵
虽然这个方法可以将我们的特征矩阵进行分解,但是会存在两个问题:
- 奇异值分解要求共现矩阵是稠密的,但是在大多数场景下,用户的行为历史很少,所以用户-物品的共现矩阵是非常稀疏的,大多数的值都为0,表示未交互,所以不适宜使用奇异值分解,如果一定要使用,那么在使用之前需要对稀疏矩阵进行填补,如果填补不当会进行干扰原数据,导致数据质量下降
- 传统奇异值分解的计算复杂度达到了 O ( m n 2 ) O(mn^2)O(mn2) 的级别,这对于商品数量几百万,用户数量几千万的互联网场景来说几乎是不能够接受的,因为工程开销过于巨大