模型评价指标

模型评价指标

首先介绍几个指标:
TP:正确预测正类       

FP:错误预测成正类,其实是负类

FN:错误预测成负类,其实是正类   

TN:正确预测成负类

1.准确率(accuracy)

预测正确的占所有样本的比例

(TP+TN)/(TP+TN+FP+FN)

2.召回率(recall)

召回率(Recall)又叫查全率,含义是在实际为正的样本中被预测为正样本的概率

TP/(TP+FN)

当我们关心某一类指标的时候召回率很有用,比如医疗图像检测,我们更关心的是那些有病的图像能不能被正确识别出来。

3. 查准率(precision)

在预测为真的样本中有多少实际为真的,关心的是预测正类正确的准确性

TP/(TP+FP)

4. F1值

F1值包含了查准率和查全率,是二者的调和平均

模型评价指标      P:查准率      R:查全率

首先我们来看查准率和查全率的关系,如下图。在二分类中,查准和查全是一对矛盾的定义,都是定义在正类上的。我们知道在逻辑回归中输出的是一个0-1之间的值,这个值大于0.5我们将其分为正类,小于0.5将其分为负类。但是这个阈值并不是固定的。查准关心的是能预测正确多少,查全关心的是能不能把正类都预测出来。可以想象,如果都分为正类,查全是1。但是如果想查准高,那么就把阈值设的很高,只有非常肯定的我才预测成正类。

模型评价指标

当然我们想要查准和查全都高,F1值就是找这样一个平衡点,让二者同时达到最高。

5. ROC/AUC

基础

roc和auc这两个指标不受样本不平衡的影响,介绍之前先介绍几个指标:

灵敏度(sensitivity): TP/(TP+FN)         可以看到就是召回率,灵敏就是说模型对正类是不是敏感,是不是正类都能识别出来

特异度(specificity): TN/(TN+FP)        关心的是负类,可以看做是负类的召回率,看负类能不能都被识别出来

真正率(TPR): =灵敏度                         有多少正类被分对了

假正率(FPR): 1-特异度=FP/(TN+FP)  有多少负类被分错了,就是被分成了正类,可以想到如果模型太偏向分成正类,这一项会很低。

像灵敏度、召回率都是以实际标签为指标的,而准确率是以预测的标签为指标的,所以准确率会受数据不平衡的影响。

 

ROC(Receiver Operating Characteristic)接受者操作特征曲线

如下图所示,ROC是一条曲线,其中横轴是假正率,竖轴是真正率。曲线上的每一点都代表着选取一个阈值下的表现。当阈值逐渐减小,样本被分到正类更加容易,真正率增大,但是负样本被错分成正样本很多,假正率也增大了。阈值最小的时候对应图上(1,1),阈值最大的时候对应图上(0,0)

目标是要让真正率大,让假正率小,对应图中就是(0,1)点。所以目标是要让点离左上角越近,离45度的虚线越远。

模型评价指标

 

AUC

AUC就是上图ROC曲线中曲线下的面积。这个面积有个特点,当模型效果最差的时候,即随机分类,roc曲线就是虚线,这时面积是0.5。当模型效果最好的时候,这时roc就是这个正方形,面积是1。所以auc是一个介于0.5-1之间的数,具体效果为:

0.5 - 0.7:

0.7 - 0.85:

0.85 - 0.95:

0.95 - 1:非常好

注意auc是很难达到0.9以上的,因为这里的auc不是正确率,排除了数据不平衡所带来的影响。实际项目中很少有数据平衡的情况,让auc非常好是很困难的。

AUC求解:

  1. 得到结果数据,数据结构为:(输出概率,标签真值)
  2. 对结果数据按输出概率进行分组,得到(输出概率,该输出概率下真实正样本数,该输出概率下真实负样本数)。这样做的好处是方便后面的分组统计、阈值划分统计等
  3. 对结果数据按输出概率进行从大到小排序
  4. 从大到小,把每一个输出概率作为分类阈值,统计该分类阈值下的TPR和FPR
  5. 微元法计算ROC曲线面积、绘制ROC曲线

 

参考:

https://zhuanlan.zhihu.com/p/46714763

https://segmentfault.com/a/1190000010410634