精确率,召回率,准确率的意思
TP(True Positive)
: 正确的正类。(实际样本是正样本,模型正确的判断成正样本)FP(False Positive)
: 错误的正类。(实际样本是负样本,模型错误的把它当成正样本)TN(True Negative)
:正确的负类,(实际上是负样本,模型正确
的预测为负样本)FN(False Negative)
:错误的负类,(实际上是正样本,模型错误
的预测为负样本)
所以 Positive / Negative 是模型预测的结果,把那些样本预测成了 正类 / 负类 。
True / Flase 表示你的结果正确与否。不管你预测成正类或负类,True就是你预测对了,Flase就是你预测错了。
精确率
P = T P T P + F P P = \frac{TP}{TP+FP} P=TP+FPTP
精确率就是:在所有被模型预测为正类的数据中,预测真正的正类的占比。
召回率
R = T P T P + T N R= \frac{TP}{TP+TN} R=TP+TNTP
召回率:在所有真正的正类中,模型成功的预测了多少。
准确率
a c c = T P + T N T P + F P + T N + F N acc = \frac{TP+TN}{TP+FP+TN+FN} acc=TP+FP+TN+FNTP+TN
准确率:在所有的样本中,模型预测正确的占比
目标检测中的准确率
由于目标检测中没有 TN(因为预测框太多,低于得分的都直接去掉了,没有加入评价指标中),所以这里令 TN 为 0。
a
c
c
=
T
P
+
T
N
T
P
+
F
P
+
T
N
+
F
N
=
T
P
+
T
N
T
P
+
F
P
+
F
N
acc = \frac{TP+TN}{TP+FP+TN+FN} = \frac{TP+TN}{TP+FP+FN}
acc=TP+FP+TN+FNTP+TN=TP+FP+FNTP+TN
T
P
+
F
N
TP+FN
TP+FN就是所有真实的目标,设为单位为1,那么
T
P
=
1
∗
R
TP=1*R
TP=1∗R,就是召回率,
F
P
=
F
P
P
−
T
P
=
R
P
−
R
FP=\frac{FP}{P}-TP=\frac{R}{P}-R
FP=PFP−TP=PR−R
a
c
c
=
R
1
+
F
P
=
R
1
+
R
P
−
R
=
R
P
R
+
R
P
−
R
P
P
=
R
P
P
+
R
−
P
R
\begin{aligned} acc &=\frac{R}{1+FP} \\&= \frac{R}{1+\frac{R}{P}-R} \\&= \frac{R}{\frac{P}{R}+\frac{R}{P}-\frac{RP}{P}} \\&= \frac{RP}{P+R-PR} \end{aligned}
acc=1+FPR=1+PR−RR=RP+PR−PRPR=P+R−PRRP
目标检测中常用的性能评价指标有Precision,Recall和F1 score
。
对于Precision值,其代表的是你所预测出来准确结果占所有预测结果的准确性,对于Recall值,其代表的是你所预测出来准确结果占总体正样本的准确性。这样说有点难理解,举个例子吧。现在你手上有10个鸡蛋,里面有6个是好的,另外4个是坏的,你训练出一个模型,检测出8个鸡蛋是好的,但实际上只有5个是好的,另外3个是坏的。那么模型的Precision值为5/8=0.625,即表示你所预测出来的8个鸡蛋中只有5个是好的,其值只在你预测结果中计算得到,Recall值为5/6=0.833,即表示总共有6个正样本,你预测出来5个,表示的是你预测出来的正样本占总正样本的比例。(正样本理解为你要检测的目标)
recall也叫召回率,记做R,表示你预测的结果中有多少正样本被正确检测出来,当R=100%的时候,表示没有漏检;
precision也叫精确率,记做P,表示你预测的结果中有多少样本是正确的,当P=100%的时候,表示没有误检。
清楚这个,我们就能根据不同的任务来对应提高Precision或者Recall值,一般来说,提高一个,另一个的值则会降低。所以AP曲线是由Recall和Precision两个维度下曲线下面包围的面积,一般Recall比较低的时候,Precision比较高,Recall比较高的时候,Precision会比较低。
从算法层面:a. 对于想提高Precision,使得二分类器预测的正例尽可能是真实正例,那么应该提高二分类器预测正例的阈值,使得预测出来的结果尽可能是正确的;对于想提高Recall,使得二分类器尽可能将真实的正例挑选出来,那么应该降低二分类器预测正例阈值,使得预测出来的结果尽可能包含更多的正样本,即可以简单调整socre的阈值。