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

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

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

现在我们有150万行乘以100列的训练数据。

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

问题在于,大多数异常检测算法(LOF、SOS、SOD、SVM)无法处理这种规模的数据。我们将训练数据量减少到50万行,但这些算法仍然会卡住。SVM在概念验证样本数据上表现最佳,但它没有n_jobs选项来在多核上运行。

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

有没有人对如何在大型数据集上运行异常检测算法有想法?

在标准的异常检测技术中找不到批量训练的选项。我们应该考虑使用神经网络(自动编码器)吗?

选择最佳模型:

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

在日志条目训练数据中,插入一个来自小说(例如《指环王》)的条目。这个日志条目的向量表示将与其他日志条目不同。

在运行各种异常检测算法时,看看哪些算法能够检测到来自小说的条目(这是一个异常)。

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

这种方法是否合理?我们也欢迎其他想法。鉴于这是一个无监督学习算法,我们不得不加入一个异常条目,看看哪个模型能够识别它。

我们设置的污染率为0.003


回答:

从你的描述来看,你似乎在处理一个新颖性检测问题。新颖性检测问题通常是一个半监督问题(例外或方法可能有所不同)。

现在,处理巨大矩阵大小的方法是使用批处理。这可以帮助你 – https://scikit-learn.org/0.15/modules/scaling_strategies.html

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注