一、概念
精确率(precision):针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。
召回率(recall):针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。
准确率(accuracy):针对我们预测结果而言的,它表示的是预测结果中正确的预测占总样本数的比例。
精确率:precision = TP / (TP + FP)
召回率:recall = TP / (TP + FN)
准确率:accuracy = (TP + TN) / (TP + FP + TN + FN)
- TP,True Positive
- FP,False Positive
- TN,True Negative
- FN,False Negative
二、为什么需要使用准确率、召回率、精确率
在二分类中,比如要将遥感影像中的所有植被像素给识别出来。我们想要实现的效果应该是让我们识别结果中正确的预测(植被像素被预测为植被像素、非植被像素预测为非植被像素)占总像素数的比例尽可能大(准确率accuracy
高)。看这么一个例子,我们图像一共100个像素,其中植被像素和非植被均为50个像素,预测结果中48个像素被正确分类为植被,48个像素被正确分类为非植被。经过计算可以得到模型的准确率(accuracy
)为0.98
,已经很高了。
预测值\实际值 | 植被(T) | 非植被(F) |
---|---|---|
预测为植被 | 48 | 2 |
预测为非植被 | 2 | 48 |
accuracy = (48 + 48) / (48 + 2 + 48 + 2) = 0.98 # 很不错的准确率
但是这里存在一个问题,当影像中非植被样本数量很大时,在预测的时候把所有像素预测为非植被像素。这种情形能让准确率很高,但是对植被像素的识别能力几乎为0。我们需要用一个参数来衡量对植被像素的预测能力,也就是你的预测结果中认为是植被的像素占所有植被像素的比例。这个参数就是召回率(recall
),他能衡量出你的模型对正样本的检出能力,也就能避免上述问题。同样是100个像素的例子,如果100个像素中非植被有90个,植被像素为10个,且预测结果中预测为非植被的为99个,预测为植的为1个。此时模型的准确率(accuracy
)为0.91
,还是很高,但是这个模型的召回率(recall
)为0.1
,对植被像素检出能力超级低的。
预测值\实际值 | 植被(T) | 非植被(F) |
---|---|---|
预测为植被 | 1 | 0 |
预测为非植被 | 9 | 90 |
accuracy = (1 + 90) / (1 + 9 + 90 + 0) = 0.91 # 准确率依旧不错
recall = 1 / (1 + 9)= 0.1 # 但是对正样本的预测能力几乎没有,模型很差!!!
与召回率相对应的是精确率。考虑这么一种情况,你的遥感影像中非植被样本数量占比更大时,你的模型有有更强的预测为植被像素的倾向,真植被像素基本预测正确,但是有不少非植被像素被预测为植被像素,这样也能保证高准确率。从下表格中可以计算得到模型的准确率(accuray
)为0.8
,还算可以,但是模型的精确率(precision
)为0.344
,有过强的植被像素检出能力。
预测值\实际值 | 植被(T) | 非植被(F) |
---|---|---|
预测为植被 | 10 | 19 |
预测为非植被 | 1 | 70 |
accuracy = (10 + 70) / (10 + 1 + 19 + 70) = 0.8 # 准确率依旧不错
precision = 10 / (10 + 19)= 0.344 # 但是对正样本的预测能力过强,模型很差!!!
三、总结
综上可知,准确率用于整体评估模型的预测能力,但是由于训练样本的正负样本数量的差距过于明显,可能导致模型具有高准确率情况下对正样本检出能力过弱(recall低)或过强(precision低),因此需要通过召回率和精确率来具体评价模型的优异程度。
以上几个指标均用于衡量二分类模型的质量好坏,对于多分类问题可以转化为各个类别的二分类问题来衡量模型质量。比如遥感影像中需要划分为植被、水体、建筑三个类别,则分别计算【植被-其他】、【水体-其他】、【建筑-其他】三个二分类问题的评价指标,进而完成对整个模型的评价。