1

我正在处理时间序列数据中的重复模式。我的目标是将每个模式分类为 1,将不遵循该模式的任何内容分类为 0。该模式在每两个峰之间重复,如下图所示。

这些模式不一定在样本量上是固定的,而是保持在近似样本量内,比如 500 个样本 +-10%。峰的高度可以改变。随机信号(我称之为随机,但基本上它意味着不遵循模式形状)也可以改变值。

数据来自传感器。模式是设备正常工作的时候。如果设备出现故障,那么我将看不到这些模式,并且会得到类似于我在图像中显示的 0 类的东西。

到目前为止,我所做的是建立一个逻辑回归模型。以下是我的数据准备步骤:

  1. 在每两个连续峰值之间抓取数据,将其重新采样到 100 个样本的固定大小,将数据缩放到 [0-1]。这是1级。

  2. 对山谷之间的数据重复步骤 1,并将其称为 0 类。

  3. 我产生了一些噪音,并在 500 个样本上重复了第 1 步,以构建额外的 0 类数据。

下图显示了我对测试数据集的预测。对噪声块的预测不是很好。我担心在真实数据中我可能会得到更多的误报。关于如何改进我的预测的任何想法?当没有可用的 0 类数据时,有什么更好的方法吗?

我在这里看到了类似的问题。我对隐马尔可夫模型的理解有限,但我相信它是用来预测未来数据的。我的目标是在我的数据中对 500 个样本的滑动窗口进行分类。

在此处输入图像描述

4

2 回答 2

0

我有一些建议,你可以试试。首先,我认为在这个领域经常使用递归神经网络(例如 LSTM)。但我也听说有些人也使用基于树的方法,如 light gbm(我认为 Aileen Nielsen 使用这种方法)。

因此,如果您不想深入研究神经网络,这可能没有必要,因为您的信号似乎相对容易区分,您可以给 light gbm(或其他树集成方法)一个机会。

如果您知道正样本的最大长度,则可以定义成为输入向量的“滑动样本窗口”的长度(因此滑动窗口中的每个样本都成为一个输入特征),然后我会添加一个额外的属性与最后一个峰值出现时的样本数(在样本窗口之外/之前)。然后您可以检查您让窗口在数据上滑动的步数。这也取决于您为此可用的内存。但也许明智的做法是跳过积极和消极变化之间的一些窗口,因为状态可能无法明确分类。

如果内存成为问题,神经网络可能是更好的选择,因为对于训练它们不需要一次提供所有可用的训练数据,因此您可以批量生成输入数据。使用基于树的方法,这种可能性不存在或仅以非常有限的方式存在。

于 2020-10-18T12:12:20.620 回答
0

我不确定您要达到的目标。

如果您想表征什么是峰或不是峰(这是事后分类),那么您可以使用一个简单的规则来定义峰,例如 signal(t) - average(signal, t-N to t) > T,具有T一定的阈值和N许多数据点来回顾。

这将限定什么是峰值(1 类)和什么不是(0 类),因此对模式进行分类。

如果您的目标是预测峰值将在峰值之前的几个时间单位发生(在时间 t 上),使用来自t-n1to的数据t-n2作为特征,那么逻辑回归可能不一定是最佳选择。

要找到正确的模型,您必须首先可视化您拥有的每个特征t-n1t-n2看看peak(t)是否有任何可以找到的模式。它可以是任何东西:

  • n3t 前几天有高峰吗?
  • 有趋势吗?
  • 是否有异常值(将您的数据转换为指数)

为了比较这些模式,可以考虑对它们进行归一化,n2-n1例如,数据点从 0 变为 1。

如果您在视觉上找到一种模式,那么您将知道哪种模型可能适用于哪些功能。

如果你不这样做,那么你添加的白噪声很可能会一样好。所以你可能找不到一个好的预测模型。

但是,您的底部图表还不错;在 > 15 个预测中,您只有 2 个主要误报。这暗示了更好的特征工程。

于 2020-10-19T09:22:58.433 回答