【问题标题】:Accuracy in outlier detection异常值检测的准确性
【发布时间】:2022-12-25 17:02:53
【问题描述】:

在了解异常值时,我在理解这个问题时遇到了问题。我附上了问题的图片。有没有人帮助我理解这个问题,因为我是数据挖掘的新手并且无法破解这个问题。用于扩展我的知识的资源将不胜感激。

我现在所知道的是,您可以通过比较生成的结果和预测的结果来检查一个模型检测异常值的准确性。但在这个问题中,没有这样的实际价值让我走向这个问题。如果有人能帮助我,那将是一个很大的帮助。 在此先感谢enter image description here

【问题讨论】:

    标签: machine-learning data-mining outliers


    【解决方案1】:

    这些问题的目的似乎与 ROC 曲线解释更相关,而不是手头的任务是异常值预测问题。似乎需要了解如何根据 ROC 曲线比较两种算法,并得出结论,在这种情况下使用的合适指标是 AUC 分数。 使用 Python 和 scikit-learn,我们可以轻松绘制两条 ROC 曲线,如下所示:

    #define three lists with the given data: two sets of scores and their true class
    scores1 = [0.44, 0.94, 1.86, 2.15, 0.15, 0.5, 5.4, 3.09, 7.97, 5.21]
    scores2 = [0.73, 0.18, 0.76, 1.6, 3.78, 4.45, 0.3, 3.3, 0.44, 9.94]
    y = [0,0,0,1,0,0,1,1,0,0]
    
    # calculate fpr, tpr and classification thresholds
    from sklearn.metrics import roc_curve, roc_auc_score, RocCurveDisplay
    fpr1, tpr1, thresholds1 = roc_curve(y, scores1)
    fpr2, tpr2, thresholds2 = roc_curve(y, scores2)
    auc1 = roc_auc_score(y, scores1)
    auc2 = roc_auc_score(y, scores2)
    
    # get the curve displays using the above metrics
    curve1 = RocCurveDisplay(fpr=fpr1, tpr=tpr1, roc_auc=auc1, 
    estimator_name='Algo1')
    curve2 = RocCurveDisplay(fpr=fpr2, tpr=tpr2, roc_auc=auc2, 
    estimator_name='Algo2')
    curve1.plot()
    curve2.plot()
    

    然后,您可以根据图中 x 轴上的假阳性率与 y 轴上的真阳性率的值以及它们所暗示的权衡来解释这些图。此外,您会看到算法 1 的图表比算法 2 的图表占更大的 TPR 分数,是完成此任务的更好算法。此外,这可以使用 AUC 作为度量来形式化,它是使用“roc_auc_score”计算的。

    请注意,如果您使用相应的分类阈值计算每个算法的 FPR 和 TPR,您也可以手动绘制该图。

    希望能帮助到你 :)

    问候, 杰霍娜。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 2018-12-06
      相关资源
      最近更新 更多