我正在实施一个异常检测系统,该系统将用于不同的时间序列(每 15 分钟一次观察,总共 5 个月)。所有这些时间序列都有一个共同的模式:在工作时间高水平,否则低水平。
许多论文中提出的想法如下:建立一个模型来预测未来值并根据残差计算异常分数。
到目前为止我所拥有的
我使用 LSTM 在给定前 96 天(1 天的观察)的情况下预测下一个时间步,然后我计算异常分数作为残差来自两个正态分布之一的可能性,这些正态分布拟合通过验证测试获得的残差. 我正在使用两种不同的分布,一种用于工作时间,一种用于非工作时间。
该模型可以很好地检测点异常,例如突然下降和峰值,但例如在节假日时会失败。
如果假期是在一周内,我希望我的模型能够检测到更多异常情况,因为这是正常工作日的不寻常日常模式。但预测只是遵循先前的观察。
我的解决方案
使用第二个更轻量级的模型(基于时间序列分解),使用每日聚合而不是 15 分钟聚合来检测每日异常。
问题
两种模型的这种组合让我可以同时拥有两种异常情况,而且效果很好,但我的想法是只使用一个模型,因为我希望 LSTM 也能够“学习”每周模式。相反,它严格遵循之前的时间步骤,而不考虑它是一个工作时间,并且水平应该更高。我尝试在输入中添加外生变量(一天中的小时,一周中的一天),以添加层和单元格数量,但情况并没有那么好。
任何考虑都值得赞赏。谢谢