用于无监督异常检测的 Python AUC 计算(隔离森林、椭圆包络,...)

Posted

技术标签:

【中文标题】用于无监督异常检测的 Python AUC 计算(隔离森林、椭圆包络,...)【英文标题】:Python AUC Calculation for Unsupervised Anomaly Detection (Isolation Forest, Elliptic Envelope, ...) 【发布时间】:2018-05-25 02:50:16 【问题描述】:

我目前正在研究异常检测算法。我阅读了比较基于 AUC 值的无监督异常算法的论文。例如,我有来自 Elliptic Envelope 和 Isolation Forest 的异常分数和异常类。我如何根据 AUC 值比较这两种算法。

我正在寻找一个 python 代码示例。

谢谢

【问题讨论】:

【参考方案1】:

问题解决了。到目前为止我已完成的步骤;

1) 异常函数后收集类和分数 2) 将异常分数转换为 0 - 100 等级,以便更好地与不同的算法进行比较 3) Auc 要求这个变量是数组。我的错误是将它们用作一直返回“nan”的数据框列。

Python 脚本:

#outlier_class and outlier_score must be array
fpr,tpr,thresholds_sorted=metrics.roc_curve(outlier_class,outlier_score)
aucvalue_sorted=metrics.auc(fpr,tpr)
aucvalue_sorted

问候,

塞克金丁克

【讨论】:

【参考方案2】:

虽然你已经解决了你的问题,我的 2 美分 :)

一旦您决定使用哪种算法方法来比较它们(可以说是您的“评估协议”),那么您可能会对在实际数据集上运行挑战者的方法感兴趣。

这个tutorial 解释了如何做到这一点,基于一个示例(比较多个数据集上的多项式拟合算法)。

(我是作者,欢迎在github页面提供反馈!)

【讨论】:

以上是关于用于无监督异常检测的 Python AUC 计算(隔离森林、椭圆包络,...)的主要内容,如果未能解决你的问题,请参考以下文章

Auto Encoder用于异常检测

无监督异常检测之卷积AE和卷积VAE

是否可以在 ML.Net 中进行多元无监督异常(异常值)检测?

《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法

《异常检测——从经典算法到深度学习》18 USAD:多元时间序列的无监督异常检测

《异常检测——从经典算法到深度学习》18 USAD:多元时间序列的无监督异常检测