对多元时间序列进行分类

数据挖掘 分类 时间序列 主成分分析
2021-09-25 08:21:50

我有一组由大约 40 个维度的时间序列(8 个点)组成的数据(所以每个时间序列是 8 x 40)。相应的输出(类别的可能结果)是 0 或 1。

为多维时间序列设计分类器的最佳方法是什么?

我最初的策略是从这些时间序列中提取特征:每个维度的均值、标准差、最大变化。我获得了一个用于训练 RandomTreeForest 的数据集。意识到这完全是幼稚的,并且在获得糟糕的结果之后,我现在正在寻找一个更改进的模型。

我的线索如下:对每个维度的系列进行分类(使用 KNN 算法和 DWT),使用 PCA 降低维度,并在多维度类别中使用最终分类器。作为 ML 的新手,我不知道我是否完全错了。

4个回答

如果您使用 Python,有几个包可以自动从您的时间序列中提取数百或数千个特征,将它们与您的标签相关联,选择最重要的,并为您训练模型。

https://github.com/blue-yonder/tsfresh

https://github.com/rtavenar/tslearn

你在正确的轨道上。看看在时域和频域中计算更多的特征。只要样本数>>特征数,您就​​不太可能过拟合。有没有关于类似问题的文献?如果是这样,那总是提供一个很好的起点。

尝试增强树分类器,例如 xgboost 或 LightGBM。它们往往更容易调整超参数,并使用默认参数提供良好的结果。随机森林和提升树分类器都可以返回特征重要性,因此您可以查看哪些特征与问题相关。您还可以尝试删除特征以检查任何协方差。

但最重要的是,如果您的结果出乎意料地差,请确保正确定义您的问题。手动检查您的结果,以确保您的管道中没有任何错误。

您可以向数据集添加更多功能,如下所示。

  1. 如果您的数据来自高度非线性过程,您可以尝试 nolds 包。

  2. 最大值、最小值、平均值、偏斜、峰度,如果可能的话,还有一些滚动统计数据。

我正在做类似的事情,我问了一个相关的问题

我同意 Jan van der Vegt 的观点,标准化(例如 [-1, 1])或归一化 N(0, 1) 与激活函数相结合对于神经网络非常重要。我会查看 Pichaid Varoonchotikul 的论文:“使用人工神经网络进行洪水预测”,了解 ANN 的来龙去脉。它有非常有趣的警告。不管怎样,我习惯先不试,但当结果不理想时,我习惯于两者都试。不确定它会有所帮助,但我会检查 R 包TSclust和相关文档。作者非常友善,他们会帮助您找到特定的模型来做到这一点。他们是时间序列分析专家!祝你好运!