【Machine Learning】性能度量与评估方法

机器学习中的性能度量

一个机器学习模型需要一些性能度量指标来判断它的好坏,了解各种评估的方法优点和缺点,在实际应用中选择正确的评估方法是十分重要的。
【Machine Learning】性能度量与评估方法

1.准确率(Accuracy)

准确率(Accuracy)是最常见也是最基本的评估标准,它表示被分对的样本数在所有样本数中的占比,它准确的公式定义是:ACC=TP+TNP+N ACC = \frac{TP+TN}{P+N} 通常来说正确率越高,分类器性能越好。

然而在样本正反例极度不平衡的情况下,尤其是对原始的小类别更感兴趣的时候,准确率(Accuracy)的评价几乎没有什么参考价值,例如欺诈检测、癌症检测、地震预测等等。

更具体的,比如对某个地区进行地震预测,地震分类属性分为0:不发生地震、1发生地震。我们都知道,不发生的概率是极大的,对于分类器而言,如果分类器不加思考,对每一个测试样例的类别都划分为0,达到99%的准确率,但是,问题来了,如果真的发生地震时,这个分类器毫无察觉,那带来的后果将是巨大的。很显然,99%准确率的分类器并不是我们想要的。出现这种现象的原因主要是数据分布不均衡,类别为1的数据太少,错分了类别1但达到了很高的准确率缺忽视了研究者本身最为关注的情况。

2.错误率(Error Rate)

ErrorRate=FN+FPP+N Error Rate= \frac{FN+FP}{P+N}

3.精确率(Precision)

精确率(Precision)表示被分为正例的样本中实际为正例的比例,它准确的公式定义是:
Precision=TPTP+FP Precision= \frac{TP}{TP+FP}

4.召回率(Recall)

召回率(Recall)是覆盖面的度量,表示有多少个正例被分为正例,它准确的公式定义是:
Recall=TPTP+FN Recall= \frac{TP}{TP+FN}

可以看到精确率(Precision)和召回率(Recall)反应了分类器性能的两个方面,而且二者是相互矛盾的。如果你的模型很贪婪,想要覆盖更多的样本,那么它就更有可能犯错,在这种情况下,你会有很高的recall,但是较低的precision。如果你的模型很保守,只对它很sure的样本作出预测,那么你的precision会很高,但是recall会相对低。

5. F1-score

如果综合考虑精确率(Precision)和召回率(Recall),可以得到新的评价指标F1-score,也称为综合分类率。
F1=21P+1R F1 = \frac{2}{\frac{1}{P}+\frac{1}{R}}
F1-score平衡了精确率(Precision)和召回率(Recall),而且采用调和平均,原因是调和平均会在P和R相差较大时偏向较小的值,是最后的结果偏差,比较符合人的主观感受。

注意一点,上面讨论的是二分类问题。如果对于多分类的情况,应该选择哪个类别的精确率(Precision)和召回率 (Recall)来作为机器学习模型的度量呢?

为了综合多个类别的分类情况,评测系统整体性能,经常采用的还有微平均F1(micro-averaging)和宏平均F1(macro-averaging )两种指标。宏平均F1与微平均F1是以两种不同的平均方式求的全局的F1指标。其中宏平均F1的计算方法先对每个类别单独计算F1值,再取这些F1值的算术平均值作为全局指标。而微平均F1的计算方法是先累加计算各个类别的TP、FP、FN、TN的值,再由这些值求出F1值。

由两种平均F1的计算方式不难看出,宏平均F1赋予每个类相同的权重,所以它的值主要受到稀有类别的影响,而微平均F1赋予每个样本决策相同的权重,样本多的类别主导者样本少的类别,所以它的值受到常见类别的影响比较大。故对于比较关注大类类别的分类器,我们应该选择微平均F1;对于比较关注小类类别的分类器,我们应该选择宏平均F1。

【Machine Learning】性能度量与评估方法