机器学习常用模型指标 – 分类模型

机器学习建模和统计学建模已经是算法工程师、数据科学家不可缺少的一项技能。然而,如何从众多模型选出表现最好的模型,或者是找到最符合业务逻辑的模型,其指标的选择过程往往是较为复杂的过程。本篇文章将简单地介绍机器学习中,监督学习分类模型下常见的指标。

分类问题是机器学习非常重要的一个组成部分,它的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。分类问题为监督式学习 ( supervised learning ) 的一种,根据已知训练集提供的样本,通过计算选择特征参数,建立判别函数以对样本进行的分类。

由于现实情景下二分类问题较为常见,本文将简单介绍二分类情景下常见的模型指标。

  • 正确率与错误率
  • 混淆矩阵和阈值
  • 准确率,召回率,真正例率,假正例率
  • ROC 曲线及 AUC,PR 曲线及 APR
  • F1 值及 Fb 值

正确率及错误率

正确率(Accuracy)错误率(Error Rate)是分类任务中最常见的两种性能度量,适用于二分类及多分类任务。

正确率及错误率的评判逻辑很简单:将预测标签与真实标签做对比,看预测正确及错误的占比是多少。

虽然正确率和错误率的评判逻辑很容易理解,而且其计算简单,占用资源少,但这两个指标对数据正负样本的分布要求很苛刻,在数据分布不平衡时的效果很差,而且没有意义:例如样本量为 100 的数据集中,正样本数量为 1,负样本数量为 99.如果把所有的样本全预测为负,有上述公式可得正确率为 99%,错误率为 1%。虽然模型指标很高,但没有意义。

混淆矩阵与阈值

阈值:

很多分类器是为输入的数据产生一个概率预测,如逻辑回归预测。然后该分类器将预测的概率与一个既定的概率比较:如果预测概率大于其则预测该条数据的标签为正,小于其则预测其标签为负。这个既定的概率值就是阈值(threshold),其取值范围同概率范围一样(0.0-1.0)。

阈值为模型的一部分,实际上很多时候阈值会决定模型的预测能力及泛化能力。例如当我们将阈值设定为0.0,模型在这种情况下就会将所有的数据预测为正标签;相反,如果将阈值设定为1.0,模型则会将所有数据预测为负标签。这两种情况都不是我们想看到的,所以设定一个恰当的阈值对模型往往是十分重要的。而如何选择一个好的阈值,我们将在后面讲述。

混淆矩阵:

对于分类问题,可将预测结果根据真实类别(actual / true class)预测类别(predict class)的组合划分,形成分类问题中常见的混淆矩阵( confusion matrix)

如上图所示,二分类问题中,混淆矩阵有四个数值,分表表示着模型对正负样本的区分能力。虽然这四个数值都能体现出模型的能力,但大多数情况下,单独看任何一个值都无法体现模型的整体性能。所以我们对其进行组合,得到新的四个指标:

从公式和矩阵图中,我们可以看出:

  • 召回率 和 真正例率是完全等价的。
  • 召回率和准确率更加关心的是模型基于预测正标签上的预测能力
  • 真正例率和假正例率关心的是模型基于真实标签上的预测能力

当改变模型的阈值时,模型的混淆矩阵往往也会跟着一起改变,将上述的四个指标,按照各自关注的方向组合,便可生成评估二分类模型中常见的两个图:ROC 曲线及 PR 曲线。

机器学习模型中有两种参数:特征系数(parameters)超参数(hyperparameters), 特征系数即训练后,每组特征相对应的系数;超参数即训练模型前需要设置的模型参数,例如决策树中的深度(depth),随机森林中树的棵数等。因为修改超参数会导致模型系数的变化,所以一般来说,超参数的最佳设置是通过交互检验(cross-validation)得到的,而因为阈值的设定及改变并不会改变模型系数,所以阈值可以使用后面介绍的F1值,或业务中常用的 lift 值来设定。ROC 曲线及 PR 曲线展示的是已经生成了系数,但还未确定阈值的模型的表现。我们可以通过其来观察模型参数的表现,从而决定是否使用这组系数。

ROC 曲线及 AUC

将 FPR 做为横轴,TPR 作为纵轴作图,即可得到 ROC 曲线(receiver operating characteristic curve)。ROC 曲线图可以直观的显示出模型在样本上的真正例率和假正例率,我们希望一个模型的真正例率高,且假正例率低,所以在 ROC图像中,曲线越逼近左上角,说明模型的表现越好。

不同的模型比较中,如果一个模型的 ROC 曲线可以完全地被另一个模型的 ROC 曲线完全包住,则说明后者模型比前者表现更好。如下图,红色曲线完全包住了蓝色曲线,所以红色曲线对 应的模型整体表现是要优于蓝色曲线相对应的模型。

