我应该重新标记这些数据还是删除可能泄漏的功能?

数据挖掘 机器学习 时间序列
2022-03-04 05:03:01

组合一个 Keras MLP 来预测一个值是否会在接下来的 15 分钟内超过静态百分比阈值。传入的数据是一个滚动百分比,在大多数情况下平滑移动,因为数据每隔几毫秒出现一次,并且在某个固定的分钟数内窗口化。因此,当数据已经高于阈值时,它往往会在那里停留一段时间。

当把数据通过神经网络时,它得到了很高的准确率,但这似乎是因为它正确地预测了当它当前超过阈值时,它也会在下一个点(下一个点)超过阈值x 时间步长。该模型的用处在于它是否可以在超过阈值之前准确预测。

特征:

1) current point is over threshold - 1/0
2) current point is AM - 1/0
3) current day is weekday - 1/0
4) current percentage - 0.0-1.0
5-9) average of percentages in past 1/5/10/20/30 minute - 0.0-1.0

标签:

1 if a point is over threshold at any point in time after now and before now+15 minutes

特征 5-9 旨在捕捉当前百分比的惯性。

从特征重要性来看,当前值似乎被大量使用,其次是其是否超过阈值,其次是按时间​​顺序滚动的手段。我目前正在更改 NN 架构和 epoch 数以提高 f1 分数。我应该删除特征 1 和 4,还是重做标签,以便在预测能力实际超过阈值之前提高预测能力的准确性?

1个回答

将您的问题视为二进制分类。我们有两种预测:发出警报(状态将改变),不发出警报(状态将保持不变)。

Actual / Predicted   Alarm goes off      Alarm did not go off
State changed        True positive       False positive
State stayed         False negative      True negative

请注意,真正的否定是无用的 -我们不在乎状态是否保持在同一位置(低于/高于阈值)。因此,精度对于这个系统并不重要。不要试图最小化错误的度量。这延伸到“不要使用 ROC/AUC”(在你的问题中)。您可以使用 PR 曲线,但要小心那些(没有插值,没有 AUC PR,这些是错误的/无用的)。您可以使用的基本指标是 F 分数、准确率和召回率,或者对这些指标进行重新加权(例如,如果误报不如漏报重要)。

我们还想处理一个巨大的“滞后”,试图预测之前的许多时间段(在变化之前预测不太有用)。出于这个原因,我建议研究 MLP 以外的模型,尤其是那些基于循环神经网络的模型,例如 LSTM。还可以考虑使用时间序列预测而不是分类 - 关于该主题的文献非常广泛,并且非常适合您的问题。