使用自动编码器进行异常检测的无监督特征减少

数据挖掘 特征选择 无监督学习 异常检测 自动编码器
2021-09-26 03:17:33

我正在为无监督异常检测任务收集大量生成的数字特征。

我可以假设所有训练数据都被认为是正常的。

我希望某些生成的特征具有低标准偏差的特征,例如,某些特征在训练示例中可能始终为 0。相比之下,我预计其中一些特征会在异常情况下发生偏差。

由于我有很多特征,我努力进行特征减少/选择。但是,使用简单的特征选择方法,会完全去除不偏离的特征,对即将进行的检测造成更糟的影响。

为了减少特征,我正在考虑使用堆叠的自动编码器,这样每当一个特征与标准偏差很大时,它都会影响所有结果特征——导致明显的异常。

这种技术会奏效吗?如果不是,为什么?以及有什么其他技术可以解决这个问题。

此外,如果确实如此,并且我也计划使用深度自动编码器来进行异常检测,那么特征减少的第一步是否是多余的?

1个回答

我使用堆叠自动编码器将我们的 40 个特征逐步减少到 5 个特征,然后输出回 40 个特征(我的一些特征全为零/非偏差特征)。在原始(假设没有异常值)上进行训练可以为您提供一个网络,该网络已经学习了具有 5 个特征的 40 个特征的抽象表示。

当异常值出现时,这些值是不同的,并且网络无法重新构建这些特定的数据点,并且这些值的错误分数通常应该更高。

我将它与 Deeplearning4j 和 SparkDl4jMultiLayer 一起使用,在所有层上都使用了 KLDivergence 损失函数,除了具有 MSE 损失函数的输出层。带有 Sigmoid 激活函数。