java中的接口是类吗
297
2022-06-26
在处理机器学习算法时,因为数据库太大而无法放置进内存的情况很常见。
这就引出了如下的问题:
如何加载我的大容量数据文件?
当因我尝试运行数据集算法而导致程序崩溃时,我该怎么办?
你能帮我解决内存不足的问题吗?
在这篇文章中, 我想找出一些你会考虑的一些建议。
分配更多内存
某些机器学习工具或数据库可能受到默认内存配置的限制。检查是否可以重新配置工具或数据库来使其分配到更多内存。Weka 是一个很好的例子, 在该示例中, 您可以在启动应用程序时将内存增加为参数。
使用较小的样本
是否确实需要处理所有数据?随机抽取数据的样本, 例如前1000行或10万列。在对所有数据 (使用渐进式数据加载技术) 拟合最终模型之前, 请使用这个较小的示例来解决问题。
我认为这是一个很好的做法, 在一般的机器学习中,这种方式可以让你快速得到抽查的算法和周转的结果。您还可以考虑,对用于匹配一个算法的数据量进行灵敏度分析, 而不是用模型技能。也许有一个递减反馈的自然点, 让你可以使用其作为你小样本的一个合适的大小值。
使用具有更多内存的计算机
你必须在你的电脑上工作吗?也许你可以访问一台更大的计算机, 是以你电脑的内存的数量级倍数存在的那种。例如,在云服务上租用大内存服务器就是一个好的选择是;例如亚马逊 Web 服务, 它提供的机器的 RAM 为每小时还不到一美元。我发现这种方法在过去非常有用。
更改数据格式
数据是否存储在原始 ASCII 文本中, 如 CSV 文件?也许您可以通过使用其他数据格式,来加快数据加载并且降低内存的使用率。二进制格式就是一个很好的例子, 如 GRIB、NetCDF 或HDF等格式。有许多命令行工具可用于将一种数据格式转换为另一种不要求将整个数据集加载到内存的格式的方法。使用另一种格式可以使您将数据存储在更紧凑的窗体中, 借此节省内存, 如2字节的整数或4字节的浮动。
流数据或使用渐进加载
所有的数据都需要同时存储在内存中吗?也许您可以使用代码或库,将数据流逐步加载到内存中以进行使用。这可能需要使用优化技术 (如随机梯度下降) 来迭代学习的算法, 而不是要求内存中所有数据都执行矩阵操作的算法, 如某些线性和逻辑回归的实现。例如, Keras 深层学习库提供此功能来逐步加载图像文件, 并称为flow_from_directory。另一个例子是可以在大块中加载大的 CSV 文件的熊猫库(Pandas)。
使用关联数据库
关系数据库提供了一种存储和访问非常大的数据集的标准方法。从内部来看,存储在磁盘上的数据可以逐步加载, 并可以使用标准查询语言 (SQL) 来进行查询。可以使用诸如MySQL或Postgres这样的免费开源数据库工具, 而且大多数 (也许是所有?) 编程语言和许多机器学习工具都可以直接连接到关联数据库。您还可以使用轻量级方法, 如SQLite。我在过去发现这种方法对于非常大的表格数据集非常有效。同样, 您可能需要使用可以处理迭代学习的算法。
使用大型数据平台
在某些情况下, 您可能需要求助于一个大的数据平台。这是一个为了处理非常大的数据集而设计的平台, 它允许您在上面使用数据转换和机器学习算法。两个好例子是用Mahout机器学习库的Hadoop以及用MLLib库的Spark。我相信当你已经用尽上述方法,这是会是解决这个问题的终极方法。然而, 在一些数据集非常非常大的情况下,之前的方法并不会是这些数据集缩短。
转自:
https://mp.weixin.qq.com/s?src=11×tamp=1558269906&ver=1616&signature=u6G76zk8lTUm-eik9EaYP1kKstFqXZWEIzf6bKXkawhoEPeACT-Rff2CYV-FB51FRsm-60vQOQc5f3I1H9kSeDDupi4YmJ*-Im8ICmA7784tP*uABNM2ppo-sQGswiwZ&new=1mp.weixin.qq.com
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~