在机器学习管道中存储预处理数据的最佳方法是什么?

问题描述 投票:-1回答:2

在我的例子中,原始数据存储在NoSQL上。在训练ML模型之前,我应该在NoSQL上预处理原始数据。此时,如果我预处理原始数据,那么保留预处理数据的最佳方法是什么? 1.将它保存在内存中2.将它保存在NoSQL 3中的另一个表中。你能推荐其他选项吗?

bigdata
2个回答
0
投票

取决于您的用例,数据大小,技术堆栈和机器学习框架/库。说实话,在不了解您的数据和要求的情况下,SO上的任何人都无法为您提供完整的答案。

在将数据传递给模型/运行模型方面,将其加载到内存中。如果达到内存限制,请查看将数据批量处理到模型中。或使用AWS EMR集群!

关于存储数据的问题,我将使用前面回答的Spark示例并尝试给出一些通用规则。

  1. 如果处理的数据是“Big”并定期访问(例如每月/每周/每天一次),则以分布式方式存储,然后在运行模型时加载到内存中。

对于Spark,最好的办法是将其写为分区的parquet文件或Hive数据仓库。

关于这两个问题的关键是它们是分布式的。 Spark将创建包含所有数据的N镶木地板文件。在将数据集读入内存时(在运行模型之前),它可以同时读取多个文件 - 节省了大量时间。 Tensorflow与TFRecords格式类似。

如果您的NoSQL数据库是分布式的,那么您可以使用它。

  1. 如果它不会被定期访问并且“很小”,那么只需从头开始运行代码并加载到内存中。

如果处理完全没有时间并且它不用于其他工作,那么就没有必要存储它。这是浪费时间。甚至不要考虑它。只需专注于您的模型,将数据存储在内存中并开始运行。

  1. 如果数据不会定期访问但是“大”,那么就要努力思考!

您需要仔细考虑处理时间与数据存储能力之间的权衡。

存储这些数据需要多少钱?需要多久一次?这对业务至关重要吗?当有人问这个问题时,它总是“需要做昨天”的请求吗?等等。

—-


0
投票

Spark框架是一个很好的解决方案,可以让你想要做的事情在这里了解更多:spark。机器学习的火花:here

© www.soinside.com 2019 - 2024. All rights reserved.