Моя работа заключается в том, чтобы отделить законные данные пользователей от данных импортеров. Я использовал бинарный классификатор SVM для вывода вероятностей двух классов. Затем использовал кривую Roc из sklearn для возврата векторов 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
Я не понимаю, как правильно вычислить EER из лучших значений FNR и FPR.
Равная частота ошибок (EER) означает увеличение TPR и максимальное снижение FPR за счет выбора оптимального порога на кривой ROC.
Это также можно рассматривать как максимизацию 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).
Оба описанных выше подхода дают схожие результаты и уменьшают количество ложноположительных и ложноотрицательных результатов.
Ссылки: Ссылка на изображение , другая ветка на EER (stackoverflow)