如何提高 Isolation forest 在时间序列上的性能?

How to improve the performance of Isolation forest on time series?

我在时间序列上使用隔离林。我正在尝试对传感器数据中的故障进行分类,但隔离林的功能并不像我希望的那样。图片显示了很多跳跃没有被检测到。

我正在寻找有关如何改进故障检测的技巧?例如,可以添加或更改参数的功能?我还在某处读到使用滚动 windows 会有帮助,但我不确定具体如何?

我也对使用隔离林时的一般技巧感兴趣。

您使用的功能必须反映您希望检测的异常类型。在您的情况下,您将异常定义为短时间内值的大幅跳跃。为此,您应该将输入数据转换为差异 - 并将其用作异常检测方法的输入。 最简单的方法是使用 numpy.ediff1d 之类的方法计算连续值之间的差异。对于更通用的解决方案,考虑计算 windows 少量数据点,并在每个 window 中计算 max-min,并将其用作特征。

此外,对于像这样的单变量连续问题,有比孤立森林更合适的异常方法。像 Z-score 或中值绝对偏差这样的简单变换。 scikit-learn EllipticEnvelope 是一种选择。