前言
机器学习中各种度量很容易搞晕学习者的头脑。但是如果把他们和混淆矩阵一起来看的话,会容易理解很多。
我也是经常接触,所以有一些自己的感悟,记录下来。
混淆矩阵(confusion matrix)
我理解上的混淆矩阵就是一个分类器对于正反例(假设是二分类,多分类也类似)的混淆程度。
我有见过两种不同混淆矩阵,主要区别是对于真实的类别和猜测的类别的位置互换。其实本质上没有大区别的,看每一个人的习惯。这里采用wikipedia的格式。
初学者一般看到这个矩阵的描述就晕了。怎么那么多字母?TP,FP,FN,TN是什么?就算告诉你TP=True Positive的意思,你也要晕半天,更别说之后的各种度量公式。如PPV, NPV,Recall, F1,ROC等等。
怎么生成混淆矩阵
假设测试数据中我有5个猫图片和8个非猫图片的例子。首先在猫(P)的地方的P填写5, 非猫(N)的地方的N填写8。说明测试数据中真实的类别猫有5例,非猫有8例。
在TP,FP,FN,TN的地方都填上0。
接下去从13例测试例子中一例一例的问分类器(也就是我),比如拿一例猫图片问我,我回答是猫,那么在TP的地方就加1。如果我回答了非猫,那么在FN的地方就加1。再比如拿一例非猫的图片问我,我回答是非猫,那么在TN的地方加1,如果我回答了猫,那么在FP的地方加1。
等13例都问完之后,那么整个混淆矩阵也就完成了。如下图:
基本用语的解释
condition positive (P) = 测试数据中正例的数量