In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-03-28 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Internet Technology >
Share
Shulou(Shulou.com)06/01 Report--
This article mainly introduces "what is the use of EER". In daily operation, I believe many people have doubts about the use of EER. The editor consulted all kinds of materials and sorted out simple and easy-to-use methods of operation. I hope it will be helpful for you to answer the doubts about "what is the use of EER?" Next, please follow the editor to study!
FRR (False Rejection Rate) and FAR (False Acceptance Rate) are two main parameters used to evaluate the performance of fingerprint recognition algorithms.
The popular term FRR means rejection rate, and the standard name is FNMR (False Non-Match Rate mismatch rate). It can be popularly understood as the probability of "treating fingerprints that should match each other successfully as unmatched fingerprints".
Equal Error Rate, the most commonly used evaluation criterion in speaker recognition and speaker confirmation, is a false acceptance rate (nontarget_is_target / (target_is_target + nontarget_is_target)) and false rejection.
A relative equilibrium threshold point of the rate (target_is_nontarget / (target_is_nontarget + nontarget_is_nontarget)), which can then be used as a fixed threshold for the actual use phase.
If the score is not-170----A-threshold-B-+ 100, it is supposed to be nontarget in An and target in B. If target appears in A, it is mistakenly rejected, if it appears in B.
Nontarget just received it incorrectly.
FAR is generally called fake recognition rate, and its standard name is FMR (False Match Rate mismatch rate). FMR is the most important parameter used to evaluate the performance of fingerprint recognition algorithm. It can be popularly understood as "taking fingerprints that should not be matched as matches."
The probability of "fingerprints.
FAR decreases with the increase of threshold, while FRR increases with the increase of threshold. So they must have an intersection. This point is the point where FAR is equivalent to FRR at a certain threshold. It is customary to use this value to measure the overall performance of the algorithm.
For a better fingerprint algorithm, it is hoped that under the same threshold, the smaller the FAR and FRR, the better.
Translate both the FAR and FRR curves downward. At the same time, the point of intersection ERR also translates downward. Therefore, the smaller the EER value, the higher the overall performance of the algorithm.
Equal Error Rate, the most commonly used evaluation criterion in speaker recognition and speaker confirmation, is a relative balance threshold point between false acceptance rate (nontarget_is_target / (target_is_target + nontarget_is_target)) and false rejection rate (target_is_nontarget / (target_is_nontarget + nontarget_is_nontarget)), and then this threshold point can be used as a fixed threshold in the actual use stage.
I still remember trials files. I still remember that there are no cvs files to forge trials documents. I still don't understand why 50% or 80% of nontarget is made in order to calculate EER. So in the forgery of trials documents, it is best to distribute evenly, that is, to involve everyone, everyone must have a certain number of nontarget, in fact, everyone can do a nontarget to everyone else, in the end, I am not sure whether to take part or all of this, and then update it after verification (remember to verify).
-- > Let's start with some EER calculations:
False reject and false accept. Clearly, the false reject rate and the false accept rate depend on the threshold. When the two rates are equal, the common value is called equal error rate (EER).
What is false reject (represented by fr) is the result reject that should have been accept:
FR = target_is_nontarget / (target_is_nontarget + nontarget_is_nontarget)
And false accept (represented by fa) is the result accept that should have been reject:
FA = nontarget_is_target / (target_is_target + nontarget_is_target)
When E (fr) = E (fa) = E, E is the EER value.
Wikipedia ROC curve https://zh.wikipedia.org/wiki/ROC curve
-- > then take a look at the kaldi source code:
Eer=compute-eer / dev/null
Run separately:
Python local/prepare_for_eer.py data/test/trials exp/scores_gmm_2048_ind_female/plda_scores
Results:
-30.99115 target-28.06169 target-17.78868 target-87.6428 nontarget-74.32495 nontarget-74.18333 nontarget-5.662024 target-7.832421 target-26.46083 target-74.93365 nontarget-86.17784 nontarget-50.90917 nontarget-26.51904 target-14.09044 target...#Ki is the lines stream above. Delete all the useless code and check out the kaldi source code while (std::getline (ki.Stream (), line)) {std::vector split_line. SplitStringToVector (line, "\ t", true, & split_line); BaseFloat score; if (split_line [1] = = "target") target_scores.push_back (score); else if (split_line [1] = = "nontarget") nontarget_scores.push_back (score) Else KALDI_ERR size (), # count the number of nontarget # such as nontarget_size=100, target_size=100 this nontarget_n belongs to [0100], # so nontarget_positon from 99 to-1 nontarget_n = nontarget_size * target_position * 1.0 / target_size; nontarget_position = nontarget_size-1-nontarget_n; if (nontarget_position)
< 0) nontarget_position = 0; #所以当nontarget_position 小于 target_position 的值的时候 if ((*nontarget_scores)[nontarget_position] < (*target_scores)[target_position]) break; } *threshold = (*target_scores)[target_position]; BaseFloat eer = target_position * 1.0 / target_size; return eer;}要理解这个函数的实现,其实在compute-eer里边还是一行注释:ComputeEer computes the Equal Error Rate (EER) for the given scores and returns it as a proportion beween 0 and 1. If we set the threshold at x, then the target error-rate is the proportion of target_scores below x; and the non-target error-rate is the proportion of non-target scores above x. We seek a threshold x for which these error rates are the same; this error rate is the EER. We compute this by iterating over the positions in target_scores: 0, 1, 2, and so on, and for each position consider whether the cutoff could be here. For each of these position we compute the corresponding position in nontarget_scores where the cutoff would be if the EER were the same. For instance, if the vectors had the same length, this would be position length() - 1, length() - 2, and so on. As soon as the value at that position in nontarget_scores at that position is less than the value from target_scores, we have our EER.下面拿一个例子用python简单模拟一下:#coding: utf-8'''首先计算这一步,将target的得分和nontarget的得分文件python local/prepare_for_eer.py data/test/trials exp/scores_gmm_2048_ind_female/plda_scores >Scores'''target_scores = [] nontarget_scores = [] f = open ('scores'). Readlines () # read out two arrays for line in f: splits = line.strip (). Split ('') if splits [1] = 'target': target_scores.append (eval (splits [0])) else: nontarget_scores.append (eval (splits [0])) # sort Sort from small to large target_scores = sorted (target_scores) nontarget_scores = sorted (nontarget_scores) print target_scorestarget_size = len (target_scores) target_position = 0for target_position in range (target_size): nontarget_size = len (nontarget_scores) nontarget_n = nontarget_size * target_position * 1.0 / target_size nontarget_position = int (nontarget_size-1-nontarget_n) if nontarget_position
< 0: nontarget_position = 0 if nontarget_scores[nontarget_position] < target_scores[target_position]: print "nontarget_scores[nontarget_position] is", nontarget_position, nontarget_scores[nontarget_position] print "target_scores[target_position] is", target_position, target_scores[target_position] breakthreshold = target_scores[target_position]print "threshold is -->", thresholdeer = target_position * 1.0 / target_sizeprint" eer is-> ", eer so far, the study of" what's the use of EER "is over, hoping to solve everyone's doubts. The combination of theory and practice can help you learn better, try it! if you want to continue to learn more related knowledge, please continue to follow the website, the editor will continue to work hard to bring you more practical articles!
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.