机器学习友好的数据组织

Machine-learning friendly data organization

网上有很多关于不同机器学习工具(神经网络和各种相关技术,如 DL、ID 树、SVM)的教程。当我做小规模的机器学习时,在 python 或 MATLAB 或等价物中,我通常有一个带有特征的 CSV 文件和一个带有标签的 CSV 文件,我将这些文件加载​​到内存中,然后根据程序的要求组织它们(例如 matlab 的矩阵)。

我正在实时收集系统性能数据。每隔几分钟,我就会收集大量数据,目前我将其存储为 Json 格式 {Key: value} 等。我通常会收集这些数据并将其存储一个小时,以查看我的系统如何是在做。相反,我想做的是保留它并尝试对其进行一些机器学习。我想知道组织机器学习数据集的经验法则是什么,特别是因为我不确定我想做什么样的 ML(这是一个探索项目,所以我试图找出一种方法让自己能够做最多的探索)。

我读了这篇博文:https://www.altexsoft.com/blog/datascience/preparing-your-dataset-for-machine-learning-8-basic-techniques-that-make-your-data-better/

The companies that started data collection with paper ledgers and ended with .xlsx and .csv files will likely have a harder time with data preparation than those who have a small but proud ML-friendly dataset.

据说.csv数据集对机器学习不友好。是否有一些方法可以保存被认为最适合 ML 的数据?

以下是我正在考虑的一些用例:

  1. 使用时间点数据与标签配对进行分类
  2. 使用时间序列分类(组织在一个矩阵中) 与标签配对
  3. 回归:给定矩阵 X 的预测值 它的时间序列值

我没有特别的问题。相反,我想以一种在未来支持机器学习的方式开始设置这个数据集。

我的问题是:为了支持机器学习,更流行的数据存储方式有哪些?

部分选项:

按时间组织的 CSV:

Time_stamp, feature1, feature2, feature3,...,featureN
Time_stamp, feature1, feature2, feature3,...,featureN
Time_stamp, feature1, feature2, feature3,...,featureN
...

还有一些起始标签(以后可能会增加也可能不会增加)

Time_stamp, label1, label2....labelN
Time_stamp, label1, label2....labelN
Time_stamp, label1, label2....labelN

Json 式键值对:

{
time_stamp: _,
feature1: _,
feature2: _,
...,
featureN:_,
label1:_,
label2:_,
label3:_,
...
}

假设我决定使用时间序列来预测标签...那么我将不得不将时间序列数据全部放入一个标签特征集中。

我知道有很多方法可以解决这个问题(其中之一是:忘掉组织 - 只需写一个 API 当你想出要解决的问题时,为你的问题生成这个组织良好的数据集),但实际上,我想知道在工业界和学术界为机器学习设计数据端基础设施的经验法则是什么。

出现的一些问题:

对数据库了解不多,求智慧,求特征存储相关的网络资源。我发现的大多数都与模型或 ML 基础设施有关——而不是我感兴趣的支持或数据组织部分。

对于我使用过的大多数机器学习库(tensorflow、keras、scikit-learn、R),数据通常以表格格式(如 CSV)处理,因为在引擎盖下许多机器学习算法都是使用快速线性代数代码实现。所以我不确定这篇文章是关于什么的,但以 CSV 格式存储数据是可以的。

数据清理、组织和存储是个大话题。您的数据清理管道(以及您的整个培训过程)应该是可重现的,this paper has some nice principles to keep in mind. This article by Hadley Wickham 对如何以表格格式组织数据有一些不错的想法。如果您的数据集很复杂或者您要经常重复使用它,可能值得将其存储在数据库中,我建议您阅读 SQL 和数据仓库指南。