机器学习中二分类算法中的几个评估指标的比较
分类(classification)是机器学习中的一类重要问题,很多重要的算法都在解决分类问题,例如决策树、支持向量机等。其中二分类问题是分类问题中一个重要的课题。在二分类问题中,通常我们将两个类别分别称为正类(positive class)和负类(negative class)。其中正类通常用来表示我们所关心的那个类别,例如在异常检测中,“异常”的样本是我们所关心的,所以通常我们会把异常样本成为正样本,而正常样本称为负样本。在评估一个二分类模型的效果时,我们通常会用一个称为混淆矩阵(confusion matrix)的四格表来表示,即:
预测为负类 | 预测为正类 | |
实际为负类 | a | b |
实际为正类 | c | d |
表格中的a表示实际上是负类的,同时也被算法判断为负类的样本数量,b、c和d也分别对应各自交叉位置上的含义。根据这个四格表,我们可以定义多个衡量模型效果的指标:
1. Accuracy:这个是通常所有的准确率,指的是模型判断正确的样本站全部样本的比例,即(a+d)/(a+b+c+d)
2. Precision in positive class:这个表示的是在正类上的精度,通常也称为查准率,为d/(b+d)
3. Recall in positive class:这个表示的是在正类上的召回率,通常也称为查全率,为d/(c+d)
另外还可以定义Precision in negative class和Recall in negative class等。由于我们通常关注的是正类,所以按惯例,在没有特别指明的情况下,我们所说的precision和recall都指的是正类的precision和recall。
当正类和负类的样本数量相差不多时,accuracy是一个很好的评价指标。但是当两个类别的样本数量相差悬殊时(这个情况通常发生在诸如异常检测等场景中,正样本的占比可以仅为1%或者更少,但是正类又是我们特别关注的),用accuracy来评价模型效果是一个很糟糕的选择。假定在数据集中,正样本的占比为1%,而负样本的占比为99%,那么这个时候,即使模型将所有的样本都判别为负样本,accuracy依然为99%。这是一个非常高的值,很容易引起人们的误解。所以在这边情况下,我们通常选用precision和recall这两个指标来评价模型的效果。
在正负样本数量相差悬殊的情况下,直接对数据进行建模,模型的效果通常比较差。一般情况下,对二分类模型,算法尝试优化的是模型的accuracy:如果其中的一类样本数量稀少,那么模型就倾向于更多地判准数量多的那个类别,因为这样能使整个loss function达到最小。这使得模型对样本少的那一类的判断能力较弱。这就是不平衡类分类问题(imbalanced classification problem),是分类问题中的一个重要课题。一种解决不平衡类分类问题的方法是抽样,即通过对样本多的那一类进行向下采样(undersampling),或者对样本少的那一类进行向上采样(oversampling)。不管是哪一种方法,采样都改变了训练数据中正负样本的比例,使得偏离真实情况中的比例。
在采样的情况下,我们不能用precision这个指标来评估模型,因为这个时候的precision存在严重的高估。假定原来正负样本的比例为1:100,我们对负样本进行了向下采样,使得正负样本的比例为1:1。根据上述的定义,precision=d/(b+d),但是这个时候的b由于采样的缘故,变为了实际数量的1%,也即实际上预测为正类但是实际为负类的数量应该为100*b,所以真实意义上的precision的一个估计应该为d/(d+100*b)。值得注意的是,在随机抽样的情况下,recall这个指标不会受到采样的影响,因为采样改变的是上述表格中的某一行的数量,而不会改变某一行中被模型预测为正类和负类的比例。同理,AUC 通常不受抽样的影响,而PR-AUC则会收到抽样影响。
总结一下上述的内容,在评估二分类模型时:
1. accuracy适用于正负样本比例相差不大的情况的结果评估
2. precision和recall适用于正负样本差异很大的情况
3. precision不能用于抽样情况下的效果评估
4. recall不受抽样影响
作者|张建锋
- 点赞
- 收藏
- 关注作者
评论(0)