上下文是我有一个大矩阵,20K * 50K,我想降低维度。在 R 中,不可能应用具有比观察值(行)更多的变量(列)的 PCA。因此,我尝试使用此矩阵进行部分 SVD,例如,我计算前 100 个左右奇异向量。但是有了这些奇异向量,我怎样才能获得新的数据。例如,对于 PCA,我们有计算新转换坐标系中分数的载荷,我们可以用 SVD 做同样的事情吗?
感谢您的友好回复!
上下文是我有一个大矩阵,20K * 50K,我想降低维度。在 R 中,不可能应用具有比观察值(行)更多的变量(列)的 PCA。因此,我尝试使用此矩阵进行部分 SVD,例如,我计算前 100 个左右奇异向量。但是有了这些奇异向量,我怎样才能获得新的数据。例如,对于 PCA,我们有计算新转换坐标系中分数的载荷,我们可以用 SVD 做同样的事情吗?
感谢您的友好回复!
假设您的数据矩阵是, 在哪里是数据点的数量,并且是数据的维度。让 SVD是
为简单起见,假设组成的数据点没有被翻译(例如,如果你通常减去平均值,假设它为零)。此外,假设奇异值从左到右按递减顺序排列。让是由最左边组成的矩阵列(即,左奇异向量对应于最大奇异值)。然后 PCA 定义了以下变换:
如果您按一个点翻译所有数据, 只需替换在上面的列表中带有表达式, 相同的表达式将成立。
签出 gensim,潜在语义分析是迭代 SVD 的语言学代码字领域。