Monday, May 12, 2014

Binary classification performance

It is a frequent task to decide if specific object belongs to one of two classes. This task is called binary classification.

For example if we want to implement face detection (FD) algorithm we will first split image into number of fragments. After that we perform binary classification for each of them. Such classification will decide to which class (face / non-face) each fragment belongs to.

It seems to be a trivial task for humans, but for computer it's not so easy. So, if we want to achieve good results - it is very important to measure performance of our classification algorithm.

Let's agree that our binary classifier gives positive result if it believes that given fragment is a face and negative, if given fragment is not a face.

From the performance point of view, every classification attempt can produce one of four outcomes:
  • true positive - fragment is a face and classification result is positive
  • false positive  (or Type I error) - fragment is not a face but classification result is positive. 
  • true negative - fragment is not a face and classification result is negative
  • false negative (or Type II error) - fragment is a face and classification result is negative
Visually it can be represented as a confusion matrix:

Let's define TP, FP, TN and FN as a total number of true positive, false positive, true negative and false negative classification outcomes, correspondingly.

Having this 4 variables we can define following equations:

True positive rate (Recall):
    TPR = TP / (TP + FN)

True negative rate (Specificity):
    TNR = TN / (TN / FP)

Concept behind them is very simple - TPR tells how well our classification algorithm can pick real human faces and TNR says how resistant is our algorithm to fragments which are not faces.

In the next blog entry I will write about ROC curve, and how it can be used to tune binary classification algorithm performance.