【问题标题】:Correct compute of equal error rate value正确计算相等错误率值
【发布时间】:2021-03-21 15:45:44
【问题描述】:

我的工作是将用户的合法数据与进口商的数据进行分类。我使用二进制 SVM 分类器来输出这两个类的概率。然后使用 sklearn 中的 Roc 曲线返回不同阈值的 TPR 和 FPR 向量,如下所示:

classifier = SVC(kernel='rbf',  probability=True,  random_state=0, gamma=0.0001, C=0.5)
classifier.fit(X_train, y_train)

y_probas = classifier.predict_proba(X_test)
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_probas, pos_label=0)
fnr = 1- tpr 

输出的fpr和tpr向量如下:

但是,为了计算 EER 值,我搜索了很多,发现人们谈论不同的建议。我知道 EER 分数应该是 FNR 和 FPR 相等时的值(或者至少它们之间的距离最小,如下图红圈所示)。

这是否意味着 EER = fnr[%] = 8.33 和 fpr[%] = 10.6 之间的差值?我的意思是 EER = (10.6- 8.33) = 2.27%?

还是这两个值的最小值?我的意思是 EER = 8.33%

还是两个值的平均值? EER = (10.6 + 8.33)/2 = 9.465

我对根据最佳 FNR 和 FPR 值计算 EER 的正确方法感到困惑。

【问题讨论】:

    标签: python scikit-learn svm


    【解决方案1】:

    等错误率 (EER) 是指通过在 ROC 曲线上选择最佳阈值来尽可能提高 TPR 并降低 FPR。 这也可以被视为最大化 TPR 和最小化 FPR 或简单地maximizing (TPR - FPR)。通过最大化,我的意思是使值接近 1。 上面的公式也可以写成 minimizing (1 - (TPR - FPR)); 这里,最小化意味着使值接近 0。 因为,FNR = 1 - TPR,上述函数采用以下形式, minimizing (FNR + FPR),即FNR和FPR都必须接近0。

    另一种方法是说,ROC 曲线左上角的点对应于最佳阈值。这可以通过想象一条从 ROC 曲线的左上角到右下角的线来计算。最接近该对角线的点对应于最佳阈值。 这个对角线的方程是:

    TPR + FPR - 1 = 0 (or close to zero)
    Now, FNR = 1 - TPR, so,
    FPR - FNR = 0 (close to zero).
    

    上述两种方法产生相似的结果并减少误报和误报的数量。

    参考:Picture linkanother thread on EER (stackoverflow)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2014-03-18
      • 1970-01-01
      • 2022-08-22
      • 2016-11-08
      • 1970-01-01
      相关资源
      最近更新 更多