用于无监督异常检测的 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 计算(隔离森林、椭圆包络,...)的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 ML.Net 中进行多元无监督异常(异常值)检测?
《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法