我试图了解是否可以将 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) 和其他竞争方法在现实生活和合成数据集上的最终结果表: 注意:粗体值是所有方法中最好的。
欢迎任何有用的评论!;-) 谢谢 ...