如何在 R 中处理海量数据和构建模型

How to handle huge data and build model in R

我一直在尝试为 R 中包含 7000 万条记录的数据集构建模型。我尝试了所有可能的选项来构建模型,如 clustering,使用 ff 库,h2o(这会引发错误)以及 bigmemorybiganalytics 包作为出色地。我无法使用 R 和我尝试过的选项来处理如此庞大的数据。

您能否建议我除此之外的任何工作选项,以便我可以使用它来构建模型。我的笔记本电脑是 4GB 内存和 64 位处理器。

顾名思义,机器学习需要一台机器(PC)。更重要的是,它需要一台适合特定工作的机器。尽管有一些技术可以处理它:

1。下采样

大多数时候,机器学习不需要所有数据,您可以对数据进行采样以获得可在笔记本电脑上使用的更小的数据。

当然,您可能需要使用一些工具(例如数据库)在笔记本电脑上进行抽样工作。

2。数据点

取决于您拥有的变量数量,每条记录可能不是唯一的。您可以通过关键变量 "aggregate" 您的数据。每个唯一的变量组合称为一个数据点,重复的数量可以作为聚类方法的权重。

但取决于所选的聚类方法和项目的目的,此聚合数据可能无法为您提供最佳模型。

3。分成几部分

假设您将所有数据都放在一个 csv 文件中,您可以使用 data.table::fread 通过指定适合您笔记本电脑的行来分块读取数据。

您可以分别处理 R 中的每个数据块,并在这些数据上构建模型。最终,你会得到很多聚类结果作为一种装袋方法。

4。云解决方案

如今,云解决方案非常流行,您可以将工作转移到 用于数据操作和建模的云。

如果您觉得整个项目的成本很高,如果您在本地找不到合适的工具进行采样工作,您可以使用云进行下采样,然后再回到您的笔记本电脑上。

5。一台新机器

这是我首先想到的方式。新机器可能仍无法处理您的数据(取决于数据中变量的数量)。但是肯定会让对方的计算效率更高

对于个人项目,配备 i7 CPU 的 32gb RAM 足以启动机器学习。 Titan GPU 可以在某些机器学习方法(例如 xgboost、lightgbm keras 等)上提升速度

出于商业目的,服务器解决方案或集群解决方案更适合在集群作业上处理 70m 记录数据。