我将 SVD 包与 R 一起使用,我可以通过将最低奇异值替换为 0 来降低矩阵的维数。但是当我重新组合矩阵时,我仍然具有相同数量的特征,我无法找到如何有效删除源矩阵中最无用的特征,以减少其列数。
例如我现在正在做的事情:
这是我的源矩阵 A:
A B C D
1 7 6 1 6
2 4 8 2 4
3 2 3 2 3
4 2 3 1 3
Run Code Online (Sandbox Code Playgroud)
如果我做:
s = svd(A)
s$d[3:4] = 0 # Replacement of the 2 smallest singular values by 0
A' = s$u %*% diag(s$d) %*% t(s$v)
Run Code Online (Sandbox Code Playgroud)
我得到 A',它具有相同的尺寸(4x4),仅用 2 个“组件”进行重建,并且是 A 的近似值(包含较少的信息,可能较少的噪声等):
[,1] [,2] [,3] [,4]
1 6.871009 5.887558 1.1791440 6.215131
2 3.799792 7.779251 2.3862880 4.357163
3 2.289294 …Run Code Online (Sandbox Code Playgroud) r feature-extraction svd dimensionality-reduction matrix-factorization