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

企业邮箱_什么是数据库的恢复_免费6个月

小七 141 0

apachespark1.0中MLlib的新特性

MLlib是一个专注于机器学习的apachespark组件。在版本0.8(2013年9月)中,它成为Spark的标准组件。最初的贡献来自伯克利AMPLab。从那时起,来自开源社区的50多名开发人员为其代码库做出了贡献。随着apachespark1.0的发布,我很高兴与大家分享MLlib中的一些新特性。其中最重要的是:稀疏数据支持回归分类树分布矩阵PCA和SVDL-BFGS优化算法新用户指南和代码示例这是关于MLlib的特性和优化的一系列博客文章中的第一篇。我们将关注1.0中的一个新特性-稀疏数据支持。大尺度≈稀疏当我读研究生的时候,我写了一篇论文草稿"大规模稀疏最小二乘法"。我的导师划掉了"稀疏"一词,并留下了一条评论:"大规模已经意味着稀疏,所以你不必再提两次了。"这是一个很好的论据。稀疏数据集在大数据世界中确实非常普遍,稀疏性可能来自许多来源,例如。,特征转换:一个热编码、交互和二值化,大特征空间:n-grams,缺少数据:评级矩阵。以Netflix Prize限定数据集为例。它包含了大约1亿的收视率,由480189名用户在17770部电影中产生。因此,评级矩阵只包含1%的非零。如果一个算法能够利用这种稀疏性,它可以看到显著的改进。开发稀疏性在apachespark1.0中,MLlib在Scala、Java和Python中添加了对稀疏数据的完全支持(以前的版本只在特定的算法(如交替最小二乘法)中支持它)。它利用了支持向量机、logistic回归、Lasso、naivebayes、k均值和总结统计量等方法在存储和计算上的稀疏性。为了给出一个具体的例子,我们对一个数据集运行k-means聚类,该数据集包含1200多万个500个特征维的示例。大约有6亿个非零,因此密度约为10%。结果如下表所示:稀疏稠密的存储7GB47 GB时间58秒240秒 因此,我们不仅通过切换到稀疏格式节省了40GB的存储空间,而且还获得了4倍的加速。如果数据集稀疏,我们强烈建议您尝试此功能。入门稀疏和稠密特征向量都通过向量接口来支持。稀疏向量由两个并行数组表示:索引和值。不存储零个条目。密集向量由一个表示其条目的双数组作为后盾。例如,向量[1.,0.,0.,0.,0.,0.,0.,0.,0.,3.]可以用稀疏格式表示为(7,[0,6],[1.,3.]),其中7是向量的大小,如下所示:以pythonapi为例。MLlib将以下类型识别为密集向量:纽比的阵法,Python的列表,例如[1,2,3]。以下为稀疏向量:MLlib的SparseVector,SciPy的csc_矩阵,具有单个列。为了提高效率,我们建议在列表上使用NumPy数组,并使用在Vectors中实现的工厂方法来创建稀疏向量。将numpy作为np导入进口稀疏稀疏作为sps从pyspark.mllib.linalg导入向量#使用NumPy数组作为密集向量。dv1=np.数组([1.0,0.0,3.0])#使用Python列表作为密集向量。dv2=[1.0,0.0,3.0]#创建一个SparseVector。sv1=向量.稀疏(3,[0,2],[1.0,3.0])#使用单列SciPy csc_矩阵作为稀疏向量。sv2=sps.csc_矩阵((np.数组([1.0,3.0]),np.数组([0,2]),np.数组([0,2]),形状=(3,1))K-means以向量的RDD作为输入。对于有监督学习,训练数据集由标记点的RDD表示。标签点包含一个标签和一个向量,稀疏或密集。创建标记点很简单。从pyspark.mllib.linalg导入SparseVector从pyspark.mllib.回归导入标签点#创建带有正标签和密集向量的标记点。pos=标记点(1.0,[1.0,0.0,3.0])#使用负标签和稀疏向量创建标记点。neg=标记点(0.0,SparseVector(3,[0,2],[1.0,3.0]))MLlib还支持以LIBSVM格式读取和保存标记数据。有关用法的更多信息,请访问MLlib指南和代码示例。何时利用稀疏性对于许多大型数据集,以密集格式存储数据是不可行的。然而,对于中等规模的数据,很自然地会问我们何时应该从密集格式切换到稀疏格式。在MLlib中,稀疏向量需要12nnz+4字节的存储空间,其中nnz是非零的数量,而密集向量需要8n字节,其中n是向量大小。因此,在存储方面,当超过1/3的元素为零时,稀疏格式优于密集格式。然而,假设两种格式的数据都可以放入内存中,我们通常需要稀疏的数据来观察加速,因为稀疏格式的计算效率不如密集格式。我们的经验表明稀疏度在10%左右,而运行时间的确切切换点确实取决于问题。稀疏数据支持是ApacheSpark1.0的一部分,现在可以在。我们将在一系列文章中介绍MLlib中的更多新特性。所以请继续关注。免费试用Databricks。今天就开始吧