一种推广的CUR矩阵分解算法讲解Word下载.docx
- 文档编号:14408547
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:13
- 大小:1.07MB
一种推广的CUR矩阵分解算法讲解Word下载.docx
《一种推广的CUR矩阵分解算法讲解Word下载.docx》由会员分享,可在线阅读,更多相关《一种推广的CUR矩阵分解算法讲解Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
1.引言
在当今社会,随着股票、基因、网络文件、图象和视频的发展,从中提取的矩阵正日益变得庞大,这无疑给现有的数据分析带来新的挑战。
而目前已开展的大部分工作主要专注于操作、理解以及翻译大型矩阵。
在许多情况下,矩阵分解主要用于将矩阵分解为带有压缩式和信息性的矩阵,以便于计算与处理。
一个基本的方法就是奇异值分解,该方法是对数据矩阵进行分解的最低秩逼近。
例如奇异值分解在特征脸[20、21]和潜在语义分析[4]中的应用已被证明它是一种非常成功的算法。
然而,由奇异值分解产生的基向量几乎没有任何实际意义,这使得我们理解和翻译数据矩阵变得很困难。
在参考文献[10、19]中给出的例子很好的证明了这一观点,即向量{1/2(年龄),1/√2(高度),1/2(收入)}是取自人体特征的数据集,它表示的是人体显著的不相关外貌特征的总和,它并不是人体特有的信息。
参考文献[17]的作者也声称:
“试着去研究一种对任何实验向量都能够找出它们基向量的方法将会是一件很有趣的事情,当然,前提是必须使用实际数据向量而不是人工向量,因为人工向量几乎没有什么意义。
”因此,对于一个列数较小或者行数较小的矩阵,如果能够找出一种能够近似代替它的矩阵的方法,那将是很有意义的。
CUR矩阵分解便给出了这一方法,并且我们已经证明了它在高维数据分析中是一种很有用的方法,具体证明请参考[19]。
给定矩阵A,利用CUR分解,从A的列向量中选定适当的子集构造出矩阵C,再从A的行向量中选定适当的子集构造出矩阵R,最后通过A=CUR选出最佳近似矩阵U.典型的CUR分解算法是通过两个阶段来完成的,第一阶段是列向量选择阶段,第二阶段是行向量选择与列向量选择同时进行。
因此,第二阶段比第一阶段更加复杂。
CUR矩阵分解问题在参考文献[7,8,9,10,12,13,16,18,19,22]中研究的比较广泛。
其中研究最广泛而且最著名的应该是[10],[10]中的作者设计了一种随机CUR分解算法,又名“子空间采样算法”。
特别值得注意的是,该算法在高概率条件下具有的相对误差率。
不幸的是,所有现存的CUR分解算法都要求矩阵具有大量的列数和行数,并且列数与行数充分接近。
例如,设为矩阵,,子空间采样算法要想在高概率条件下使结果达到的相对误差率,必须要求矩阵具有或的行数。
并且该算法的计算次数至少都得是的奇异值分解的计算次数,即因此该算法不太适用于大型矩阵。
在本文中,我们提出了一种新的CUR分解算法,该算法无论在理论上还是在实际中都优于子空间采样算法。
特别的,我们在定理5中证明了这种新颖的随机CUR分解算法具有比子空间采样算法更低的时间复杂度和更紧缩的理论误差限的结论
本文的其余部分安排如下:
第三部分介绍了几种现存的列选择算法和子空间采样算法;
第四部分介绍和分析了我们新提出的CUR算法;
第五部分则通过实验,对比了我们提出的新CUR算法与子空间采样算法的优缺点。
2.符号说明
对于矩阵,设表示矩阵的第行,表示矩阵的第列,表示的1-范数,表示的Frobenius范数,表示的谱范数。
表示阶单位矩阵,表示阶零矩阵,表示的奇异值分解,这里,表示对应于最大的奇异值的矩阵,我们记,表示的Moore-
Penrose广义逆。
3.相关工作
3.1节介绍了几种与本工作相关的相对误差列选择算法;
3.2节讲解了子空间采样算法;
3.3节讨论了列选择算法与CUR矩阵分解算法之间的联系。
3.1相对误差的列选择算法
给定矩阵,列选择算法就是从矩阵中选择列构造出矩阵,使得,由于矩阵的选择具有中可能,因此选择最佳的是一个比较困难的问题。
近几年中,许多多项式近似算法被提出,而我们比较感兴趣的是相对误差界的问题:
即,若从矩阵中选择列,必存在常数,使得
我们称为相对误差率。
现在我们列举一些与本文工作有关的最近研究结果。
首先,我们来介绍一项最近研究的确定性算法,称为双套稀疏化算法(参考[2,3]),我们将在引理1中给出证明。
该算法是其他更强的实用性算法的基础(引理2),并且本文提出的新CUR算法也是依赖于该算法产生。
该算法附在附录A中。
引理1(基于双套稀疏化下的列选择算法)给定矩阵,目标秩,则必存在一种确定性算法能够选出从矩阵中选择列构造出矩阵,使得
尽管一些部分奇异值分解算法(例如Krylov子空间法)只要求次计算,但他们的计算结果是不稳定的(更详细的讨论可参考[15]),并且矩阵可以通过次计算出,其中表示计算的最大正数奇异值的必要次数。
另外,在参考文献[3,5,6,10,14]中也介绍了各种随机列选择算法以期达到给定的相对误差限。
参考文献[2]提出了一种随机算法,仅需选择列就能达到预期的的相对误差率。
该算法是建立在奇异值分解的基础上,通过随机投影算法[15]、双套稀疏化算法[2]、自适应采样算法[6]得到的算法,而我们提出的CUR算法则是在该算法的基础上得到的新CUR算法。
引理2(渐进最优的列选择算法)给定矩阵,,目标秩,,则必存在一种随机算法,能够选出从矩阵中至少选择列构造出矩阵,使得
其中期望值可由矩阵给出,并且能通过次计算得出。
3.2子空间采样的CUR算法
Drineas等人在[10]中提出了一种两阶段的CUR随机算法,该算法在高概率条件下能够达到预期的相对误差限。
给定矩阵与目标秩第一阶段,从矩阵中选出(或)列构造矩阵;
第二阶段,从矩阵中选出(或)行构造矩阵的同时计算出矩阵;
概率至少应该达到,相对误差率为,计算次数主要取决于对进行奇异值分解和计算的次数。
虽然该算法是高概率下的-最佳优化,但是它仍然要求大量的行去逼近(行数的期望值至少为)。
本文试图寻找一种对行数和列数要求不多的算法。
3.3列选择算法与CUR矩阵分解算法之间的联系
CUR矩阵分解问题和列选择算法有着紧密的联系。
正如前面所提到的,现有的CUR矩阵分解算法的第一阶段仅仅是一个列选择过程。
而第二阶段更加复杂。
如果把第二阶段粗糙地认为仅仅是对作一个列选择过程,那它的相对误差率将会至少达到
对于相对误差的CUR算法,第一阶段试图构造一个的相对误差率,而第二阶段在给定的情况下试图寻找一种算法使相对误差率达到事实上,第一阶段是第二阶段当条件下的特例。
给定矩阵,如果存在一种算法能够在第二阶段使得误差界
则使用该算法对作列选择,也能够使结果具有的相对误差率。
因此,CUR分解算法的第二阶段是列选择算法的推广。
4.主要结果
本章主要介绍我们提出的新CUR分解算法,因为相比奇异值分解来说,它具有更低的时间复杂度,所以我们称之为快速CUR算法。
在算法1中我们给出其算法描述,定理5给出其相应的理论分析,其中定理5可由引理2和定理4导出,定理4则可根据定理3证明得到,定理3是参考文献[6]中定理2.1的推广,定理4是参考文献[2]中定理5的推广。
算法1(快速CUR算法)
1.输入矩阵给定矩阵,目标秩,,目标列数,目标行数;
2.第一阶段:
从矩阵中选择列构造出矩阵;
3.通过随机投影算法计算出的截断奇异值分解:
;
4.利用的列数构造出矩阵,的列数构造出矩阵;
5.利用双套稀疏化算法计算出;
6.计算,并将其赋给,然后将中所有的零列删除;
7.计算,并将其赋给;
8.计算样本概率:
9.在概率条件下,从矩阵中选择列构造出矩阵;
10.第二阶段:
从矩阵中选择行构造出矩阵;
11.利用的列构造出矩阵,再用的列构造出;
12.利用双套稀疏化算法计算出;
13.计算,并将其赋给,然后将中所有的零列删除;
14.计算,并将其赋给;
求;
15.在概率条件下,从矩阵中选择行构造出;
16.令,,
4.1自适应采样算法
相对误差的自适应采样算法是建立参考文献[6]中的定理2.1条件下得出来的。
该算法的基础叙述如下:
通过任意算法从中选择一定比例的列构造出矩阵后,再根据余矩阵,利用随机采样算法选择出额外的列。
Boutsidis等人利用自适应采样算法减少了双套稀疏化算法得到的残余量,并且使结果达到了的相对误差率。
在这里我们为自适应采样算法证明出了一个新的误差界。
更有趣的是,该误差界就是参考文献[6]的定理2.1中所提到的那个误差界的一个推广。
换句话说,参考文献[6]的定理2.1就是下面定理令时的一个直接的推论。
定理3(自适应采样算法)给定矩阵,,并且满足,令是由的行构成的矩阵,定义余矩阵,另外,定义我们再从选择出额外的行,并且在每次选择过程中,第行被选择的概率应该为设是由这行构成的矩阵,令,则以下不等式成立:
这里的期望可由给出。
4.2快速CUR算法
建立在由引理1导出的双套稀疏化算法和由定理3导出的自适应采样算法的基础上,我们发展出了一种随机算法用于解决CUR分解的第二阶段问题。
我们在定理4中给出了这一算法的结果。
参考文献[2]中的定理5是下面定理当时的一个特例。
定理4(快速行选择算法)给定矩阵,,并且满足,目标秩,随机算法要求从矩阵中选出行构造矩阵,使得
这里的期望值可由矩阵给出,并且矩阵可通过次计算得出。
建立在引理2和定理4的基础上,这里我们为快速CUR算法给出以下定理。
定理5(快速CUR算法)给定矩阵,正整数,在算法1中我们已经描述过,借用引理2中的渐进最优列选择算法,我们可以从矩阵中选出列构造出矩阵,然后借用定理4的快速行选择算法可从矩阵中选出行构造出矩阵,则可得出
并且,该算法的耗时为
由于根据假设,所以快速CUR算法的时间复杂度低于的奇异值分解的时间复杂度。
这也是为什么我们称之为快速CUR算法的原因。
快速CUR算法的另外一个优点是避免了将矩阵载入主内存,而其他三种算法-随机奇异值分解算法、双套稀疏化算法以及自适应采样算法-都要求将矩阵载入主内存。
快速CUR算法中最耗内存的过程是计算矩阵和的Moore-Penrose广义逆,在此过程中要求计算机给出一个矩阵和矩阵的内存空间。
对比要求在计算机中载入整个矩阵的自适应采样算法,快速CUR算法显得更优。
5.实证比较
本章我们利用现实中的几组数据对这些CUR分解算法进行了相对误差的实证比较。
并且我们给出了每一数据下各种算法的相对误差率和耗时。
其中相对误差率通过以下等式定义
相对误差率=
这里的表示给定的目标秩。
在这里,我们通过三组数据进行了实验。
包括自然图片、生物数据和文件包。
表1简要地总结了这些数据的一些信息。
Redrock是一张比较大的自然图片,Arcene和Dexter都来自于参考文献[11]中的UCI数据,Arcene是一组附有900个实例和10000种属性的生物数据,Dexter是一个附有20000词汇和2600个文件的文件包。
每一组数据都是以矩阵的形式给出,我们分别对它们进行CUR分解。
在Matlab7.10.0中我们实现了所有算法,操作平台是在一个12IntelXeon3.47GHzCPUs,12GB内存,andUbuntu10.04的系统上进行的。
根据参考文献[10]的分析,本文中的是一个远远小于和的正整数。
对于每一组数据、每一个算法,我们设定,其中的范围将会在每一次实验中给出。
我们对每一组数据进行20次实验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 推广 CUR 矩阵 分解 算法 讲解