在 Matlab 中确定 SVD 后 U 矩阵的“最大”奇异向量

Posted

技术标签:

【中文标题】在 Matlab 中确定 SVD 后 U 矩阵的“最大”奇异向量【英文标题】:Determine the 'greatest' singular vector of U matrix after SVD in Matlab 【发布时间】:2016-10-16 12:38:51 【问题描述】:

已知在Matlab SVD函数输出三个矩阵:[U,S,V] = svd(X)。 实际上,“U”是一个 m X m 方阵,其中 m 是行数/列数。此外,“S”是一个维度为 m X n 的非方阵,它按降序(对角线)存储 n 个奇异值(由 U 矩阵的左奇异向量产生)。

我的问题是如何确定(在 Matlab 中)矩阵“U”的哪些“m”奇异向量对应于“S”矩阵的第一个(最大)奇异值。此外,特定奇异向量的一些值是正的,而另一些是负的。这个减号或加号是否隐藏了任何数学含义?我已经看到使用“最大”奇异向量的符号作为分类目的的示例。

【问题讨论】:

【参考方案1】:

S 矩阵的对角线包含奇异值。所以对于第i个奇异值(在S矩阵的第i,i个位置),第i列的U和V向量分别为两个约束方程。

我不认为 +/- 隐藏任何特殊含义。毕竟,您可以将 U 和 V 矩阵都乘以 -1 常数,结果仍然有效。

【讨论】:

【参考方案2】: 为了完全准确,根据定义,SVD 的奇异值不必重新排序,但 MATLAB SVD 会重新排序。

U 的第 i 列对应于 M 的第 i 个奇异值。 即对于第 i 个奇异值 sigma_j,存在 j 使得

M* .u_i = sigma_j v_j

你也有

M. v_j = sigma_i u_i

请注意,它可能不是您想要的。

奇异值的坐标是原始基础中的坐标。正值意味着您的新变量与相应的原始变量成正比。在统计中,当您知道原始变量和转换后的变量同时增加或减少时,通常会使用它。

【讨论】:

以上是关于在 Matlab 中确定 SVD 后 U 矩阵的“最大”奇异向量的主要内容,如果未能解决你的问题,请参考以下文章

python numpy svd

在matlab中使用mex + armadillo时pinv返回svd失败

奇异值分解(SVD)

Matlab中求解矩阵的奇异值

算法杂记-SVD,PCA和KPCA

矩阵奇异值分解SVD