CUR矩阵分解
简单回顾一下SVD分解
提到矩阵分解,相信大家最熟悉的一定是SVD分解,但是SVD分解有两个缺点:
- 可解释性较差:对于SVD分解,大家通常的理解应该是,左奇异向量以及右奇异向量分别张成了原始矩阵所在的列空间以及行空间,但是对于原始矩阵而言,并没有较强的可解释性。
- 太过密集:就算原始矩阵是一个稀疏矩阵,该矩阵所分解而成的U、V矩阵仍然是高度密集的,这在某些应用场景下是难以接受的。
与SVD相比,CUR分解的可解释性大大加强了。
CUR矩阵分解
对于一个矩阵 A ,我们能否将它分解为 只包含 A 中的一些行和列的组合呢?
更具体地讲,对于一个秩 k 矩阵 A ,如果我们选择其中 k 列张成矩阵 A 的列空间,选择其中 k 行张成矩阵 A 的行空间,那么我们也应该能够通过组合这些线性映射来恢复原矩阵。
定理: 对于A∈Km×nA\in K^{m\times n}A∈Km×n, rank(A)=krank\left( A \right) = krank(A)=k,并且有 I⊂[m]I\subset \left[ m \right]I⊂[m] , J⊂[n]J\subset \left[ n \right]J⊂[n], ∣I∣=t≥k\left| I \right| = t \geq k∣I∣=t≥k, ∣J∣=s≥k\left| J \right| = s \geq k