在大型数据集上训练异常检测模型并选择正确的模型

Training Anomaly detection model on large datasets and chossing the correct model

我们正在尝试为应用程序日志构建异常检测模型。

预处理已经完成,我们已经构建了自己的 word2vec 模型,该模型在应用程序日志条目上进行了训练。

现在我们有 150 万行 * 100 列的训练数据

其中每一行都是日志条目的向量化表示(每个向量的长度为 100,因此有 100 列)

问题是大多数异常检测算法(LOF、SOS、SOD、SVM)都没有针对这种数据量进行缩放。我们将训练大小减少到 500K,但这些算法仍然挂起。在 POC 样本数据上表现最好的 SVM,在多核上没有 n_jobs 到 运行 的选项。

一些算法能够完成,例如 Isolation Forest(低 n_estimators)、Histogram 和 Clustering。但是这些无法检测到我们故意放入训练数据中的异常。

有人知道我们如何 运行 大型数据集的异常检测算法吗?

在标准异常检测中找不到批量训练的任何选项techniques.Shall我们研究神经网络(自动编码器)?

选择最佳模型:

鉴于这是无监督学习,我们选择模型的方法如下:

在日志条目训练数据中,插入小说中的条目(比如指环王)。此日志条目的矢量表示将与其余日志整体不同。

虽然 运行 在各种异常检测算法上使用数据集,看看哪些算法能够检测到小说中的条目(这是一个异常)。

当我们尝试在非常小的数据集(1000 个条目)上运行 异常检测时,这种方法奏效了,其中日志文件是使用 google 提供的 word2vec 模型矢量化的。

这种方法合理吗?我们也对其他想法持开放态度。鉴于它是一种无监督学习算法,我们不得不输入一个异常条目,看看哪个模型能够识别它。

投入的污染比为0.003

根据您的解释,您似乎正在解决新颖性检测问题。新颖性检测问题通常是 semi-supervised 问题(例外或方法可能有所不同)。

现在如果使用批处理就可以解决矩阵大小过大的问题。这可以帮助你- https://scikit-learn.org/0.15/modules/scaling_strategies.html

最后是的,如果你可以使用深度学习,你的问题可以使用无监督学习或 semi-supervised 学习(我推荐这个)以更好的方式解决。