如何为时间序列分类构建数据集?

Posted

技术标签:

【中文标题】如何为时间序列分类构建数据集?【英文标题】:How to build a dataset for time-series classification? 【发布时间】:2018-04-11 22:59:23 【问题描述】:

我从时间序列分类开始,在理解应该如何构建我的训练集时遇到了一些麻烦。我目前的数据是这样的:

Timestamp       User ID  Feature 1   Feature 2   ...    Feature N  target
2002-10-30         1        0            0       ...       1        0
2002-10-31         2        0            1       ...       1        0
...
...
2017-10-30         1        0            0       ...       0        1
2017-10-31         2        0            1       ...       0        0

这些特征是单热编码文本特征,在时间t 为给定的User ID 记录。目标是在时间t 发生/未发生的事件。我愿意在新的给定时间t 为数据集的所有User IDs 提供一组新功能来检测此事件。

我从this paper 了解到,对此进行建模的一种方法是使用“滑动窗口分类器”

对于任何时间t,我都可以将t, t-1, ... t-n 的功能聚合在一起,并设置一个更灵活的目标,即“事件发生在t, t+1, ... t+n。这是构建此类分类器的正确方法吗?

我也在考虑more recent approaches,比如“循环神经网络架构 (LSTM)”。我如何构建一个训练集来从上面的数据集中提供这个模型?

ps:我打算使用 scikit-learn / Keras 来构建分类器。

提前感谢您的时间和回答。

【问题讨论】:

据我所知,您有一个简单的二元分类问题(目标是 0 或 1)。所以你必须找到输入和目标之间的关系。不需要对数据进行其他预处理。您可以为此使用多种技术:神经网络、遗传编程等...... 【参考方案1】:

有几种方法可以处理时间序列:

    直接将 LSTM 与一些窗口一起使用,因此您的数据将具有这样的形状(批处理、窗口、data_features_dimensions...) 您可以使用 Conv1D 和其他一维方法,因此您可以找到一些模式。 您可以从 Windows 构建矩阵。乍一看这不是很合乎逻辑,但通过这种方式,您可以像 LSTM 那样找到一些变化的模式。 您可以将时间序列视为一个信号并使用与音频处理相同的技术,例如构建可以使用 CNN 处理的频谱图

【讨论】:

以上是关于如何为时间序列分类构建数据集?的主要内容,如果未能解决你的问题,请参考以下文章

深度学习 - 如何为大型分类集准备训练数据?

如何为 LSTM 重塑数据 - 时间序列多类分类

如何为 scikit 和 NLTK 使用不同的数据集?

如何为机器学习和预测构建良好的训练数据集?

如何为 4 个类别的文本分类创建训练数据

如何为包含大量异常值的 ML 分类任务准备 IOT 数据?