机器学习-查准率与查全率

最近在看周志华的《机器学习》西瓜书的时候,感觉书上的概念-查准率和查全率描述地有点抽象。于是查阅了一些资料深入学习,有所感悟。

西瓜书上的描述

参考了另一本书《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》第二版

image-20220105160225958

For each instance, it computes a score based on a decision function.

对于每个实例,它都基于决策函数计算分数。

If that score is greater than a threshold, it assigns the instance to the positive class; otherwise it assigns it to the negative class.

如果该分数大于阈值,则将实例分配给正类;否则,它会将其分配给负类。

对于这样的二分类问题,我们可以用手写数字识别"5"举例

机器学习实战第137页

在上图中,我们可以看到有三个可以选择的阈值(Various thresholds),就拿中间的那条竖线而言(对应一个阈值):在竖线右边的实例,都会被预测为正例-1,在竖线左边的实例,都会被预测为反例-0。其中,中间的竖线右边有5个实例,而真实情况下这5个实例中只有4个手写数字是表示"5"的(第二个看不出来是"5")。

查准率表示所有预测为1的样本中预测正确的比率,也就是4/5 = 80%。其中4就是预测结果是"5",真实情况是"5"的实例的个数,也就是真正例TP(True Positive),预测正确,而5就是中间竖线右边的实例个数,也就是预测结果是"5",但是不确定它的真实情况是什么,也就是TP + FP(包括真正例和假正例)。

查准率P(Precision) \[ P={TP \over TP + FP} \]

在上图中,可以看到在所有的实例中(共12个),真实情况是"5"的个数有6个,包括了正例中的4个和反例中的2个,也就是真正例TP和假反例FN。召回率是指在所有真正为1的样本中预测正确的比率。也就是4/6 = 67%。

召回率R(Recall) \[ R = { TP \over TP + FN } \] 而精度(准确率)是正确预测为1,正确预测为0的样本占总体的比率 \[ Acc = { TP + TN \over ALL} \] TP是真正例,TN是真反例,准确率只关心是否预测对了,但是不关心实例本身的属性。

从上图也可以看出,对于图中的三种可以选取的阈值,当阈值越大(也就是把门的越严格),查准率P在上升,查全率R在下降。

而阈值越小,查准率P在下降,而查全率R在上升,也可以直观地表明查准率和查全率是一对矛盾的度量。


机器学习-查准率与查全率
https://jetthuang.top/所有/机器学习-查准率与查全率/
作者
Jett Huang
发布于
2022年1月5日
许可协议