-2

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

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

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

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

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

一些算法能够完成,例如隔离森林(具有低 n_estimators)、直方图和聚类。但是这些无法检测到我们故意放入训练数据的异常情况。

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

在标准异常检测技术中找不到批量训练的任何选项。我们应该研究一下神经网络(自动编码器)吗?

选择最佳模型:

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

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

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

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

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

投入的污染比例为 0.003

4

1 回答 1

0

根据您的解释,您似乎正在处理新奇检测问题。新颖性检测问题通常是半监督问题(例外或方法可能会有所不同)。

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

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

于 2020-10-19T09:17:51.790 回答