这几个概念有点抽象,这里直接举例:
假设一个班级有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%
各项指标都比第一次高,说明预测效果更好。从图上也能看出来,预测为男生的范围与实际男生范围更接近。