我正在研究异常值检测中的不同方法。我遇到了sklearn的Isolation Forest实施和Amazon sagemaker的RRCF(Robust Random Cut Forest)实施。两者都是基于决策树的集成方法,旨在隔离每个点。隔离步骤越多,该点越可能成为一个惯常值,反之亦然。
但是,即使查看了算法的原始论文,我仍然无法确切了解这两种算法之间的区别。他们的工作方式有何不同?其中一个比另一个更有效吗?
编辑:我将添加指向研究论文的链接以获取更多信息,以及一些讨论该主题的教程。
隔离林:
强健的随机砍伐森林:
答案 0 :(得分:4)
在我的部分答案中,我假设您是指Sklearn的隔离林。我相信这是4个主要区别:
代码可用性::“隔离林”在Scikit-Learn(sklearn.ensemble.IsolationForest
)中具有流行的开源实施,而两种AWS实施的“鲁棒随机砍伐林(RRCF)”都是封闭源代码,位于Amazon Kinesis和Amazon SageMaker中。 GitHub上有一个有趣的第三方RRCF开源实现:https://github.com/kLabUM/rrcf;但不确定它有多流行
培训设计::RRCF可以在流上工作,如本文中突出显示和流分析服务Kinesis Data Analytics中所公开。另一方面,partial_fit
方法的缺失提示我Sklearn的隔离林是仅用于批处理的算法,无法轻松处理数据流
可扩展性:SageMaker RRCF具有更高的可扩展性。 Sklearn的隔离林是单机代码,但是仍可以使用n_jobs
参数在CPU上并行化。另一方面,可以在one machine or multiple machines上使用SageMaker RRCF。此外,它支持SageMaker Pipe模式(通过unix管道流传输数据),使其能够学习比磁盘上容纳的数据大得多的数据
每种递归隔离的特征采样方式:RRCF赋予具有较高方差的权重,且方差较高(根据SageMaker doc),而我认为隔离林样本是随机的,这就是为什么RRCF有望在高维空间中表现更好的原因之一(摘自RRCF论文)
答案 1 :(得分:0)
我相信他们在分配异常分数方面也有所不同。 IF的分数基于与根节点的距离。 RRCF基于新点改变树结构的程度(即,通过包含新点来改变树的大小)。这使RRCF对样本大小的敏感性降低。