ROC 曲线直观的显示了模型在数据集上的表现,根据上面的方法,我们也很容易判断出不同的模型中哪一个相对最优,但现实中,很多时候,ROC 曲线会发生交叉,这种时候就难以一般性地断言哪一个模型更加优越。而人们往往又需要一个指标来将两个模型的表现比较高低,这时最经常使用的一个方法为比较 ROC 曲线下面的面积,即 AUC-ROC 值 (area under curve – receiver operating characteristic), 简写为 AUC。

AUC 取值范围为0 – 1,面积越大说明模型整体效果越好。当 AUC 面积为0.50时,模型等同于随机预测,即预测各个标签的预测概率相同,注意随机预测是对每一个数据进行预测,所以此时与样本比例无关。如果 AUC 值极度小于0.5,一般会认为是模型的设置或标签的标注出现了问题。例如 AUC 值为0.20, 则说明数据本身拥有足够的信息使预测结果得到0.80左右,但是在训练过程中出现了问题 *。

AUC 取值范围为0 – 1,面积越大说明模型整体效果越好。当 AUC 面积为0.50时,模型等同于随机预测,即预测各个标签的预测概率相同,注意随机预测是对每一个数据进行预测,所以此时与样本比例无关。如果 AUC 值极度小于0.5,一般会认为是模型的设置或标签的标注出现了问题。例如 AUC 值为0.20, 则说明数据本身拥有足够的信息使预测结果得到0.80左右,但是在训练过程中出现了问题 。

提及 ROC 曲线和 AUC 值时,经常会提及其不受不平衡数据影响。要解释其原因,可以从统计学中二分类测试的两个指标着手:灵敏度和特异度

  • 灵敏度(sensitivity,也称为真阳性率): sensitivity = recall = TPR
  • 特异度(specificity,也称为真阴性率):specificity = 1- FPR

用条件概率可以表示为:

从上可以看出: sensitivity 和 specificity 是条件于真实label Y的概率的,也就是说,这两个指标是不会受不平衡数据影响的,所以基于 TPR(sensitivity)及 FPR (1 – specificity ) 的 ROC 曲线及 AUC值是不会受数据不平衡而剧烈波动的。

PR 曲线及 APR

将召回率作为横轴,准确率作为纵轴进行作图,即可得到常与 ROC 曲线一同用于观察模型表现的 PR 曲线(precision-recall curve)。与 ROC 曲线不同的是,因为 precision 和 recall 值我们都希望他们接近 1,所以 PR 曲线越接近右上角说明模型整体表现越好。

PR 曲线图可以直观的显示出模型在样本上的准确率和召回率。同 ROC 曲线一样,如果一个曲线可以完全地被另一个曲线包住,则说明后者模型比前者更加优越。如下图:红色曲线完全包住了蓝色曲线,所以红色曲线对应的模型整体表现是要优于蓝色曲线相对应的模型。

PR 曲线直观的显示了模型在数据集上对于准确及召回的表现,但同 ROC 曲线一样, PR 曲线在大多数情况下会发生交叉,这种时候就难以用上面的方法判断哪一个模型更加优越。这时最经常使用 PR 曲线下面的面积来两组模型的表现,即 AUC-PR 值(area under curve-precision recall), 简写为 APR。

虽然 ROC 曲线和 PR 曲线往往会同时使用去评估一个模型在特定数据集上的表现,而PR曲线在不平衡的训练数据集上往往能给出更多信息。

这里对 ROC 曲线及 PR 曲线的使用可以简单的归纳为:

  • ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例。
  • 如果想要评估在相同的类别分布下正例的预测情况,则宜选 PR 曲线。
  • 类别不平衡问题中,ROC 曲线通常会给出一个乐观的效果估计,所以如果只能使用一个指标,这里推荐使用 PR 曲线。

F1 值及 Fβ

我们可以用上面介绍的方法来比较不同模型的表现,从而选出最优的模型。但就如之前介绍的 在一个模型中,修改其阈值往往会改变模型的预测能力,这时我们最为常见的方法是使用 F1 值 (F1 score)来决定最佳的阈值,即准确率与召回率的调和平均数(harmonic mean)。

F1 值的计算中,准确率及召回率对其影响是相同的,相当于重要性相同。但在现实中的很多应用,我们有些时候会偏向一侧,例如对地震的预测中,我们希望召回率非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲准确率。情愿发出1000次警报,把10次地震都预测正确了;也不要预测100次对了8次漏了2次。而基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望准确率是非常高的。即使有时候放过了一些罪犯(召回率低),但也是值得的。

这时则可以使用 F1 值的一般形式 Fβ: Fβ 是基于准确率及召回率的加权调和平均(weighted harmonic mean)得到值

发表评论

电子邮件地址不会被公开。 必填项已用*标注