我正在尝试使用自动编码器(如此处所述https://blog.keras.io/building-autoencoders-in-keras.html#)进行异常检测。我正在使用 ~1700 特征向量(而不是示例中使用的图像),每个向量描述不同的蛋白质相互作用。我有一个“正常”类别的交互,我在上面训练 AE,然后我给它提供新的向量并使用重建错误来检测异常交互。
调整我的阈值使我得到 0.95 的真阳性率,我得到 0.15 的假阳性率,这是相当高的。当我在正常和异常向量上训练 xgboost(在训练和测试中使用两种类型的交互)时,我能够获得 0.98 ** 的精度。
这是否意味着我的模型(或者实际上是我使用 AE 的方法)无效,或者这可能是我在训练异常检测器而不是 2 类别分类器(即我的情况下为 xgboost)时所希望的最好的?我应该如何进行?
** 当然,这只是一个健全性检查,不能作为解决方案。我需要该模型来检测可能与我目前拥有的非常不同的异常 - 因此我需要在正常交互集上对其进行训练,并将异常留给单独进行测试。