模型评估指标

评估搜索、推荐系统的质量,分类、聚类算法的效果,预测服务的表现等类似问题,在行业内有一套比较科学的方法,也广泛应用于机器学习领域。

混淆矩阵(confusion matrix)

假设有 12 张图片,1 代表猫,0 代表狗。使用程序识别图片上的猫狗,识别结果为

类别 NO.1 NO.2 NO.3 NO.4 NO.5 NO.6 NO.7 NO.8 NO.9 NO.10 NO.11 NO.12
实际(actual ) 1 1 1 1 1 1 1 1 0 0 0 0
预测(prediction ) 0 0 1 1 1 1 1 1 0 0 0 1

结果可分为 4 情况:

表示 结果
TP(True Positive) 实际为猫,识别为猫
TN(True Negative) 实际不是猫,识别不是猫
FP(False Positive) 实际不是猫,识别是猫
FN(False Negative) 实际是猫,识别为不是猫

T/F:程序判断对不对

P/N:程序判断是不是

准确率(accuracy)

评估猫狗识别程序的好坏,往往最容易想到的评测指标就是准确率(预测正确的结果占总样本的百分比)。

$$accuracy(ACC) = \frac{TP + TN}{TP + TN + FP + FN}$$

当测试样本分布偏差较大时,该指标容易造成结果失真。

假设有 100 个测试样本,其中 99 个为真,1 个为假。识别程序刚好故障,所有情况全返回为真,那准确率直接表现为 99%,显然不合理。

精准率(precision)召回率(recall)

因为准确率指标的问题,衍生发展出精准率和召回率。

另一种翻译可能更直观: precision - 查准率,recall - 查全率

概念讲解直接看 wikipedia 即可,讲的非常清楚。 https://en.wikipedia.org/wiki/Precision_and_recall

直接上图&公式

$$\text{precision}=\frac{|{\text{relevant documents}}\cap{\text{retrieved documents}}|}{|{\text{retrieved documents}}|}=\frac{TP}{TP + FP}$$

$$\text{recall}=\frac{|{\text{relevant documents}}\cap{\text{retrieved documents}}|}{|{\text{relevant documents}}|}=\frac{TP}{TP + FN}$$

F1

P 和 R 一般比较难平衡,只看 P 或 只看 R 均是不合理的做法。

为了避免只谈单一指标,同时平衡体现 P 和 R 的效果,于是引入 F-measure 指标(简称 F1 score):

$$F= 2 * \frac{precision*recall} {precision+recall}$$