我正在研究异常值检测中的不同方法。我遇到了sklearn实现的隔离林和Amazon sagemaker实现的RRCF(健壮随机砍伐林)。这两种方法都是基于决策树的集成方法,旨在隔离每个点。隔离步骤越多,点越有可能是一个更内联的点,反之亦然
然而,即使在看了这些算法的原始论文之后,我仍然无法准确地理解这两种算法之间的区别。它们以什么方式工作?其中一个比另一个更有效率吗
编辑:我正在添加研究论文的链接以获取更多信息,以及一些讨论主题的教程
隔离林:
PaperTutorial
健壮的随机砍伐森林:
PaperTutorial
Tags:
在我的部分回答中,我假设你提到了Sklearn的隔离林。我认为这是四个主要区别:
代码可用性:隔离林在Scikit Learn(^{} )中有一个流行的开源实现,而健壮随机砍伐林(RRCF)的AWS实现在Amazon Kinesis和Amazon SageMaker中都是封闭源代码。GitHub上有一个有趣的第三方RRCF开源实现:https://github.com/kLabUM/rrcf;但还不确定它有多受欢迎
培训设计:RRCF可以在流上工作,正如本文中强调的,以及流分析服务Kinesis Data analytics中披露的。另一方面,缺少
partial_fit
方法提示我,Sklearn的隔离林是一个仅批处理的算法,不能轻易地在数据流上工作可扩展性:SageMaker RRCF更具可扩展性。Sklearn的隔离林是单机代码,尽管如此,它仍然可以通过
n_jobs
参数在CPU上并行化。另一方面,SageMaker RRCF可以在one machine or multiple machines上使用。此外,它还支持SageMaker管道模式(通过unix管道传输数据),这使得它能够在比磁盘上的数据大得多的数据上学习在每次递归隔离时对特征进行采样的方式:RRCF为方差较高的维度赋予了更多的权重(根据SageMaker doc),而我认为隔离林样本是随机的,这也是RRCF在高维空间表现更好的原因之一(来自RRCF论文的图片)
我相信他们在分配异常分数的方式上也有所不同。IF的分数基于与根节点的距离。RRCF基于新点改变树结构的程度(即,通过包含新点来改变树大小)。这使得RRCF对样本量不太敏感
相关问题 更多 >
编程相关推荐