在大型数据集上训练异常检测模型并选择正确的模型 [关闭]
Posted
技术标签:
【中文标题】在大型数据集上训练异常检测模型并选择正确的模型 [关闭]【英文标题】:Training Anomaly detection model on large datasets and chossing the correct model [closed] 【发布时间】:2021-02-02 01:07:37 【问题描述】:我们正在尝试为应用程序日志构建异常检测模型。
预处理已经完成,我们已经构建了自己的 word2vec 模型,该模型在应用程序日志条目上进行了训练。
现在我们有一个 150 万行 * 100 列的训练数据
其中每一行是日志条目的向量化表示(每个向量的长度为 100,因此为 100 列)
问题在于大多数异常检测算法(LOF、SOS、SOD、SVM)都无法针对这一数据量进行扩展。我们将训练规模减少到 500K,但这些算法仍然挂起。在 POC 样本数据上表现最好的 SVM,没有让 n_jobs 在多核上运行它的选项。
一些算法能够完成,例如隔离森林(具有低 n_estimators)、直方图和聚类。但这些无法检测到我们故意放入训练数据的异常情况。
有人知道我们如何为大型数据集运行异常检测算法吗?
在标准异常检测技术中找不到批量训练的任何选项。我们应该研究一下神经网络(自动编码器)吗?
选择最佳模型:
鉴于这是无监督学习,我们选择模型的方法如下:
在日志条目训练数据中,插入小说中的条目(比如指环王)。此日志条目的矢量表示将不同于日志条目的其余部分。
在各种异常检测算法上运行数据集时,查看哪些算法能够检测到小说中的条目(这是异常)。
当我们尝试在一个非常小的数据集(1000 个条目)上运行异常检测时,这种方法很有效,其中日志文件使用 google 提供的 word2vec 模型进行矢量化。
这种方法合理吗?我们也对其他想法持开放态度。鉴于它是一种无监督学习算法,我们必须输入一个异常条目并查看哪个模型能够识别它。
投入的污染比例为0.003
【问题讨论】:
看看你能不能在这里找到一些东西-github.com/pankajmishra000/… 您的 150 万个数据点用于多长时间的时间窗口?您确定将所有内容合并在一起是否有意义。有时最好只拥有最后一个月等的数据,因为正常模式往往会随着时间而改变 【参考方案1】:根据您的解释,您似乎正在处理新奇检测问题。新颖性检测问题通常是半监督问题(例外情况或方法可能会有所不同)。
现在,如果您使用批处理,可以解决大矩阵大小的问题。这可以帮助你-https://scikit-learn.org/0.15/modules/scaling_strategies.html
最后是的,如果你可以使用深度学习,你的问题可以使用无监督学习或半监督学习以更好的方式解决(我推荐这个)。
【讨论】:
以上是关于在大型数据集上训练异常检测模型并选择正确的模型 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
组合两个预训练模型的输出(在不同数据集上训练)并使用某种形式的二元分类器来预测图像