使用自动编码器进行异常检测的交叉验证

数据挖掘 神经网络 交叉验证 无监督学习 异常检测 自动编码器
2022-03-11 04:43:50

我正在使用自动编码器来检测保修数据中的异常情况。我没有任何基本事实标签来确认模型检测到的异常是否真的是异常。由于我没有标签,我想知道在这种情况下是否有办法进行交叉验证?

任何帮助深表感谢

3个回答

自动编码器用于降低特征空间的维数。它们可以捕捉到其他降维技术(如 PCA)无法捕捉到的非线性。自动编码器是通过训练模型来重现输入来构建的。在这种情况下,您可以将数据集拆分为三个:

  • 训练
  • 交叉验证
  • 测试

使用训练集训练您的模型,通过查看交叉验证集的损失来检查性能,进行一些更改,然后重复。在你有一个你有信心的模型之后,然后使用测试数据集作为其性能的最终决定。

我认为重点是您的损失应该与数据集元素与该元素的编码然后解码版本之间的差异有关。因此,在调整编码器的超参数时,您可以针对单独的数据块进行交叉验证。

我们有同样的问题。这是工业界的一个大问题。我们发现了异常情况并进行了很多验证。因为这是无监督技术。(如果有监督会更容易 - https://machinelearningstories.blogspot.com/2018/07/anomaly-detection-anomaly-detection-by.html)几个月后,我们采用了这种方法-

1)请保修数据专家验证结果。
2)如果可能的话,他们能否对整个数据进行标记,从而使该问题得到监督?
3) 作为模型迭代改进的一部分,从无监督结果中去除误报。

如果您有兴趣,我可以分享更多信息。我们为验证做了很多努力,也遇到了很多摩擦。希望你能避免这些。

不,交叉验证需要标记数据,因为您正在根据基本事实(标签)测量预测的性能。

如果在您的情况下,由于这是业务运营的一部分,您可以就哪些观察被正确分类以生成一组标签征求反馈。然后,您可以使用最近邻类型算法来识别其他类似情况。