由于写了降维的一个系列算法分析,本来以为对这个Lanczos算法会理解一点,但是还是不知道讲了什么,最多的就是会如何调用,然后出结果,所以就翻译官网的相关内容。本篇翻译来自Dimensional Reduction 中的Lanczos Algorithm和Parallel Stragegy部分。

Lanczos Algorithm:

Lanczos算法就是被设计用来做特征分解的,和其他类似的算法一样,获得的奇异向量都是很接近的(这里的翻译可能不对,immediate翻译为很快?和其他类似算法一样,获得奇异向量很快?这样翻译?)。矩阵A的奇异向量就是A^t * A 或者 A * A^t的特征向量。(这里A^t应该是矩阵A的转置么?特征向量应该是只有N*N的矩阵才有的,只有A的转置乘以A才能达到矩阵A是一个N*N的正方矩阵,这里A^t没搞懂是什么意思)。Lanczos算法使用一个种子向量v(其实这个V应该按照前面分析的理解应该就是那个初始化的13个根号13了,即列数个列数开根号),然后不断的乘以A得到v'=A.times(v)。(然后减去前一个v''的值,得到一个辅助的投影矩阵)。一般情况下矩阵A不是一个N*N的正方矩阵(更一般的情况,是非对称的),那么就要不断使用v乘以A * A^t,在mahout中对等的方法是A.timeSquared(v),(timesSquared方法只是一个近似值:改变A*A^t.times(v)的求和顺序,就可以只把A矩阵的行传一次而不是两次?啥意思?不懂);

k次循环后,v_i=A.timesSquared(v_(i-1)),一个k*k的对角矩阵(前面提到的辅助投影矩阵)就会被生成了,(首先应该是由对角矩阵和basis矩阵相乘得到奇异矩阵,然后使用奇异矩阵和A矩阵相乘得到A的近似矩阵,但是basis 矩阵是从哪里来的?)然后一个和A矩阵很近似但低维度的矩阵就可以生成了。k表示什么?k是矩阵A频谱的延伸(这个啥意思?):前面几个向量代表了很大成分的奇异向量,后面的几个向量则表示的成分比较小。一个比较好的方法是首先生成3*k个奇异向量,然后只取前面成分比较大的三分之一来做计算(成分的含义:在前面的计算中可以看到singularVector都是有一个singular vlaue的,应该是由这个singularvalue来判断哪个靠前,然后成分就大);

Parallel Stragegy:

Lanczos算法是一个并行的很尴尬的算法:一个矩阵乘以一个向量只能是按照一行来计算,然后在最后获得总的结果。当真正的执行A.times(v)的时候,最后是不会有冲突或者同步问题的(针对每一个向量,输出都是分开的);而且多核的方法会变得很快,在hadoop上面有一些可以加速算法的优化方案。在矩阵A是不对称的情况下,A.timesSquare(v)确实需要同步,所以要延迟写入硬盘的时间知道mapper关闭。如果在设置了Combiner的话,那么加速的瓶颈就只是单个的节点加速了。(意思应该是说,如果设置了combiner的话,那么集群的加速效果应该很好了,所以能优化的地方就剩下单个节点的优化了)。

汗,感觉翻译的还是不太懂,应该是很不懂!!!

