dask.array.linalg.svd_compressed

dask.array.linalg.svd_compressed

dask.array.linalg.svd_compressed(a, k, iterator='power', n_power_iter=0, n_oversamples=10, seed=None, compute=False, coerce_signs=True)[源代码]

随机压缩的秩-k 薄奇异值分解。

这计算了一个大型数组的近似奇异值分解。此算法通常比普通算法更快,但不提供精确结果。可以通过输入参数在性能和准确性之间进行权衡(见下文)。

参数
a: 数组

输入数组

k: int

所需薄SVD分解的秩。

迭代器: {‘power’, ‘QR’}, 默认=’power’

定义用于迭代的技术以处理平坦的奇异谱或当输入矩阵非常大时。

n_power_iter: int, default=0

功率迭代次数,当奇异值衰减缓慢时很有用。误差随着 n_power_iter 的增加呈指数级减少。在实践中,设置 n_power_iter <= 4。

n_oversamples: int, 默认=10

用于生成采样矩阵的过采样数量。此值增加了计算的子空间的大小,这在提高准确性的同时牺牲了效率。然而,结果对这一选择通常不敏感,在实践中,值为10通常已经足够高。

计算布尔

是否在每次使用时计算数据。在执行多次传递时重新计算输入可以减少内存压力,但这意味着我们必须多次计算输入。如果数据大于内存且易于重新创建,这是一个不错的选择。

强制符号布尔

是否对奇异向量应用符号强制,以通过默认的 True 来保持确定性结果。

返回
u: 数组, 酉 / 正交
s: 数组,按降序排列的奇异值(最大的在前)
v: 数组, 单一 / 正交

参考文献

N. Halko, P. G. Martinsson, and J. A. Tropp. Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions. SIAM Rev., Survey and Review section, Vol. 53, num. 2, pp. 217-288, June 2011 https://arxiv.org/abs/0909.4061

示例

>>> u, s, v = svd_compressed(x, 20)