Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
推荐用于R中超大数据集处理和机器学习的软件包_R_Machine Learning_Signal Processing_Bigdata - Fatal编程技术网

推荐用于R中超大数据集处理和机器学习的软件包

推荐用于R中超大数据集处理和机器学习的软件包,r,machine-learning,signal-processing,bigdata,R,Machine Learning,Signal Processing,Bigdata,看起来R真的是被设计来处理数据集的,它可以完全拉入内存。对于无法放入内存的超大数据集,建议使用哪些R软件包进行信号处理和机器学习 如果R只是一种错误的方法,那么我愿意接受其他可靠的免费建议(例如,如果有处理超大数据集的好方法,请使用scipy)我认为您可以处理的数据量更多地受到编程技能的限制。虽然很多标准功能都集中在内存分析上,但将数据分块已经很有帮助了。当然,这比使用标准R代码要花更多的时间来编程,但通常情况下这是完全可能的 例如,可以使用read.table或readBin来切割数据,它们只

看起来R真的是被设计来处理数据集的,它可以完全拉入内存。对于无法放入内存的超大数据集,建议使用哪些R软件包进行信号处理和机器学习


如果R只是一种错误的方法,那么我愿意接受其他可靠的免费建议(例如,如果有处理超大数据集的好方法,请使用scipy)

我认为您可以处理的数据量更多地受到编程技能的限制。虽然很多标准功能都集中在内存分析上,但将数据分块已经很有帮助了。当然,这比使用标准R代码要花更多的时间来编程,但通常情况下这是完全可能的


例如,可以使用read.table或readBin来切割数据,它们只支持读取数据的一个子集。或者,您可以查看high performance computing task(高性能计算任务)视图,查看提供开箱即用内存功能的软件包。您还可以将数据放入数据库中。对于空间光栅数据,优秀的光栅软件包提供了内存不足分析。

对于机器学习任务,我建议使用该软件包,用于“对内存中太大的数据进行回归”。要将R用于真正的大数据,可以将其用作后端,然后使用包在Hadoop集群上通过MapReduce执行统计(或其他)分析。

这一切取决于您需要的算法。如果可以将它们转换为增量形式(在任何给定时刻只需要一小部分数据时,例如,对于朴素贝叶斯,您只能在内存中保存模型本身和正在处理的当前观测值),那么最好的建议是以增量方式执行机器学习,从磁盘读取新的数据批

然而,许多算法,尤其是它们的实现确实需要整个数据集。如果数据集的大小适合您的磁盘(以及文件系统限制),您可以使用软件包,该软件包允许将磁盘上的文件映射到内存,并在程序中使用它。然而,请注意,读写磁盘是昂贵的,而且R有时喜欢频繁地来回移动数据。所以要小心

如果您的数据甚至无法存储在硬盘上,则需要使用分布式机器学习系统。其中一个基于R的系统是专门为大型数据集设计的。不幸的是,它不是开源的,并且花费了很多钱,但是你可以试着得到它。作为替代方案,您可能会对基于Java的解决方案感兴趣,该解决方案不那么优雅,但非常高效,基于Hadoop,包括许多重要的算法

查看on CRAN的“大内存和内存不足数据”小节。和是两个流行的软件包。对于bigmemory(以及相关的和),有一些杰伊·爱默生(Jay Emerson)的非常好的演示、小插曲和概述。对于ff,我建议您阅读Adler Oehlshlägel和同事们的精彩幻灯片演示

也可以考虑将数据存储在数据库中,并以较小的批次进行分析。可能有许多方法需要考虑。首先,康斯迪尔浏览了包中的一些示例,以及托马斯·卢姆利(Thomas Lumley)的示例


并调查高性能计算任务视图上的其他包以及其他答案中提到的其他包。我上面提到的软件包只是我碰巧有更多经验的软件包。

如果内存不够,一个解决方案是将数据推送到磁盘并使用分布式计算。我认为RHadoop(R+Hadoop)可能是处理大量数据集的解决方案之一。

看看on CRAN中的“大内存和内存不足数据”小节。和是两个流行的软件包。此外,考虑将数据存储在数据库中,并以较小的批次进行分析,但是使用FF、BigMeor或数据库…您能直接执行R或任何软件包提供的任何操作吗?或者您只能运行ff、bigmemory或数据库引擎实现的功能?(无需将数据分解为小块)。例如,我想在50GB的数字文件上运行回归或计算中值。或者我想应用DBScan,或者只是想创建另一个向量,其中每个元素都表示为一些操作,其中旧元素BB[I]=AA[I]*AA[I-1]+AA[I-2]。我可以用R和ff、bigmemory或任何数据库连接器来实现这一点吗?使用Revolution R,您可以在大型数据集上应用一些功能,但只能在Revoscaler软件包上实现这些功能。您没有在大型数据集上使用任何R函数或包的通用方法。例如,如果要运行DBSCAN集群,则需要使用revoscaler(或类似软件包)提供的基本函数重写整个方法。