主要内容

svdsketch

计算低秩矩阵的奇异值分解示意图

描述

例子

(U,年代,V)= svdsketch (一个)将奇异值分解)输入矩阵的低秩矩阵草图一个。矩阵低秩近似的草图是一个只反映了最重要的特性一个(公差),使更快的计算部分大型矩阵的奇异值分解而使用圣言会

例子

(U,年代,V)= svdsketch (一个,托尔)指定一个对矩阵草图。svdsketch使用托尔自适应确定矩阵的秩素描近似。公差变大,更少的特点一个用于矩阵草图。

例子

(U,年代,V)= svdsketch (一个,托尔,名称,值)与一个或多个指定附加选项名称,值对参数。例如,您可以指定“MaxIterations”和一个标量调整使用的迭代数量形成矩阵草图。

例子

(U,年代,V,apxErr)= svdsketch (___)此外返回一个向量apxErr在每个迭代中包含相对近似误差,规范(U * * V”- A,“来回”)/规范(A,“来回”)。中的最后一个条目的向量apxErr(结束)是返回的输出的相对近似误差svdsketch

例子

全部折叠

使用svdsketch计算一个低秩矩阵的奇异值分解因素近似。

使用画廊创建一个200 -,- 200随机矩阵与几何分布的奇异值。

一个=画廊(“randsvd”,200);

使用svdsketch计算的低秩近似的圣言一个

[U, V] = svdsketch(一个);

检查输出的大小。

大小(年代)
ans =1×2120 120

结果表明,低秩矩阵的近似一个排名120。

指定一个宽容与svdsketch计算一个低秩矩阵的奇异值分解因素近似。svdsketch自适应确定适当的矩阵的秩素描基础上指定的公差。

使用画廊创建一个200 -,- 200随机矩阵与几何分布的奇异值。

一个=画廊(“randsvd”,200);

使用svdsketch计算的低秩近似计算指定公差1)依照,发现输出的大小年代确定等级svdsketch使用矩阵的草图。

托尔= 1飞行;[U, V] = svdsketch (A, tol);大小(年代)
ans =1×260 60

结果表明,低秩矩阵的近似一个有一个60。

检查矩阵近似草图一个通过比较一个U * * V”

规范(U * * V”——一个,“摇来摇去”)/规范(,“摇来摇去”)
ans = 0.0048

结果表明,近似矩阵草图一个在指定的公差1)依照

使用svdsketchMaxSubspaceDimension选择一个矩阵上慢慢腐烂的奇异值。你可以使用这个选项svdsketch使用功能的一个子集一个在矩阵草图。

创建一个5000 -,- 5000矩阵值来自标准正态分布。视图矩阵奇异值的分布。

一个= randn (5000);semilogy计算(一)“o”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

由于奇异值一个慢慢地腐烂,一个有许多重要的功能,不适合低秩近似。形成一个矩阵草图,相当接近一个,大部分或几乎所有的特性需要被保留下来。

使用svdsketch在矩阵的宽容1 e-5。指定四个输出返回圣言因素以及相对近似误差在每个迭代中。

托尔= 1 e-5;[U1, S1, V1, apxError1] = svdsketch (A, tol);大小(S1)
ans =1×25000 5000

的大小年代表明满足公差,svdsketch需要保留的所有特性一个。对于大型稀疏矩阵输入,这可以呈现低秩近似以来的内存问题一个形成的svdsketch大概是一样的尺寸吗一个在内存中,因此可能不适合作为一个稠密矩阵。

检查输出的近似误差。自svdsketch保存的一切一个计算,计算的答案是准确的,但只是一个昂贵的计算方法圣言(X)

apxError1(结束)
ans = 1.9075 e-08

现在,做同样的计算,但指定MaxSubspaceDimension650年限制用于素描的子空间的大小一个。这是有用的力量svdsketch只使用功能的一个子集一个形成矩阵草图,减少输出的大小。

(U2, S2, V2, apxError2) = svdsketch(托尔,“MaxSubspaceDimension”,650);大小(S2)
ans =1×2650 650

输出现在有一个更小的尺寸。

检查新输出的近似误差。迫使输出更小的权衡是许多重要特征矩阵需要省略的草图,以及由此产生的排名650的近似一个不符合指定的公差。

apxError2(结束)
ans = 0.8214

输入参数

全部折叠

输入矩阵,指定为一个稀疏或完整矩阵。一个通常,但并非总是如此,一个大的和稀疏矩阵。svdsketch最适合操作rank-deficient矩阵有相对较少的特点。

数据类型:|
复数的支持:金宝app是的

矩阵素描宽容,指定为一个真正的数字标量范围√eps(类(A)) < = tol < 1

svdsketch使用的价值托尔自适应地确定哪些特性一个使用的低秩近似(矩阵草图)一个。的价值托尔的增加,svdsketch使用更少的特点一个形成了矩阵草图。

例子:[U, V] = svdsketch(军医,1)

数据类型:|

名称-值参数

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:(U, V) = svdsketch (A - 1平台以及MaxIterations, 100)使用100的迭代svdsketch算法。

最大的子空间维数,指定为一个正整数标量。子空间维数控制的内存消耗svdsketch算法。如果算法耗尽内存指定公差,然后你就可以指定一个较小的值MaxSubspaceDimension因此,算法保持在内存中。例如,调整该参数时是非常有用的一个奇异值,衰减缓慢。

