基础
对于数据测试结果 | 有4种情况: |
---|---|
真阳性(TP) | 预测为正,实际也为正 |
假阳性(FP) | 预测为正,实际为负 |
假阴性(FN) | 预测为负,实际为正 |
真阴性(TN) | 预测为负,实际也为负 |
可参考:
详解准确率、精确率、召回率、F1值等评价指标的含义
准确率
预测正确的结果占总样本的百分比
最简单、最直观的评价标准:准确率(Accuracy) ,即预测正确的结果占总样本的百分比,计算公式:
$ Accuracy = frac{{TP + TN}}{{TP + TN + FP + FN}}$
虽然准确率能够判断总的正确率,但是在样本不均衡的情况下,并不能作为很好的指标来衡量结果。比如有9个正样本,1个负样本,预测均为正样本时,准确率达到0.9比较高,但是并不代表系统的性能好。
精确率
在被所有预测为正的样本中实际为正样本的概率
精确率(Precision) 是针对预测结果而言的,其含义是在被所有预测为正的样本中实际为正样本的概率(精确率代表对正样本结果中的预测准确程度,准确率则代表整体的预测准确程度),计算公式:
(Precision = frac{{TP}}{{TP + FP}})
召回率
实际为正的样本中被预测为正样本的概率
召回率(Recall) 是针对原样本而言的,其含义是在实际为正的样本中被预测为正样本的概率,计算公式:
(Recall = frac{{TP}}{{TP + FN}})
F1 score
F分数被广泛应用在信息检索领域,用来衡量检索分类和文档分类的性能。近期在深度学习的应用中,多用作分类系统的性能指标。
F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率(一般希望精确率和召回率都很高,但实际上是矛盾的,上述两个指标是矛盾体,无法做到双高)。F1分数可以看作是模型精确率和召回率的一种调和平均,最大值是1,最小值是0,又称作平衡F分数(Balanced Score)。计算公式为:
({F_{ m{1}}}{ m{ = 2/}}left( {frac{1}{{recall}}{ m{ + }}frac{1}{{precision}}} ight){ m{ = 2}}frac{{recall imes precision}}{{recall + precision}})
macro-F1
F1是针对二元分类的,那对于多元分类器,也有类似F1 score的度量方法,常用的有两种,一种叫做macro-F1(宏平均),另一种叫做micro-F1(微平均)。
简而言之,就是针对每个“类”(class),计算每个类的F1分数,然后联合起来。
宏平均F1计算方式:计算出每一个类的Precison和Recall后计算F1,最后将F1平均。
micro-F1
微平均F1分数,不需要区分类别,使用总体样本,计算出所有类别总的Precision和Recall,然后计算F1。
参考micro和macro F1 score分别是什么意思?:如果这个数据集中各个类的分布不平衡的话,更建议使用mirco-F1,因为macro没有考虑到各个类别的样本大小。
python
sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)
参考源码,对于'average'参数,如果是二分类问题则选择参数‘binary’;如果考虑类别的不平衡性,需要计算类别的加权平均,则使用‘weighted’;如果不考虑类别的不平衡性,计算宏平均,则使用‘macro’。具体参考代码:
from sklearn.metrics import f1_score
# micro
f1_score(y_true, y_pred, average='micro')
# macro
f1_score(y_true, y_pred, average='macro')
# weighted
f1_score(y_true, y_pred, average='weighted')
拓展
根据对recall和precision的重视程度不同,有({F_eta})分数,其物理意义就是将精准率和召回率这两个分值合并为一个分值,在合并的过程中,召回率的权重是精准率的(eta)倍。计算公式为:
({F_eta }{
m{ = }}left( {1 + {eta ^2}}
ight)frac{{recall imes precision}}{{{eta ^2} cdot recall + precision}})
G分数是另一种统一精准率和召回率的系统性能评估标准。相比于F分数是准确率和召回率的调和平均数,G分数被定义为准确率和召回率的几何平均数,计算方式:
$G = sqrt {precision cdot recall} $