分类器的好坏取决于用来评价它的度量指标。如果选择了错误的度量来评估模型,那么很可能选择了一个表现糟糕的模型,或者更坏的情况下,对模型的预期性能产生了误导。

在应用机器学习中,选择一个合适的度量通常具有挑战性,对于不平衡分类问题尤其困难。首先,因为广泛使用的大多数指标都假定类分布是均衡的,而不平衡分类,通常不是所有的类(因此也不是所有的预测误差)都是相等的。

在本教程中,你将学习用于不平衡分类的指标。

教程概述

本教程分为三个部分:

不平衡值计算(不平衡分类的评估指标)(1)

评估指标的挑战

评估指标量化预测模型的性能。这通常涉及到在数据集的训练集上训练模型,使用模型对测试数据集进行预测,然后将预测值与测试数据集的实际值进行比较。

对于分类问题,评估指标包括比较实际的类标签和预测的类标签,或者解释类标签的预测概率。

选择一个模型,是由评价指标指导的一个搜索问题。用不同的模型进行实验,每个实验的结果都用一个度量值来量化。

有一些标准指标被广泛用于评估分类预测模型,如分类Accuracy或分类error。标准度量在大多数问题上都能很好地工作,这也是它们被广泛采用的原因。但是所有的度量指标都对问题或者问题中什么是重要的做出假设。因此,必须选择一个你认为最能抓住问题重要性的评估指标,这使得选择模型评估度量指标具有挑战性。

当类分布出现偏斜时,这一挑战变得更加困难。因为,当类不平衡或严重不平衡时,如少数类与多数类的比例为1:100或1:1000时,许多标准指标就会变得不可靠,甚至具有误导性。例如,对一个严重不平衡的分类问题采用分类准确性作为评估指标可能会产生危险的误导。

重要的是,当使用不平衡分类时,通常需要不同的评估指标。标准的评价指标一样假定所有的类同等重要,不平衡分类问题通常认为少数类的分类错误比多数类的分类错误更重要。这样的性能指标可能需要关注少数类,这就具有挑战性,因为少数类,我们缺乏样本训练一个有效的模型。

分类器评价指标的分类

在评估分类器模型时,有数十种度量标准可供选择,如果考虑到学者们提出的所有度量标准的热门指标,则可能有数百种。

为了掌握可以选择的度量标准,我们将使用Cesar Ferri等人在他们2008年的论文《分类性能度量的实验比较》中提出的分类法。2013年出版的《不平衡学习》一书也采用了这种方法,我认为它很有用。

我们可以将评估指标分为三个有用的组:

这种划分很有用,因为从业人员用于分类器(特别是不平衡分类)的指标非常适合分类法。

1).不平衡分类的阈值指标

阈值指标是量化分类预测误差的指标。也就是说,它们被设计用来总结在测试数据集中预测标签与实际标签不匹配时的占比或比率。

也许最广泛使用的阈值度量是分类准确度(accuracy)

Accuracy = Correct Predictions / Total Predictions

尽管被广泛使用,但其Accuracy几乎普遍不适合用于不平衡分类。原因是,只有预测多数类的无效模型也能够获得较高的准确性(或低误差)。

对于不平衡分类问题,多数类通常被称为阴性样本,少数类通常被称为阳性样本。

对于二分类问题,使用混淆矩阵中的术语可以更好地理解大多数阈值指标。但这并不意味着指标只局限于在二元分类中使用。混淆矩阵不仅提供了对预测模型性能更深入的了解,而且还提供了对哪些类的预测是正确的,哪些是错误的,以及发生了哪些类型的错误。在这种类型的混淆矩阵中,表中的每个单元格都有一个特定且易于理解的名称,总结如下:

| Positive Prediction | Negative Prediction

Positive Class | True Positive (TP) | False Negative (FN)

Negative Class | False Positive (FP) | True Negative (TN)

有两组指标可能对不平衡分类有用,因为它们专注于一个类别。它们是Sensitivity-Specificity和Precision-recall。

Sensitivity-Specificity 指标

Sensitivity是指真阳率,并总结了阳性类的预测效果。

Sensitivity = True Positive / (True Positive False Negative)

特异性是敏感性的补充,或真阴性率,并总结阴性类的预测效果。

Specificity = True Negative / (False Positive True Negative)

对于不平衡分类,敏感性可能比特异性更有趣。敏感性和特异性可以结合成一个单一的分数,平衡这两个问题,称为几何平均数或G-mean。

G-Mean = sqrt(Sensitivity * Specificity)

Precision-Recall指标

precision概括了模型预测阳性(正类)样本中属于正类的占比。

Recall是指真阳率,计算同sensitivity。

精确度和召回率可以合并成一个分数,以平衡这两方面的问题,称为F Score。

