云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

华为云_云服务器哪个好用_免费

小七 141 0

用apachespark分布奇异值分解

Twitter的Li Pu和Databricks的Reza Zadeh就他们最近对ApacheSpark的机器学习库所做的贡献发表的客座文章。奇异值分解(SVD)是线性代数的基石之一,在许多实际建模中有着广泛的应用。诸如推荐系统、线性系统、最小二乘法等问题可以用奇异值分解法来解决。它常用于与主成分分析(PCA)和对应分析相关的统计学,以及信号处理和模式识别。另一个用法是自然语言处理中的潜在语义索引。几十年前,在分布式计算兴起之前,计算机科学家开发了用于计算矩阵特征值分解的单核ARPACK包。从那时起,这个软件包已经成熟,并且在诸如SciPy、gnuoctave和MATLAB等工具中被数值线性代数社区广泛使用。ARPACK的一个重要特性是它允许任意矩阵存储格式。这是可能的,因为它不直接对矩阵进行运算,而是通过预先指定的运算(如矩阵向量乘法)作用于矩阵。当需要矩阵运算时,ARPACK通过请求矩阵向量乘法来控制调用程序。然后调用程序必须执行乘法并将结果返回到ARPACK。通过使用Spark的分布式计算能力,我们可以分配矩阵向量的倍数,从而利用多年来构建ARPACK的数值计算专业知识和Spark多年的分布式计算专业知识。由于ARPACK是用Fortran77编写的,因此不能立即在Java虚拟机上使用。但是,通过netlibjava和breeze接口,我们可以在JVM上使用ARPACK。这也意味着低层硬件优化可以用于任何局部线性代数操作。与MLlib中的所有线性代数运算一样,我们尽可能使用硬件加速。我们正在构建MLlib的线性代数功能。目前在apachespark1.0中支持高瘦的SVD和PCA,从apachespark1.1开始,我们将通过ARPACK支持SVD和PCA。示例运行时推荐系统社区中一个非常流行的矩阵是Netflix Prize matrix。该矩阵有17770行、480189列和100480507个非零。下面我们将在Twitter上对几个较大的矩阵(最大16倍)的结果进行报告。利用ARPACK实现SVD,计算68个执行器和8GB内存的挂钟时间,寻找前5个奇异向量,我们可以在几秒钟内将分布在RAM中的更大的矩阵分解成各个簇。基体尺寸非零数每次迭代的时间总时间(s)2300万x 380005100万0.2106300万x 490004400000001509400万x 4000万16亿0.550除了速度快,SVD也很容易运行。下面是一个代码片段,演示如何在从文本文件加载的稀疏数据上运行它。免费试用Databricks。今天就开始吧