处理机器学习大数据的7种方法

目录

在实际的生产过程中,我们经常会遇到数据文件太大,而无法直接读入到计算机中进行处理,或者因为数据量太大,读入内存后运行出错。因此,如何解决大数据的读入问题是解决大数据机器学习的第一步。

1.分配更多的内存

如果硬件可以支持分配更多的内存或者使用虚拟内存的时候,可以采取扩充内存的方式
检查是否可以重新配置工具或库以分配更多的内存
比较好的例子是WEKA,他可以在运行的时候扩充内存

2.使用较小的样本

采用某种下采样的方法,从原始的海量数据中抽取部分具有代表性的样本,然后使用这些抽样的样本训练模型,并在实际的测试集上进行测试。
采用这种方法具有一定的风险,首先得保证降采样的样本能够很好的代表全部样本的一个分布,否则很容易导致模型学偏,无法很好的对新样本泛化。
但是该方法可以迅速的查看算法和结果。

3.将数据提交至服务器上

由于本地的机器一般内存比较小,所以可以将数据提交至服务器上,利用服器强大的数据处理能力,解决大数据导入内存出错的问题。

4.更改数据格式

您的数据是否存储在原始ASCII文本中,如CSV文件?
也许您可以通过使用其他数据格式来加快数据加载并减少内存使用。一个很好的例子是像GRIB,NetCDF或HDF这样的二进制格式。
有许多命令行工具可用于将一种数据格式转换为另一种不需要将整个数据集加载到内存中的数据格式。
使用另一种格式可能允许您以更紧凑的形式存储数据,从而节省内存,例如2字节整数或4字节浮点数。

5.使用数据流方式或者逐行读入的方法

可以使用一个在线的增量式的学习方法,不是将数据一下子读入到内存中,而是在模型训练的过程中不断的读入到内存中,然后使用新读入的数据对模型的参数进行更新。
例如,Keras深度学习库提供了逐渐加载图像文件的功能,称为flow_from_directory。
另一个例子是pandas,可以加载大块的大型CSV文件

6.使用关系数据库

关系数据库提供了存储和访问非常大的数据集的标准方法。
在内部,存储在磁盘上的数据可以批量逐步加载,并且可以使用标准查询语言(SQL)进行查询。

可以使用免费的开源数据库工具,如MySQL或Postgres,大多数(所有?)编程语言和许多机器学习工具可以直接连接到关系数据库。您还可以使用轻量级的方法,如SQLite。
这种方法在过去对于非常大的表格数据集非常有效。
同样,您可能需要使用可以处理重复学习的算法

7.使用大数据平台

可以使用大数据平台,使用分布式计算,解决单个电脑性能不足
设计用于处理非常大的数据集的平台,允许您在其上使用数据转换和机器学习算法。
两个很好的例子是Hadoop的Mahout机器学习库和Spark机智的MLLib库。
我确实相信这是最后的手段,当您用尽了上述选项,只是为了机器学习项目带来的额外的硬件和软件复杂性。

参考博客

猜你喜欢

转载自blog.csdn.net/wangzi11111111/article/details/88632498