当你指定MaxSubspaceDimension选项,设置一个最大值的秩矩阵所使用的草图svdsketch。因此,如果svdsketch不能满足指定的公差等级小于MaxSubspaceDimension,它使用的最大允许排名,以及由此产生的输出可能不满足指定的公差。

例子:(U, V) = svdsketch (1 e, MaxSubspaceDimension, 150)

数据类型:|

最初的算法的块大小,指定为一个正整数标量。的块大小是增加每个迭代矩阵的秩草图。一个更大的块大小减少了所需的迭代的数量每迭代通过做更多的工作,但是也可能添加更多的信息比是必要的计算达到收敛。

随着算法的进行,svdsketch可能会调整块大小的初始值来加速收敛,如果相对近似误差apxErr不是腐烂的速度不够快。

如果您指定BlockSize值应该小于MaxSubspaceDimension

例子:(U, V) = svdsketch (1 e, BlockSize, 10)

数据类型:|

最大数量的算法迭代,指定为一个正整数标量。更多的迭代可以产生高质量矩阵素描的成本更多的执行时间和更高的内存消耗。

例子:(U, V) = svdsketch (1 e, MaxIterations, 25)

数据类型:|

权力的迭代次数,指定为非负整数标量。权力迭代改进的正交性UV输出。你通常会选择权力的迭代次数0,1,或2较大的值可以不利导致舍入误差。

例子:(U, V) = svdsketch (1 e, NumPowerIterations, 2)

数据类型:|

输出参数

全部折叠

左奇异向量矩阵草图,作为一个矩阵返回。的列U是正交的,它们形成的一组基向量矩阵的范围的草图吗一个

的大小U取决于的价值托尔。作为托尔变大,svdsketch使用更少的特征输入矩阵形成矩阵草图,UV列也较少。

不同的机器和MATLAB版本®仍然可以产生不同的奇异向量数值准确。对应的列UV可以翻转他们的迹象,因为这并不影响表达式的值一个= U * * V '

矩阵的奇异值素描,作为一个正方形对角矩阵返回。的对角元素年代是严格正矩阵的奇异值以减少顺序示意图。

的大小年代取决于的价值托尔。随着耐受性的增加,svdsketch使用更少的特征输入矩阵形成矩阵草图,年代少了相应的行和列。

右奇异向量矩阵的草图,作为一个矩阵返回。的列V是正交的,它们形成的一组基向量矩阵的零空间的草图吗一个

的大小V取决于的价值托尔。作为托尔变大,svdsketch使用更少的特征输入矩阵形成矩阵草图,UV列也较少。

不同的机器和MATLAB版本仍然可以产生不同的奇异向量数值准确。对应的列UV可以翻转他们的迹象,因为这并不影响表达式的值一个= U * * V '

相对近似误差在每个迭代中,作为一个向量返回。的长度apxErr等于迭代中使用的数量svdsketch算法。使用MaxIterations调整的迭代次数。

的条目apxErr在每个迭代中都相对近似错误,规范(U * * V”- A,“来回”)/规范(A,“来回”)。中的最后一个条目的向量apxErr(结束)是返回的输出的相对近似误差svdsketch

提示

  • 使用svdsketch当你不知道提前指定的等级圣言会,但你知道宽容的近似计算应该满足。

  • 圣言会计算最好的k位近似值的计算(使用默认值“最大”方法)。svdsketch并不能保证其k位近似是最好的一个,占其速度优势圣言会

算法

svdsketch一个公差适用于形成一个低秩矩阵近似 一个 B 输入矩阵的一个。这个低秩近似被称为矩阵草图。矩阵素描只保留了重要的功能一个、过滤不必要的信息。相对近似误差apxErr矩阵的素描旨在满足指定的公差托尔:

e 草图 = B 一个 F 一个 F t o l

这个过程svdsketch遵循形成矩阵草图:

  • svdsketch迭代矩阵形式示意图,每个迭代添加新列和新行B。行和列是由提取的新特性一个使用一个随机样本矩阵。你可以控制行和列的数量在每一次迭代BlockSize名称-值对。

  • 在每一次迭代,svdsketch使用电力的迭代来提高新列的正交性。你可以调整电源的迭代的数量NumPowerIterations名称-值对。

  • 迭代矩阵形成草图停止时:列的数量和行B达到指定的值MaxSubspaceDimension的迭代次数达到MaxIterations或相对近似误差收敛(apxErr < =托尔)。

  • 为了提高收敛速度,svdsketch可能增加指定初始值BlockSize从迭代到迭代如果衰变apxErr是不够的。

在矩阵草图 一个 B 形成,svdsketch计算奇异值分解)通过矩阵的草图[U1, S, V] =圣言(B,“经济学”),这样

一个 B = ( U 1 ) 年代 V H = U 年代 V H

如果svdsketch可以过滤掉一些功能的一个根据指定的公差,那么由此产生的计算因素包含更少的奇异值和奇异向量比执行一个完整的圣言一个

引用

[1],文剑,于古,和李Yaohang。“有效的随机算法Fixed-Precision低秩矩阵近似。”暹罗《矩阵分析和应用程序39岁的没有。3(2018年8月):1339 - 1359。https://doi.org/10.1137/17M1141977

扩展功能

介绍了R2020b