Lanczos Algorithm and it's Parallelization Stragegy的更多相关文章

  1. 机器学习中的矩阵方法04:SVD 分解

    前面我们讲了 QR 分解有一些优良的特性,但是 QR 分解仅仅是对矩阵的行进行操作(左乘一个酉矩阵),可以得到列空间.这一小节的 SVD 分解则是将行与列同等看待,既左乘酉矩阵,又右乘酉矩阵,可以得出 ...

  2. TOP 10开源的推荐系统简介

    最近这两年推荐系统特别火,本文搜集整理了一些比较好的开源推荐系统,即有轻量级的适用于做研究的SVDFeature.LibMF.LibFM等,也有重量级的适用于工业系统的 Mahout.Oryx.Eas ...

  3. Samples for Parallel Programming with the .NET Framework

    The .NET Framework 4 includes significant advancements for developers writing parallel and concurren ...

  4. 多流向算法GPU并行化

    和导师在Computers & Geosciences上发表的关于多流向算法GPU并行化的文章(SCI, IF=1.834). 论文:http://sourcedb.igsnrr.cas.cn ...

  5. 机器学习-特征选择 Feature Selection 研究报告

    原文:http://www.cnblogs.com/xbinworld/archive/2012/11/27/2791504.html 机器学习-特征选择 Feature Selection 研究报告 ...

  6. C++开源库集合

    | Main | Site Index | Download | mimetic A free/GPL C++ MIME Library mimetic is a free/GPL Email lib ...

  7. TOP 10 开源的推荐系统简介

      最 近这两年推荐系统特别火,本文搜集整理了一些比较好的开源推荐系统,即有轻量级的适用于做研究的SVDFeature.LibMF.LibFM等,也有重 量级的适用于工业系统的 Mahout.Oryx ...

  8. 挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法

    转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...

  9. PE Checksum Algorithm的较简实现

    这篇BLOG是我很早以前写的,因为现在搬移到CNBLOGS了,经过整理后重新发出来. 工作之前的几年一直都在搞计算机安全/病毒相关的东西(纯学习,不作恶),其中PE文件格式是必须知识.有些PE文件,比 ...

随机推荐

  1. tms web core介绍

    tms web core介绍 TMS Web CORE是基于将Delphi UI代码编译为javascript并以此方式创建的 称为单页应用程序.TMS Web核心应用程序可以包含多个表单. 这些多个 ...

  2. 为什么不能用memcached存储Session

    Memcached创建者Dormando很早就写过两篇文章[1][2], 告诫开发人员不要用memcached存储Session.他在第一篇文章中给出的理由大致是说,如果用memcached存储Ses ...

  3. Sharepoint 开启发布功能的PowerShell

    前言 最近,需要一段开启SharePoint站点发布功能的PowerShell命令,因为很多站点批量开启,去网站集功能和网站功能里分别点很麻烦,就搜了这样的命令,如果有需要的可以看一看. $siteU ...

  4. svn: E155015: 提交失败(细节如下) 解决办法

    svn 出现冲突是经常发生的事,最近改用命令操作svn,用界面电脑有些反应慢 出现冲突使用svn 命令肯定也是可以解决的: 查看警告信息提示冲突的文件,执行 svn resolved <文件名& ...

  5. SpringBoot 获取当前登录用户IP

    控制器方法: @RequestMapping(value = "/getIp", method = RequestMethod.POST) @ResponseBody public ...

  6. HTML5实现简单圆周运动示例

    一.使用JS实现圆周运动 根据指定圆心.半径,在定时器中移动固定的弧度,重绘圆圈的位置 源代码: <!DOCTYPE html> <html lang="en"& ...

  7. var this.value 可在任意地方 声明 类成员变量。如果可以利用在C++ 那该有多好啊

    var this.value 可在任意地方 声明 类成员变量.如果可以利用在C++ 那该有多好啊

  8. 最近遇到了 timer1sec 定时调用的函数,出现了 时间久了,就不是每秒一次了,可能会慢的情况。如何解决呢?

    我想可以在timer1sec 调用四个线程,让四个线程来执行 具体代码,而不是在timer1sec一个线程 直接执行.这样,每个线程 不超过4s,那么没秒都会被调用到. 需要使用到的技术是 semap ...

  9. C#如何使用SplitContainer控件实现上下分隔

    C#如何使用SplitContainer控件实现上下分隔 Orientation 属性设置为Horizontal 完美世界 http://www.23cat.com/Contents_51864.ht ...

  10. Java学习笔记——IO操作之以图片地址下载图片

    以图片地址下载图片 读取给定图片文件的内容,用FileInputStream public static byte[] mReaderPicture(String filePath) { byte[] ...