首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隔离森林滑雪板污染系数

隔离森林滑雪板污染系数
EN

Data Science用户
提问于 2019-07-01 19:58:09
回答 3查看 8.5K关注 0票数 8

我正在使用隔离林算法对时间序列数据进行无监督异常检测任务。我正在用Python开发它,更详细的是使用scikit-learn

我在这方面发现了很多例子,但不太清楚的是如何在IsolationForest的实例化过程中设置污染参数。

看看文档,污染是

数据集的污染量,即数据集中异常值的比例。

我应该使用一些统计技术来确定这个百分比吗?

EN

回答 3

Data Science用户

发布于 2019-07-02 02:50:06

我认为答案是“视情况而定”。当得分数据点被认为是一个离群点时,contamination参数简单地控制决策函数的阈值。它对模型本身没有影响。

根据您的应用程序,使用一些统计分析来获得污染的粗略估计是有意义的。(如果你能缩小范围,那么你就不需要隔离森林了.)

通常,我会说,这是一些商业预期的信息。就像“我们期望看到的速度与我们的竞争对手,谁报告了一个x”。

或者您期望数据集中有一定数量的异常值。然后,您可以使用原始分数来找到给出该数字的阈值,并在将模型应用于新数据时追溯地设置contamination参数。

票数 3
EN

Data Science用户

发布于 2021-11-19 09:05:20

参数contamination是(怀疑)数据集中的异常值的“共享”。考虑一下这个例子:

代码语言:javascript
复制
from sklearn.ensemble import IsolationForest
x = [[-1], [2], [3], [5], [7], [10], [12], [20], [30], [100]]

使用IsolationForestcontamination=0.1可以识别“前10%”的异常值。

代码语言:javascript
复制
clf = IsolationForest(contamination=0.1).fit(x)
clf.predict(x)
> [ 1  1  1  1  1  1  1  1  1 -1]

-1表示这里有一个“离群点”。

设置contamination=0.2会产生“十分之二”的值,这些值被识别为异常值。

代码语言:javascript
复制
clf = IsolationForest(contamination=0.2).fit(x)
clf.predict(x)
> [1  1  1  1  1  1  1  1 -1 -1]

参数contamination通常需要进行调优(或者其他假设需要进行调整)。调优后,通常会将其设置为优化顶级估值器的某个目标的值(在使用IsolationForest删除异常值之后)。

票数 2
EN

Data Science用户

发布于 2021-11-19 08:35:32

然后,我用预测的结果掩盖我的数据,用零来计算错误的恢复;通过计数零,我可以得到污染的估计。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/54873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档