We are still trying to figure out how good our system for determining whether e-mails are spam or not is. In the last post we ended up with a *confusion matrix* like this:

Actual label | |||

Spam | NonSpam | ||

Predicted label | Spam | 1 (true positives, TP) | 3 (false positives, FP) |

NonSpam | 2 (false negatives, FN) | 4 (true negatives, TN) |

Now we want to calculate numbers from this table to describe the performance of our system. One easy way of doing this is to use **accuracy A**. Accuracy basically describes which percentage of decisions we got right. So we would take the diagonal entries in the matrix (the true positives and true negatives) and divide by the total number of entries. Formally:

In our example the accuracy is:

Using accuracy is fine in examples like the above when both classes occur more or less with the same frequency. But frequently the number of true negatives is larger than the number of true positives by many orders of magnitudes. So let’s assume 994 for true negatives and when we calculate accuracy again, we get this:

It doesn’t really matter if we correctly identify any spam mails. Even if we always say NonSpam, so we get zero Spam-Mails right, we still get more nearly the same accuracy as above. So accuracy is not a good indicator of performance for our system in this situation. In the next post we will look at other measures we can use instead.

Link for a second explanation: Explanation from an Information Retrieval perspective