F Score = (2 * Precision * Recall) / (Precision Recall)

F Score是一种常用的不平衡分类指标。

其他的阈值指标

上面介绍的可能是最受欢迎的指标,尽管还存在其他许多其他指标。其他的一些指标包括Kappa、宏观平均精度、平均类别加权精度、优化精度、调整的几何平均值、平衡精度等等。

2)不平衡分类的排名指标

排名指标更关注通过分类器分离类的有效性来评估分类器。这些度量标准要求分类器预测一个分数或类别的概率。

基于这个分数,可以使用不同的阈值来测试分类器的有效性。那些在阈值范围内保持良好得分的模型将具有良好的类分离有效性,并将有更高的排名。

最常用的排名指标是ROC曲线。ROC是一个首字母缩略词,意思是受试者的工作特征。ROC曲线是一个诊断图,通过计算模型在不同阈值下的一组预测的假阳率和真阳率来总结模型的行为。

不平衡值计算(不平衡分类的评估指标)(2)

真阳率是召回率或敏感度。

True Positive Rate= true positive / (true positive false negative)

假阳率为:

False Positive Rate = False Positive / (False Positive True Negative)

每个阈值是图上的一个点,这些点连接起来形成一条曲线。无效的分类器(例如,在所有阈值下预测为多数类)由左下角到右上角的对角线表示。这条线以下的任何点都无效分类器表现更糟。一个完美的模型是图上右上角的一个点。

ROC曲线下的面积(ROC-AUC)可以计算出来,并提供一个单一的得分来总结整个图,可以用来比较不同的模型。无效的分类器ROC-AUC的得分是0.5,而一个完美的分类器AUC得分为1。

ROC曲线和ROC AUC虽然总体上是有效的,但在严重的类失衡情况下,特别是当少数类中的样本数量较少时,ROC曲线和ROC AUC可能有点乐观。

不平衡值计算(不平衡分类的评估指标)(3)

ROC曲线的另一种替代是(PR)精确召回曲线,尽管它关注的是分类器在少数类上的性能。

同样,模型对一组预测使用不同的阈值,在这种情况下,计算精度和召回。这些点形成一条曲线,在一系列不同的阈值下表现更好的分类器的排名将会更高。

无效分类器将是图上的一条水平线,其精度与数据集中阳性样本的数量成比例。对于一个平衡的数据集,这将是0.5。一个完美的分类器由右上角的一个点表示。

与ROC曲线一样,在评估单个分类器时,准确率召回曲线是一个有用的诊断工具,但在比较分类器时具有挑战性。和ROC AUC一样,我们可以计算曲线下的面积作为一个分数,并使用这个分数来比较分类器。在这种情况下,对少数类的关注使得精确召回AUC对于不平衡分类问题更有用。

PR AUC =曲线下的精确召回面积。

3)不平衡分类的概率指标

概率指标是专门设计来量化分类器预测中的不确定性。当我们对不正确和正确的标签预测不太感兴趣,而对模型预测的不确定性更感兴趣,并惩罚那些非常确定的错误预测时,这些方法很有用。根据预测的概率评估模型需要对概率进行校准。

一些分类器使用概率框架进行训练,例如最大似然估计,这意味着它们的概率已经校准。逻辑回归就是一个例子。许多非线性分类器不是在概率框架下训练的,因此在通过概率指标进行评估之前,它们的概率需要根据数据集进行校准。例如支持向量机和k近邻。

评估预测概率的最常见指标是二分类的对数损失(或负对数似然),或更普遍地被称为交叉熵。

对于一个二分类数据集,其期望值为y,预测值为yhat,计算方法如下:

logLoss = -((1 - y) * log(1 - yhat) y * log(yhat))

通过简单的相加,分数可以推广到多个类;例如:

log(yhat_c) = -(sum c in yhat_c * log(yhat_c))

该分数总结了两个概率分布之间的平均差异。完美分类器的对数损失为0.0,较差的值为正,最大可以到无穷。

如何选择评估指标

有大量的模型评估指标可供选择。

考虑到选择一个评估指标是如此重要,并且有几十个甚至上百个指标可供选择,你应该怎么做呢?

也许最好的方法是与项目负责人沟通,并找出一个模型或一组预测最重要的内容。然后选择一些似乎可以捕获重要内容的指标,然后用不同的场景测试指标。

另一种方法可能是进行文献回顾,并发现在处理相同类型问题的其他学者最常用的度量标准。这通常很有见地,但需要注意的是,有些研究领域可能会陷入群体思维,并采用一种可能非常适合大规模比较大量模型的度量标准,但在实践中却很难进行模型选择。

还是不知道?

以下是一些建议:

我们可以把这些建议转化为有用的图表。

不平衡值计算(不平衡分类的评估指标)(4)

,