召回率Recall、准确率Accuracy、查准率Precision
这三个概念比较搞脑子,以今年的肺炎为例。
Accuracy = (true positives + true negatives) / (total examples)
Precision = (true positives) / (true positives + false positives)
Recall = (true positives) / (true positives + false negatives)
F1 score = (2 * precision * recall) / (precision + recall)
我们一个个看
先引入一个例子
今年的新冠查了1000个人,100个人被认为是患病的,900个人被认为不患病,
100个人中90个确实有病,10个没病,900个人中800个人确实没患病,但有100个人患病了
那么我们可以得出下表
实际患病的real=1 | 实际没有患病real=0 | |
---|---|---|
预测患病的predict=1 | 90真阳性 True Positive | 10假阳性 False Positive |
预测不患病的predict=0 | 100假阴性 False Negative | 800真阴性 True Negative |
Accuracy = (true positives + true negatives) / (total examples)
准确率就是说我们在所有例子中预测与实际符合的样本个数占所有样本的百分比。
(90+800)/1000=0.89Precision = (true positives) / (true positives + false positives)=FP/(FP+TP)
90/(90+10)= 0.9
查准率就是说在我们预测有病的人中,实际上有病的百分比,越高越好
如果我们希望只在非常确信的情况下预测为真(患了肺炎),即我们希望更高的查准率,我们可以使用比 0.5 更大的阀值,如 0.7,0.9。直观上,我们的高阈值让我们做出的判断更加准确,查准率是变高的。Recall = (true positives) / (true positives + false negatives) = 1/ (1+FN/TP)
90/(100+90)= 0.47
召回率意思是在所有实际上有病的病人中,成功预测有病的病人的百分比,越高越好。
如果我们希望提高查全率,尽可能地让所有有可能是肺炎的病人都得到进一步地 检查、诊断,我们可以使用比 0.5 更小的阀值,如 0.3。为什么这样做可以提高查全率呢,低阈值让我们预测出来确实患病的人数增加(FN⬆️),所有患病的人数又是固定(FN+TP)的,因此召回率增加了。