对精确率(P)、召回率(R)、F1值的理解以及对应的实现
对精确率、召回率、F1值的理解
算法理解
在机器学习中,P、R和F1值在各种评测中很常见,那么到底什么是P、R、F1值呢,怎么理解呢,困扰了很多人,下面给我对P、R、F1值的理解,
首先,我们先看一个表:
模型预测为正例 | 模型预测为负例 | |
真的正例 | TP | FN |
真的负例 | FP | TN |
然后根据上面的表,再看一下下面的公式,后面会给出详细的例子,供大家理解:
$$P=\frac{TP}{TP+FP} $$
精确率P的理解是:所有预测出来的正例中有多少是真的正例。
$$R=\frac{TP}{TP+FN} $$
召回率R的理解是:所有正例模型能发现多少个。
$$F1=\frac{2*P*R}{P+R} $$
F1值是权衡P与R之后的结果,综合评判的指标。
好,为了方便大家理解,咱们举个例子,来说明每个指标的含义。
假如我们有10个西瓜,其中9个是好的,一个是坏的,目标是找到好的西瓜,我们的模型预测结果是5个是好的,5个是坏的,
真实样本对应的标签为:[1,1,1,1,1,1,1,1,1,0]
预测的样本对应的标签为:[1,1,1,1,1,0,0,0,0,0]
那么将对应的P、R、F1值应该怎么计算,代入公式中进行计算,结果为:
模型预测为正例 | 模型预测为负例 | |
真的正例 | 5 | 4 |
真的负例 | 0 | 1 |
$$P=\frac{5}{5+0} =1.0 $$
$$R=\frac{5}{5+4} =0.55 $$
$$F1=\frac{2*P*R}{P+R} =0.71 $$
结果验证
可以使用sklearn库来进行验证我们的计算