在多分类任务中,confusion matrix是一种比较好的方式看查看分类器的性能的指标。
以下为一个confusion matrix的示例,分类器将输入分成三类,分别是ABC。
category | A | B | C |
---|---|---|---|
A | 90 | 5 | 5 |
B | 0 | 95 | 5 |
C | 2 | 0 | 98 |
confusion matrix中的每行表示该分类被分到每个类别中的数量。比如第一行表示A被分类到其他分类的数量,其中90个被正确地分到A中,另外各有5个被分到B和C中。理想的分类器的confusion matrix应该只有对角线上有元素,其他地方都是0,表示每个分类都完全正确。
有了confusion matrix,我们还可以计算每个分类的recall和precision。
category | A | B | C | recall |
---|---|---|---|---|
A | 90 | 5 | 5 | 90/(90+5+5)=90% |
B | 0 | 95 | 5 | 95/(0+95+5)=95% |
C | 2 | 0 | 98 | 98/(2+0+98)=98% |
precision | 90/92=97.8% | 95% | 98/(5+5+98) = 90.7% | accuracy=94.3% |
recall就是召回率,表示分类正确的数量除以该分类总的数量。比如,A总共有100个样本,只有90个被正确分类,因此召回率就是90%。在confusion matrix中,只需要将对角线上的元素除以该行的和就是该分类的召回率。
precision就是精确率,表示分类到某个分类中有多少是真正属于该分类的。看上面的confusion matrix,总共有92个元素分类到A中,其中真正属于A有90个,因此A的精确率就是90/92=97.8。在confusion matrix中,只需要将对角线的元素除以该列的和就是该分类的精确率。
除了recall和precision以外,我们还可以在confusion中计算accuracy,accuracy表示分类正确的元素数量除以总的数量。上述例子中就是对角线上的元素和除以总的元素(90+95+98)/300 = 94.3%。
通过confusion matrix,我们可以很直观第看到每个分类的recall和precision,还能看到错误分类的情况。有了我们对分类器的性能有更进一步的认识了,这比只有一个accuracy指标要好很多了。