我目前正面临一项任务,我需要认识到实例中异常的存在,每个异常由多个时间序列描述。 每个异常可能持续10秒或更长时间(通常少于几分钟)。
具体来说就是这种情况:
我想在一组带标签的实例上训练模型,该模型能够识别在以前从未观察到的新实例中是否存在异常间隔。
我尝试的第一种方法是基于窗口化:给定一个训练实例,我只是在每个时间序列(例如10秒长)上应用一个“移动窗口”,然后对属于窗口(例如,平均值,最小值,最大值,方差,熵,能量,...我将TsFresh库用于此类任务)。然后,根据手工制作的标签,我将每个窗口标记为“异常”(特别是,如果存在一个重叠于窗口95%的异常,则将其标记为异常)。
因此,训练集是由以下形式的实例构成的: [average_ts_1,min_ts_1,max_ts_1,...,average_ts_10,min_ts_10,max_ts_10,标签]
尽管这种方法给我带来了令人鼓舞的结果,但我想直接处理时间序列数据,以免丢失任何潜在的信息。 在这种情况下,我认为任务将变成:给定10个时间序列作为输入,预测仅由1和0组成的另一个时间序列。这样的预测时间序列将覆盖与输入的时间序列相同的时间段,并且会告诉我异常出现的间隔时间(例如,间隔为1秒)。
现在,最后一个问题是:我可以使用任何(深度)学习架构来完成这项任务吗?
当前,我正在使用Python,并依赖于XGBoost和窗口技术。 我在Keras上也有一些经验,但是我愿意接受任何建议。