模型评价指标-ROC曲线AUC值
在做机器学习的时候,当模型训练好之后,我们该如何去评价这个模型的好坏呢?我们首先想到的会是使用正确率来评价模型的好坏。首先来看下正确率公式:
正确率 = 预测正确的样本数 / 总的样本数
那么如果用正确率来衡量一个模型的好坏的话,它会存在什么问题呢?
假如我们有100个样本,其中正样本数有95个,负样本数5个,模型的预测中,在95个正样本里面有94个预测成了正样本,1个预测成了负样本,在5个负样本中,有4个预测成了正样本,1个预测成了负样本,即:
实际值 95 正样本数 5负样本数
预测值 94正 1负 4正 1负
像这种情况,正确率为 (94 + 1)/ 100 = 0.95 ,如果只看0.95这个值的话,该模型算是个好模型了。但是,我们观察下负样本,5个负样本中只有1个本预测对了,显然模型不合理。所以,对于正负例样本比例不平衡的数据集来说,使用正确率来衡量模型好坏显然是不合理的。
准确率和召回率
接下来引入准确率和召回率两概念。首先这两指标是针对一边的样本的(正样本或负样本),通常叫正样本(负样本)的准确率,正样本(负样本)的召回率。首先引入下图:
如上图所示 : 正样本的召回率 = TP/(TP+FN) 正样本的准确率 = TP/(TP+FP)
其中:真正例(TP)、假正例(FP)、真反例(TN),以及假反例(FN)
TP :预测是正样本 实际也是正样本 FP:预测是正样本 实际是负样本
FN:预测是负样本 实际是正样本 TN:预测是负样本 实际是负样本
还是按上面那个例子计算正样本召回率和准确率:
正样本召回率 = 94 / (94 + 1) 正样本准确率 = 94/(94 + 4)
负样本召回率 = 1 / (4 + 1) 负样本准确率 = 1/(4 + 1)
不同项目,对于这两指标侧重点不一样,对于一些推荐系统来讲,它们就希望准确率高点,希望达到推荐过去的东西都是用户所喜欢的,进而提高用户体验,这个时候可以提高阈值,但是对于一些文章过滤需求,需要把黄赌毒的文章都过滤掉,这个时候就希望召回率高点,目的是要把所有的黄赌毒文章过滤掉,这个时候可以降低阈值。通过上述分析,这两指标大小是和阈值相关的,阈值大点,准确率就高,阈值小点,召回率就高。显然这也无法定量去衡量模型的好坏,接下来我们引出ROC曲线。
ROC曲线和AUC值
先看下曲线长什么样子
解释如下:
到这里模型评价指标就结束了。