<p>在我的部分回答中,我假设你提到了Sklearn的隔离林。我认为这是四个主要区别:</p>
<ol>
<li><p><strong>代码可用性:</strong>隔离林在Scikit Learn(<a href="https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.IsolationForest.html" rel="noreferrer">^{<cd1>}</a>)中有一个流行的开源实现,而健壮随机砍伐林(RRCF)的AWS实现在<a href="https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sqlrf-random-cut-forest.html" rel="noreferrer">Amazon Kinesis</a>和<a href="https://docs.aws.amazon.com/sagemaker/latest/dg/randomcutforest.html" rel="noreferrer">Amazon SageMaker</a>中都是封闭源代码。GitHub上有一个有趣的第三方RRCF开源实现:<a href="https://github.com/kLabUM/rrcf" rel="noreferrer">https://github.com/kLabUM/rrcf</a>;但还不确定它有多受欢迎</p>
</li>
<li><p><strong>培训设计:</strong>RRCF可以在流上工作,正如本文中强调的,以及流分析服务Kinesis Data analytics中披露的。另一方面,缺少<code>partial_fit</code>方法提示我,Sklearn的隔离林是一个仅批处理的算法,不能轻易地在数据流上工作</p>
</li>
<li><p><strong>可扩展性:</strong>SageMaker RRCF更具可扩展性。Sklearn的隔离林是单机代码,尽管如此,它仍然可以通过<code>n_jobs</code>参数在CPU上并行化。另一方面,SageMaker RRCF可以在<a href="https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html" rel="noreferrer">one machine or multiple machines</a>上使用。此外,它还支持SageMaker管道模式(通过unix管道传输数据),这使得它能够在比磁盘上的数据大得多的数据上学习</p>
</li>
<li><p><strong>在每次递归隔离时对特征进行采样的方式</strong>:RRCF为方差较高的维度赋予了更多的权重(根据<a href="https://docs.aws.amazon.com/sagemaker/latest/dg/rcf_how-it-works.html" rel="noreferrer">SageMaker doc</a>),而我认为隔离林样本是随机的,这也是RRCF在高维空间表现更好的原因之一(来自RRCF论文的图片)
<a href="https://i.stack.imgur.com/3FXmE.png" rel="noreferrer"><img src="https://i.stack.imgur.com/3FXmE.png" alt="enter image description here"/></a></p>
</li>
</ol>