Scikit-Learn的IsolationForest decision_function得分范围是多少?

时间:2017-07-20 19:44:28

标签: python scikit-learn anomaly-detection

Scikit-Learn的IsolationForest类有一个方法decision_function,它返回输入样本的异常分数。但是,文档没有说明这些分数的可能范围是什么,并且只表示"分数越低,越不正常。"

编辑:在阅读了jmunsch的评论后,我再次查看了源代码,这是我更新的猜测: 如果scores formula中的指数始终为负,则分数将始终在0和1之间,这意味着返回的范围为[-0.5,0.5],因为方法返回0.5 - scores。但我不确定指数是否总是负数。

1 个答案:

答案 0 :(得分:0)

在Scikit-Learn的IsolationForest中,decision_function返回的值在[-0.5,0.5]范围内,其中-.5是最异常的。

或者我相信而且从未见过其他证据。 Scikit-Learn的IsolationForest的文档引用了论文Isolation-based Anomaly Detection by Liu et al.,其中等式2定义了异常得分。在本文中,异常得分在0到1之间,其中1是最异常的。在scores function中,您在第267行中引用的变量depths.mean(axis = 1)对应于E(h(x)),_ average_path_length(self.max_samples_))对应于本文中的c(psi)。因此,在第272行,当函数返回1减去分数时,我们得到的边界为[-0.5,0.5]。

编辑/奖励: 隔离林的预测方法有效地只是将Decision_function值与model.threshold_中存储的阈值进行比较。因此,在对某些数据调用模型的预测方法后,异常项就是满足条件的相同项:model.decision_function(data) < model.threshold_