1

我试图了解是否可以将 iForest 直接应用于一个非常大的静态数据集(固定大小,在基数和维度上),而不使用像 hadoop 或 spark 这样的分布式处理框架?甚至,这样的数据集是否被视为大数据?

当我直接说时,我的意思是不需要将整个数据加载到 RAM 中,因为如您所知,iForest 使用二次采样来制作 iTree,我不确切知道磁盘 I/O 速度在哪里有任何影响关于算法的性能与否!

实际上,我开发了一种新方法作为我的硕士论文,用于大数据中的局部异常值检测,该方法基于一种名为BFR的旧可扩展聚类算法,但与高斯簇的结构略有不同,它们可以相关。与 BFR 一样,它不需要将整个数据加载到 RAM 中并逐块扫描整个数据。它首先对整个数据进行随机样本以获得第一个聚类信息,然后应用可扩展聚类来完成聚类模型,最后通过对整个数据集的另一次扫描,它给每个对象一个名为 SDCOR(Scalable基于密度的聚类异常值比)。但问题是我使用的数据类型是静态的,而不是流式数据,甚至合成数据的最大大小约为 100 万乘 40 维,其容量小于 400 兆字节。但我已经在理论上和经验上证明了,它是可扩展的,它的时间复杂度是线性的,常数很小,对于提到的 1e6×40 数据集,它在大约 4 分钟内以 100% 的 AUC 完成处理,我相信它甚至可以更少改进实施。我已经在 MATLAB 9 中实现了整个方法,甚至制作了一个可爱的 GUI,目前我正在写我提到的论文的一篇论文,但我担心审稿人对声称 Big 的论文要点的反馈数据的东西!

这是我的方法 (SDCOR) 和其他竞争方法在现实生活和合成数据集上的最终结果表: 注意:粗体值是所有方法中最好的。SDCOR 的最终结果和竞争方法

这是我的 GUI 的屏幕截图: 合成器上的 SDCOR 屏幕截图。 数据集

欢迎任何有用的评论!;-) 谢谢 ...

4

2 回答 2

2

iForest 是一种基于二次采样的极其简单(因此速度很快)的密度估计技术。这不是最聪明的技术。它主要显示了异常值检测中的评估缺陷之一,并且许多数据集最好通过简单的密度估计来解决(因此,您始终应该包含 k=1,2,5,10 的 kNN 异常值 - 因为在非常多的数据上集,这种微不足道的方法会表现得很好)。当然,在这样的密度数据上,iForest 会大放异彩,它是一个非常快速的近似密度估计器。iForest 的结果通常与 kNN 相关,但由于近似,它会更好地扩展。

在您的屏幕截图中,此类数据集在很大程度上毫无意义。每当你有一个数据集,其中任何方法都有 100% 时,这只是意味着数据过于理想化,这就是过度拟合。

是的,您可以轻松地将其缩放为荒谬的大小数据,因为它无论如何都只使用样本。

对于坐标数据,永远不要使用 Spark 等 - 在预处理之后,这些数据几乎永远不会大到足以保证 Spark 的开销(只是做数学:有多少数据点适合主内存? -你不能拥有“大数据”对于低维点数据,您需要文本、图表、照片,或者更好的是视频)。使用内存索引解决方案(例如 ELKI)比使用 Matlab 几乎总是更有效 - 并且可能使用今天的内存,因为据我所知,Matlab 没有这样的索引。如果您想变得更快,请使用近似最近的邻居,例如 libANN 或 FLANN(但您需要自己编写代码,我通常使用 ELKI,因为它几乎可以尝试所有重要的方法)。

于 2018-07-24T17:54:16.527 回答
-1
  • 离群者并不总是“恶棍”。异常值通常具有与正常实例不同的特征,并且总是表示数据集中有价值的信息和知识。因此,异常值检测在各种应用中发挥着重要作用。因此,重要的是要证明异常值确实是信息块还是数据收集中的错误。一旦清楚地做出了这种区分,就可以进行进一步的分析。这里的重点是,如果你没有收集到数据并且数据集中存在异常值,那么你需要一个非常有力的理由首先证明它是一个异常值,然后再进行异常值处理。

  • 只要数据集可以容纳在单个独立计算机的辅助内存中,它就不是大数据。随机存取存储器 (RAM) 用于处理而不是存储。基于这个类比,实时天气传感器数据可以被认为是大的,因为它是实时的。请注意,天气传感器数据可能只记录几个维度,例如air-quality. 另一个例子是tweets推特上的。

于 2018-07-26T00:18:17.967 回答