【问题标题】:Isolation Forest vs Robust Random Cut Forest in outlier detection离群值检测中的隔离森林与鲁棒随机森林砍伐森林
【发布时间】:2020-11-16 19:35:30
【问题描述】:
我正在研究异常值检测中的不同方法。我遇到了 sklearn 的 Isolation Forest 实现和 Amazon sagemaker 的 RRCF(鲁棒随机切割森林)实现。两者都是基于决策树的集成方法,旨在隔离每一个点。隔离步骤越多,该点就越有可能是内点,反之亦然。
但是,即使在查看了算法的原始论文之后,我也无法准确理解这两种算法之间的区别。它们的工作方式有何不同?其中一个比另一个更有效吗?
编辑:我正在添加研究论文的链接以获取更多信息,以及一些讨论主题的教程。
隔离森林:
PaperTutorial
稳健的随机森林砍伐:
PaperTutorial
【问题讨论】:
标签:
python
scikit-learn
amazon-sagemaker
outliers
anomaly-detection
【解决方案1】:
在我的部分答案中,我假设您指的是 Sklearn 的隔离森林。我相信这是 4 个主要区别:
-
代码可用性: Isolation Forest 在 Scikit-Learn (sklearn.ensemble.IsolationForest) 中有一个流行的开源实现,而 Robust Random Cut Forest (RRCF) 的两个 AWS 实现都是闭源的,在Amazon Kinesis 和 Amazon SageMaker。不过在 GitHub 上有一个有趣的第三方 RRCF 开源实现:https://github.com/kLabUM/rrcf;但不确定它有多受欢迎
-
训练设计:RRCF 可以在流上工作,正如论文中强调的那样,并且在流分析服务 Kinesis Data Analytics 中公开。另一方面,partial_fit 方法的缺失暗示我 Sklearn 的 Isolation Forest 是一种仅批处理算法,无法轻松处理数据流
-
可扩展性: SageMaker RRCF 更具可扩展性。 Sklearn 的隔离森林是单机代码,但可以使用 n_jobs 参数在 CPU 上并行化。另一方面,SageMaker RRCF 可用于one machine or multiple machines。此外,它还支持 SageMaker Pipe 模式(通过 unix 管道流式传输数据),这使得它能够学习比磁盘上容纳的更大的数据
-
在每次递归隔离时对特征进行采样的方式:RRCF 赋予更高方差的维度权重(根据SageMaker doc),而我认为隔离森林是随机采样的,这是原因之一为什么 RRCF 有望在高维空间中表现更好(图片来自 RRCF 论文)
【讨论】:
-
-
@Olivier Cruchant 感谢您的出色回答。能否请您看一下相关帖子here?
【解决方案2】:
我相信他们在分配异常分数的方式上也有所不同。 IF 的分数基于与根节点的距离。 RRCF 基于新点对树结构的改变程度(即,通过包含新点来改变树的大小)。这使得 RRCF 对样本量的敏感性降低。