如何在R中处理海量数据和建立模型
我一直在尝试为数据集构建一个模型,该数据集在如何在R中处理海量数据和建立模型,r,h2o,r-bigmemory,R,H2o,R Bigmemory,我一直在尝试为数据集构建一个模型,该数据集在R中包含7000万条记录。我尝试了所有可能的方法来构建一个类似于集群的模型,使用ff库、h2o(这会给我带来错误)和bigmemory以及biglayments包。我无法使用R和我尝试过的选项来处理如此庞大的数据 你能不能给我建议除此之外的任何工作选项,这样我就可以用它来构建模型了。我的笔记本电脑是4GB内存和64位处理器。顾名思义,机器学习需要一台机器(PC)。更重要的是,它需要一台适合特定工作的机器。尽管有一些技术可以解决这个问题: 1.下采样 大
R
中包含7000万条记录。我尝试了所有可能的方法来构建一个类似于集群
的模型,使用ff
库、h2o
(这会给我带来错误)和bigmemory
以及biglayments
包。我无法使用R
和我尝试过的选项来处理如此庞大的数据
你能不能给我建议除此之外的任何工作选项,这样我就可以用它来构建模型了。我的笔记本电脑是4GB内存和64位处理器。顾名思义,机器学习需要一台机器(PC)。更重要的是,它需要一台适合特定工作的机器。尽管有一些技术可以解决这个问题: 1.下采样 大多数情况下,机器学习不需要所有数据,您可以对数据进行采样,得到一个小得多的数据,可以在笔记本电脑上使用 当然,您可能需要使用一些工具(如数据库)对笔记本电脑上的工作进行采样 2.数据点 根据变量的数量,每条记录可能不是唯一的。您可以通过关键变量“聚合”数据。变量的每个唯一组合称为一个数据点,重复数可以用作聚类方法的权重 但取决于所选择的聚类方法和项目目的,这些聚合数据可能无法为您提供最佳模型 3.分成几部分 假设您的所有数据都在一个csv文件中,您可以使用
data.table::fread
通过指定适合笔记本电脑的行来读取数据块
您可以分别处理R中的每个数据块,并在这些数据上构建模型。最终,作为一种打包方法,您将获得大量聚类结果
4.云解决方案
如今,云解决方案非常流行,您可以将工作转移到
用于数据操作和建模的云
如果您觉得整个项目的成本很高,您可以使用cloud向下采样,如果您在本地找不到合适的工具进行采样工作,则可以返回到笔记本电脑
5.新机器
这是我首先想到的一种方式。新机器可能仍然无法处理您的数据(取决于数据中变量的数量)。但这肯定会使另一种计算更有效
对于个人项目,一个32gb的RAM和i7CPU就足以开始机器学习了。Titan GPU将在某些机器学习方法(例如xgboost、lightgbm keras等)上提高速度
出于商业目的,服务器解决方案或群集解决方案更适合在群集作业中处理7000万条记录数据。顾名思义,机器学习需要一台机器(PC)。更重要的是,它需要一台适合特定工作的机器。尽管有一些技术可以解决这个问题: 1.下采样 大多数情况下,机器学习不需要所有数据,您可以对数据进行采样,得到一个小得多的数据,可以在笔记本电脑上使用 当然,您可能需要使用一些工具(如数据库)对笔记本电脑上的工作进行采样 2.数据点 根据变量的数量,每条记录可能不是唯一的。您可以通过关键变量“聚合”数据。变量的每个唯一组合称为一个数据点,重复数可以用作聚类方法的权重 但取决于所选择的聚类方法和项目目的,这些聚合数据可能无法为您提供最佳模型 3.分成几部分 假设您的所有数据都在一个csv文件中,您可以使用
data.table::fread
通过指定适合笔记本电脑的行来读取数据块
您可以分别处理R中的每个数据块,并在这些数据上构建模型。最终,作为一种打包方法,您将获得大量聚类结果
4.云解决方案
如今,云解决方案非常流行,您可以将工作转移到
用于数据操作和建模的云
如果您觉得整个项目的成本很高,您可以使用cloud向下采样,如果您在本地找不到合适的工具进行采样工作,则可以返回到笔记本电脑
5.新机器
这是我首先想到的一种方式。新机器可能仍然无法处理您的数据(取决于数据中变量的数量)。但这肯定会使另一种计算更有效
对于个人项目,一个32gb的RAM和i7CPU就足以开始机器学习了。Titan GPU将在某些机器学习方法(例如xgboost、lightgbm keras等)上提高速度
出于商业目的,服务器解决方案或群集解决方案更适合在群集作业中处理7000万条记录数据。由于
R
使用RAM,因此需要处理4GB的限制。我担心在笔记本电脑中无法处理如此大的数据集…为什么不将数据集移动到sqlite表中,然后使用RSQLite或sqldf进行处理?有两种选择:获取更多RAM,例如,您可以租用Amazon ECII实例。或者在数据的子集上构建模型,并使用其余部分进行模型验证。我推荐后者。因为R
使用RAM,所以需要处理4GB的限制。我担心在笔记本电脑中无法处理如此大的数据集…为什么不将数据集移动到sqlite表中,然后使用RSQLite或sqldf进行处理?有两种选择:获取更多RAM,例如,您可以租用Amazon ECII实例。或者在数据的子集上构建模型,并使用其余部分进行模型验证。我推荐后者。也许我会尝试更多的样品来让模型工作。也许我会尝试更多的样品来让模型工作。