模型评估指标
评估搜索、推荐系统的质量,分类、聚类算法的效果,预测服务的表现等类似问题,在行业内有一套比较科学的方法,也广泛应用于机器学习领域。
混淆矩阵(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}$$