准确率(accuracy)
准确率是一个用于评估分类模型的指标。通俗来说,准确率是指我们的模型预测正确的结果所占的比例。正式点说,准确率的定义如下:
Accuracy=Number of correct predictionsTotal number of predictions
对于二元分类,也可以根据正类别和负类别按如下方式计算准确率:
Accuracy=TP+TN / TP+TN+FP+FN
其中,TP = 真正例,TN = 真负例,FP = 假正例,FN = 假负例。
让我们来试着计算一下以下模型的准确率,该模型将 100 个肿瘤分为恶性 (正类别)或良性(负类别):
真正例 (TP):
|
假正例 (FP):
|
假负例 (FN):
|
真负例 (TN):
|
Accuracy=TP+TN / TP+TN+FP+FN=1+90 / 1+90+1+8=0.91
从数据上看 91%的准确率还挺好,但实际上哪?9个恶性肿瘤中,有8个都没有预测出,这个预测模型肯定有问题,这个描述指标也不正确。
问题出在哪里?
分类不平衡的数据集(比如正类别标签和负类别标签的数量之间存在明显差异)时,单单准确率一项并不能反映全面情况。
引入精确率和召回率
- 精确率:(预测为正例且正确次数)/(所有预测为正例的次数)
- TP / TP + FP
- 当模型的预测为“正”类别时,预测正确吗?
- 直觉:模型是否过于频繁地预测为“恶性”?
- 召回率:(预测为正例且正确次数)/(所有实际上正类别数[和预测没有关系])
- 在所有可能的正类别中,模型正确地识别出了多少?
- 直觉:是否漏掉了任何 “恶性” 的情况?