最近在做一个multilabel classification(多标签分类)的项目,需要一些特定的metrics去评判一个multilabel classifier的优劣。这里对用到的三个metrics做一个总结。
首先明确一下多标签(multilabel)分类和多类别(multiclass)分类的不同:multiclass仅仅表示输出的类别大于2个,这样可以和一般的二分类(binary)区别开,但每一个输入x仅仅对应一个输出标签。而multilabel里的每一个输入可以对应多个输出标签。举个例子,对动物图片进行分类,一个输入(某一动物)只可能有一个输出(猫or狗),因为一个动物不可能同时是猫还有狗,这就是multiclass;但对新闻进行分类,一个输入(某一新闻)可以对应多个输出(海外,体育),这就是multilabel。
这次用到的数据集是MS-COCO 2014年的数据集,它的testset里有40504张图片,因为MS-COCO主要是用来做目标检测(detection)或者物体分割的(segmentation),每张图片里包含了多个物体。我们就用这些物体为图片的对应标签来做multilabel分类。一共有80个可能出现在图片里的物体,所以每张图片对应一个(80x1)的标签向量,被分到类的物体对应的标量为1,没有分到类的为0(只要图片中出现了某物体,此图片就被分到对应的物体类里,然后一张图片会有多个类别因为大多图片都包含了几个物体)。
N表示testset的大小,L表示所有备选label合集的大小,在MS-COCO2014的testset里,\(M=40504,L=80\)
Hamming Loss
\(h_{loss}\)可能是最直观也是最容易理解的一个loss,它直接统计了被误分类label的个数(不属于这个样本的标签被预测,或者属于这个样本的标签没有被预测)。\(h_{loss}=0\)表示所有的每一个data的所有label都被分对了。
\(h_{loss}= \frac{1}{p}∑_{i=1}^ph(x_{i})ΔY_{i}\), where \(p=N\times L\)
\(F_{1}\) score
介绍F score之前首先要理清准确率(Accuracy),精确率(Precision)和召回率(Recall)之间的关系。
Accuracy的定义是:分类器正确分类的次数与总分类数之比。Hamming Loss可以说是accuracy的一种呈现。但其实如果只追求hamming loss/accuracy的话,就会出现以下问题:已知MS-COCO里的大多数图片只包含几个(<=4)物体,这样只要把所有图片的标签都设为0,也能达到大约4/80(0.08)的hamming loss。
所以我们需要precision(查准率)和recall(查全率)作为别的metrics去评判一个classifier的给力程度。下面解释了如何用precision和recall,还有这两个metrics的合成F score来评判一个multilabel classifier。
precision和recall一开始是从信息检索衍生出来的。precision(查准率)计算的是所有"正确