等错误率值的正确计算
Correct compute of equal error rate value
我的工作是将用户的合法数据与进口商的数据进行分类。我使用二进制 SVM 分类器输出两个 类 的概率。然后使用Roc曲线从sklearn到return不同阈值的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%
还是两个值的平均值?能效比 = (10.6 + 8.33)/2 = 9.465
我对根据最佳 FNR 和 FPR 值计算 EER 的正确方法感到困惑。
Equal Error Rate (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 link, another thread on EER (Whosebug)
我的工作是将用户的合法数据与进口商的数据进行分类。我使用二进制 SVM 分类器输出两个 类 的概率。然后使用Roc曲线从sklearn到return不同阈值的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%
还是两个值的平均值?能效比 = (10.6 + 8.33)/2 = 9.465
我对根据最佳 FNR 和 FPR 值计算 EER 的正确方法感到困惑。
Equal Error Rate (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 link, another thread on EER (Whosebug)