我在从时间序列数据中检测异常时遇到了一些问题。
我使用LSTM模型来预测下一时间点的值作为y_pred,数据在下一时间点的真实值为y_real,因此我有er = |y_pred – y_t|,我用er与threshold = alpha * std进行比较来获取异常数据点。但有时我们的数据会受到管理员或用户的影响,例如周日的游戏玩家数量会高于周一。
那么,我应该使用另一种模型来分类异常数据点,还是使用”If else”来分类呢?
回答:
我认为您使用的是批处理模型(您没有使用任何实时处理框架和工具),因此在构建模型或分类时不应该有任何问题。问题可能会在您构建模型一段时间后出现,因此在那之后您的预测模型将不再有效。我建议一些方法或许可以解决这个问题:使用实时或近实时处理(如apache spark, flink, storm等)。定期使用一些条件检查您的数据是否有任何变化,如果发生变化,则再次运行您的模型。删除您认为可能引起问题的实例(可能那些变化的数据本身就是异常),但在删除之前请确保这些数据不是很重要。更改您的算法,使用对变化不太敏感的算法。