机器学习的精确率P,召回率R和F-score

时间:2022-06-01 17:40:27

数据集中 : 正例 反例
我们的预测 正例 : A B
我们的预测 反例 : C D
精确率P:就是A/(A+B),通俗化意思是“我们的预测有多少是对的”;
召回率R:就是A/(A+C) 通俗化意思是“正例里我们的预测覆盖了多少”;
F-score=(2*P*R)/(P+R)。

举个例子:
假设我们手上有100个正样本,50个负样本,我们要找出所有的正样本,系统查找出80个,其中只有60个是真正的正样本,计算上述各指标。
TP: 将正类预测为正类数 60
FN: 将正类预测为负类数 40
FP: 将负类预测为正类数 20
TN: 将负类预测为负类数 30
准确率(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN) = 60%;
精确率(precision) = TP/(TP+FP) = 75%;
召回率(recall) = TP/(TP+FN) = 60%;


引用知乎上某匿名用户的话(清楚直白):


**假设一共有10篇文章,里面4篇是你要找的。
根据你某个算法,你认为其中有5篇是你要找的,但是实际上在这5篇里面,只有3篇是真正你要找的。
那么你的这个算法的precision3/5=60%,也就是,你找的这5篇,有3篇是真正对的,
这个算法的recall3/4=75%,也就是,一共有用的这4篇里面,你找到了其中三篇。**
**比如王老板在100个人(有人才和普通人)中出选人才,王老板的方法不能100%的把人才和普通人区分开来。那么就会有一些人才被当作是普通人,一部分普通人被认为是人才的情况出现。这个时候精确率就是王老板选出来的人才中有多少是真正的人才,这个是关于有多少普通人“滥竽充数”的问题,精确率越高说明普通人“滥竽充数”的就越少,即滥竽充数的越少。召回率就是说有多少人才被埋没的问题了。本来是人才,结果被当成普通人。召回率越高说明人才被当成普通人的就越少,即人才流失越少。**
作者:匿名用户