Dat*_*Man 6 python scikit-learn anomaly-detection
Scikit-Learn 的IsolationForest类有一个方法decision_function可以返回输入样本的异常分数。但是,文档并没有说明这些分数的可能范围是多少,只说明“[分数]越低,越不正常”。
编辑:阅读 jmunsch 的评论后,我再次查看了源代码,这是我更新的猜测:如果分数公式中的指数始终为负,则分数将始终介于 0 和 1 之间,这意味着返回的范围是 [- 0.5, 0.5] 因为0.5 - scores由该方法返回。但我不确定指数是否总是负数。
在 Scikit-Learn 的 IsolationForest 中,decision_function 返回 [-0.5, 0.5] 范围内的值,其中 -.5 是最异常的。
或者说我是这么认为的,并且从未见过其他的证据。Scikit-Learn 的 IsolationForest 的文档引用了 Liu 等人的论文《基于隔离的异常检测》。其中方程 2 定义异常分数。在论文中,异常分数范围在 0 到 1 之间,其中 1 表示最异常。在第267行引用的scores函数中,变量deeps.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_。
| 归档时间: |
|
| 查看次数: |
2924 次 |
| 最近记录: |