准确率(Acc)、精确率(Pre)、召回率(Recall)、F值(F-Measure)
在机器学习算法的实践中,经常需要对算法的效果做评价:
其中,准确率(Acc)、精确率(Pre)、召回率(Recall)、F值(F-Measure)等,是最常见的评价指标之一。
混淆矩阵:
True Positive (TP):将正类预测为正类数(真正率)
True Negative (TN):将负类预测为负类数(真负率)
False Positive (FP):将负类预测为正类数(假正率)→ 误报 (Type I error)
False Negative (FN):将正类预测为负类数(假负率)→ 漏报 (Type II error)
准确率:
精确率:
召回率:
F值:
准确率是一个很好很直观的评价指标,通常来说,正确率越高越好,但是有时候准确率高并不能代表一个算法就好。
比如,某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0 不发生地震、1 发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么它就可能达到99%的准确率,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。为什么99%的准确率的分类器却不是我们想要的,因为这里数据分布不均衡,类别1的数据太少,完全错分类别1依然可以达到很高的准确率却忽视了我们关注的东西。
在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。
比如,在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用Acc,即使全部预测成负类(不点击),Acc也有 99% 以上,没有意义。
因此,单纯用准确率来评价一个算法模型是远远不够科学全面的。
精确率与召回率多用于二分类问题。在信息检索领域,精确率和召回率又被称为查准率和查全率。
精确率 (Precision) 指的是模型判定为正的所有样本中有多少是真正的正样本;
召回率 (Recall) 指的是所有正样本有多少被模型判定为正。
设模型输出的正样本集合为AA,真正的正样本集合为BB,则:
有时候我们需要在精确率与召回率间进行权衡,一种选择是画出精确率-召回率曲线(Precision-Recall Curve),曲线下的面积被称为AP分数(Average precision score);另外一种选择是计算Fβ分数:
当β=1称为F1分数(F1-Score),是分类与信息检索中最常用的指标之一。
本文结束!谢谢大家!