机器学习有多种评价指标,常用的有准确率(accuracy)、查准率(precision)、查全率(recall)和 F1-score。
准确率
预测矩阵:
实际为真 | 实际为假 | |
---|---|---|
预测为真 | true positive (TP) | false positive (FP) |
预测为假 | false negative(FN) | true negative(TN) |
$$ 准确率(accuracy) = predict / total\\ predict = TP + TN\\ total = TP + TN + FP + FN $$
这里predict表示预测正确的样本数,total表示总样本数。
准确率(accuracy)应该是最常用的评价指标,这种方式通常是可行的,但是有些特殊情况下也会遇到问题。比如有个雷达预测数据集,有99个为真,1个为假,如果模型是直接统统预测为真,准确率就为99%,看起来准确率很高,但显然不是我们想要的模型。
查准率/查全率
这时就需要另外2个指标:
$$ 精确率(precision) = TP/(TP+FP) $$
$$ 召回率(recall) = TP/(TP+FN) $$
为了便于形象理解,请看如下的文氏图。
其实就是分母不同,precision的分母是全部预测为正类的样本数,recall是全部正样本数。
在信息检索领域,精确率和召回率又被称为查准率和查全率,
- 查准率=检索出的相关信息量 / 检索出的信息总量
- 查全率=检索出的相关信息量 / 系统中的相关信息总量
通俗的说,precison表示预测的样本中有多少是正确的,recall表示所有正样本中有多少是正确的。
F1
有的时候,我们要同时衡量recall和precision,于是对它们做调和平均数(Harmonic mean)。
$$ F1 = \frac {2⋅Precision⋅Recall} {Precision + Recall} $$
可以看到,recall 体现了分类模型对正样本的识别能力,recall 越高,说明模型对正样本的识别能力越强,precision 体现了模型对负样本的区分能力,precision越高,说明模型对负样本的区分能力越强。F1-score 是两者的综合。F1-score 越高,说明分类模型越稳健。
有的时候,我们对recall 与 precision 赋予不同的权重,表示对分类模型的偏好:
$$ F_{β}=\frac{(1+β^2)TP}{(1+β^2)TP+β^2FN+FP}=\frac{(1+β^2)⋅Precision⋅Recall}{β^2⋅Precision+Recall} $$
可以看到,当 β=1,那么Fβ就退回到F1了,β其实反映了模型分类能力的偏好,β>1 的时候,precision的权重更大,为了提高Fβ,我们希望precision 越小,而recall 应该越大,说明模型更偏好于提升recall,意味着模型更看重对正样本的识别能力; 而 β<1的时候,recall 的权重更大,因此,我们希望recall越小,而precision越大,模型更偏好于提升precision,意味着模型更看重对负样本的区分能力。
交叉熵误差 (Cross-entropy Error,CE)
焦点误差(Focal Loss,FL)
参考资料:
https://www.wikiwand.com/en/F1_score