准确率(Accuracy)、精确率(Precision)和召回率(Recall)的区别

  • 2019 年 10 月 6 日
  • 筆記

这几个概念有点抽象,这里直接举例:

假设一个班级有100个学生,其中男生70人,女生30人。如下图,蓝色矩形表示男生,橙色矩形表示女生。

又假设,我们不知道这些学生的性别,只知道他们的身高和体重。我们有一个程序(分类器),这个程序可以通过分析每个学生的身高和体重,对这100个学生的性别分别进行预测。最后的预测结果为,60人为男生,40人为女生,如下图。

TP:实际为男生,预测为男生;

FP:实际为女生,预测为男生;

FN:实际为男生,预测为女生;

TN:实际为女生,预测为女生;

  • 准确率(Accuracy) = (TP + TN) / 总样本 =(40 + 10)/100 = 50%。 定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。
  • 精确率(Precision) = TP / (TP + FP) = 40/60 = 66.67%。它表示:预测为正的样本中有多少是真正的正样本,它是针对我们预测结果而言的。Precision又称为查准率。
  • 召回率(Recall) = TP / (TP + FN) = 40/70 = 57.14% 。它表示:样本中的正例有多少被预测正确了, 它是针对我们原来的样本而言的。Recall又称为查全率

可以看到,上面的预测结果并不是很好。假设我们优化了程序后,再次进行预测。预测结果为:

  • 准确率(Accuracy) = (TP + TN) / 总样本 =(50 + 20)/100 = 70%
  • 精确率(Precision) = TP / (TP + FP) = 50/60 = 83%
  • 召回率(Recall) = TP / (TP + FN) = 50/70 = 71.43%

各项指标都比第一次高,说明预测效果更好。从图上也能看出来,预测为男生的范围与实际男生范围更接近。