推荐包中的R非常大的数据集处理和机器学习(Recommended package for very

2019-06-25 12:31发布

这似乎是R的真正设计来处理,它可以完全拉入内存的数据集。 推荐用于信号处理和机器学习上不能被拉入内存非常大的数据集什么的R程序包?

如果R是根本错误的方式做到这一点,我愿意接受其他强大的免费的建议(如SciPy的,如果有处理非常大的数据集,一些不错的办法)

Answer 1:

看看“大内存外的内存中的数据”中的小节高性能计算任务视图上CRAN。 bigmemory和FF是两个流行的包。 对于bigmemory(以及相关的biganalytics和bigtabulate ),该bigmemory网站有几个非常好的演讲,护身符,和周杰伦艾默生概述。 对于FF,我建议你阅读阿德勒Oehlschlägel和同事的优秀幻灯片演示上FF网站 。

另外,还要考虑存储在数据库中的数据,并在小批量阅读分析。 有可能的任何数量的考虑方法。 要开始,通过一些在例子consdier寻找biglm包,以及本演示由托马斯·拉姆利。

和做研究的高性能计算任务视图的其他包和其他的答案中提到。 我上面提到的包只是我碰巧有更有经验的人。



Answer 2:

我想你的数据可以处理的量更多的是由那些编程技能比其他任何限制。 虽然很多的标准功能,在内存分析的重点是,减少你的数据分成块已经有很大帮助。 Ofcourse,这需要更多的时间不是拿起标准的R代码编程,但很多时候,这是完全可能的。

剪碎数据可以exale函数read.table使用或readBin仅支持读取数据的一个子集来完成。 或者,你可以看看在高性能计算任务视图,其提供开箱即用的内存不足的功能包。 你也可以把你的数据在数据库中。 对于空间栅格数据,以优良的光栅包提供了存储器的分析。



Answer 3:

对于机器学习任务,我可以推荐使用biglm包,用来做“回归数据太大,无法装入内存”。 对于使用R 3与真正的大数据,人们可以使用的Hadoop作为后端,然后使用包RMR经由MapReduce的Hadoop集群上执行统计(或其他)的分析。



Answer 4:

这一切都取决于你所需要的算法。 如果他们可以翻译成增量形式(当需要在任何给定时刻只有数据的一小部分,例如用于朴素贝叶斯您可以在内存中只处理模型本身和当前观测持有),那么最好的建议是进行机学习递增,从磁盘读取数据的新批次。

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

如果您的数据甚至不能在你的硬盘存储,则需要使用分布式机器学习系统。 一个这样的基于R-系统是转速R ,其目的是应付真正的大数据集。 不幸的是,它不是开源的,成本相当多的钱,但是你可能尝试获得自由的学术许可证 。 作为替代方案,您可能感兴趣的基于Java的Apache的亨利马乌 -不那么优雅,但非常有效的解决方案,基于Hadoop和包括许多重要的算法。



Answer 5:

如果存储器是不够充分的,一种解决方案是将数据推送到磁盘和使用分布式计算。 我认为RHadoop(R + Hadoop的)可以是溶液与大量的数据集,以解决之一。



文章来源: Recommended package for very large dataset processing and machine learning in R