机器学习之类别不平衡问题:模型的评价指标
本系列文章主要介绍机器学习中类别不平衡问题的处理,在实际应用中类别不平衡问题是非常常见的,文章主要包括以下部分
(1).模型的评价指标
(2).不平衡问题的常用指标
(3).从数据集角度处理不平衡问题
(4).从算法角度处理不平衡问题
本次文章主要是第一部分模型的评价指标,如果对模型的评价指标不了解,那么后续模型的好坏也无从谈起。
1、模型评价指标选取的重要性与意义
在完成模型训练之后,必须对模型的效果进行评价,根据评价结果来继续调整模型,以达到满意的结果。
评价一个模型最简单也是最常用的指标就是准确率,但是在没有任何前提下使用准确率作为评价指标,往往不能反映一个模型性能的好坏。例如在某个数据集中,正类样本数占总样本数的5%,负类样本数占总样本数的95%。那么有一个模型把所有样本全部判断为负类,该模型也能达到95%的准确率,但是这个模型没有任何的预测能力。因为对于新来的样本,它总是会把这些样本判断为负类。
因此,对于一个模型我们需要选择合适的评价指标来判断它的性能。在进行不同的模型对比时,使用不同的评价指标往往会导致不同的评价结果;这意味着模型的好坏是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于业务需求。例如肺癌检测的模型,为了减少肺癌的死亡率,那么这个模型的目标是尽可能的将所有肺癌病人检测出来,即使会有许多的误诊;在商品推荐的模型中,该模型的目标是准确的着到有需求的用户然后推销相应商品,而不希望过多的打扰其他的用户。所以不同的业务需求,需要选择不同的评价指标,这样才能通过评价指标来判断模型效果。
2、评价指标介绍
下面以二分类为例,介绍分类模型中的常用指标。
混淆矩阵
混淆矩阵是一个能够比较直观的反应模型性能,从混淆矩阵能够衍生出很多的指标。不仅在二分类问题中常见,在多分类的问题中也同样适用,是一种比较实用的可视化方法。
(a)二分类的混淆矩阵图示意图
(b)混淆实例图
图(b)中混淆矩阵的每一行表示的是实际样本所属的类别,每一列表示的是模型对样本的预测类别。每一行的数据总和表示该类别的样本数目总数,每一列的数据总和表示模型预测为该类别的样本数目总数。矩阵中所有数据总和表示该数据集的所有样本总数。
从图(a)混淆矩阵示意图中能够直接得到
True Positive (真正例,TP):实际为正,预测为正,预测正确的正样本个数。
False Negative (假负例,FN):实际为正,预测为负,预测错误的正样本个数。
True Negative (真负例,TN):实际为负,预测为负,预测正确的负样本个数。
False Positive (假正例,FP): 实际为负,预测为正,预测错误的负样本个数。
通过上述4个值,通过简单的组合可以得到
Precision (查准率,精准率)
Precision表示的是预测正确的正样本个数占所有预测为正样本的比例,反映的是模型预测正样本的准确性,因此被称为查准率。但是Precision不能反映有多少正样本被错误预测为了负样本(即FN)。例如,假设在某个数据集中,正负样本的个数各为1000,有一个模型在这个数据集上只将1000个正样本中的1个样本预测为正,其余所有都预测为负。此时该模型的TP=1,FP=0,因此Precision为100%,但是可以看出该模型实际上遗漏了几乎所有的正样本。所以只有在特定的需求下,才会只关注该指标例如上述提到的商品推荐的模型的精准推荐中。通常情况下,Precision会与其他指标结合使用。
Recall (查全率,召回率)
又称True Positive Rate (TPR,真正例率)和Sensitivity(敏感性),其中Sensitivity在医学领域中比较常用。Recall表示的是预测正确的正样本个数占实际正样本的比例,反映的是模型预测正样本的全面性,因此被称为查全率。和Precision相反,Recall不能反映有多少负样本被错误预测为了正样本(即FP)。例如,假设数据集的负样本的个数各为1000,另外个模型在这个数据集上将所有的样本全部预测为正,此时该模型的TP=1000,FN=0,因此Recall为100%。该模型则是完全不管负样本。该指标的适用场景主要是在医学中,在医学中必须极力降低漏诊率,因为误诊的风险相比漏诊而言要低很多。
可以看出,Precision和Recall是相互矛盾的两个指标。一般而言,Precision较高时,Recall往往偏低;而Recall较高时,Precision往往偏低。除了在特定的需求外,单一的Precision或者Recall都无法综合的评价一个模型,因此便有了F1 score。
F1 score是一个综合指标,是Precision和Recall的调和平均(harmonic mean),与算术平均( )和几何平均( )相比,调和平均更重视较小值。因此理论上如果F1 score比较高的话,意味着Precision和Recall都较高。另外F1 score有更一般的形式,它是一个加权的调和平均,可以来表示对Precision和Recall的不同偏好程度。
除此之外,还有其他的一些重要的指标
例如我们最常用的 Accuracy(准确率),从混淆矩阵出发可以得到,
Accuracy反映的是预测正确的样本占所有样本的比例,反映了一个模型的区分能力,但是Accuracy的区分能力没有偏向于正负样本中的任何一类,在不平衡数据集中使用Accuracy就会出现很大的问题。
在医学中,与敏感性对应的一个指标称为 Specificity(特异性),又称为True Negative Rate (TNR,真负例率),它的具体定义如下
Specificity表示的是预测正确的负样本个数占实际负样本的比例,它的定义与Recall(Sensitivity)十分相似,只不过Recall(Sensitivity)是针对于正样本,而Specificity则是针对于负样本。Specificity在医疗中也被认为是一个重要指标,若一个模型将所有的样本全部判断为患病,此时Recall(Sensitivity)=0,而Specificity却很低,这也是不合理的,尽管没有了漏诊的情况,但是大大的加重了医生的负担和未患病人的麻烦。因此,在医学领域, 特异性和 敏感度是需要同时考虑的。
另外还有一个重要的指标 False Positive Rate (FPR,假正例率)
该指标与Specificity(特异性)一样,针对负样本,表示的是预测错误的负样本个数占所有负样本的比例,在ROC曲线和KS曲线中与TPR一起出现,反映正负样本之间的关系。
本文从混淆矩阵出发,介绍了分类模型常用的指标以及它们简单的优缺点和适用性,主要有: Precision (查准率,精准率)、Recall (查全率,召回率)又称 True Positive Rate (TPR,真正例率)和 Sensitivity(敏感性)以及从这两个指标的调和平均值 F1 score及其对应加权版本。另外还有最常用的指标 Accuracy(准确率)、在医学领域,与敏感度是需要同时考虑的 Specificity(特异性)和后续在不平衡常用指标中涉及的 False Positive Rate (FPR,假正例率)。