当我们训练好一个模型,如何衡量它的好坏呢?这个时候我们需要一系列的数量化的指标,通过这些指标的高低,对模型的优劣进行判断。
一、准确率和召回率
准确率和召回率是每个模型都会去看的指标。
- 准确率 = 选出的正确信息条数 / 选出的信息总条数
- 召回率= 选出正确信息条数 / 样本中的信息条数
举个栗子,我们有100个苹果有90个是好的,10个是坏的。
我们弄了一个算法来找出坏的苹果。我们判断85个是好的,15个是坏的。其中85个好的里面,有2个是坏的;15个坏的里面有7个是好的。
那么准确率是多少呢? 准确率= 8/15 = 53.33%
召回率是多少呢? 召回率= 8/10 = 80%
二、F值(F-Score)
我们希望准确率越高越好,同时召回率也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只选出一个结果,且是准确的,那么准确率就是100%,但是召回率就很低;而如果我们把所有样本都选上,那么召回率是100%,但是准确率就会很低。
如果有一个指标,能综合准确率和召回率就好了,于是就有了F值。
- F 值= 准确率召回率2/(准确率+召回率)
上面选苹果的例子,F值= 0.53330.82 /(0.5333+0.8) = 63.99%
三、ROC和AUC
ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的好坏。
在了解ROC和AUC之前,我们需要先知道一些概念:
针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况:
-
(1)若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)-
-
(2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)
-
(3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)
-
(4)若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)
TP:正确的正样本数目
FN:漏报,没有找到本来为正的数目
FP:误报,错误找出的正样本数目
TN:正确拒绝的负样本数目
假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。
对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。如下图所示:
你可以理解为,x轴是我们要付出的代价,而Y轴是我们在付出这个代价的时候,获得的收益。我们希望Y越大越好,X越小越好。
AUC是Area Under roc Curve,也就是处于roc曲线下的面积大小,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的表现。
因为我们如果随机选择,那么就是一条(0,0)到(1,1)的直线,正因为我们做出了许多努力(设计算法、调整参数、吧啦吧啦)所以我们的AUC可以大于0.5,AUC越大,代表我们可以在付出较小的代价的情况下,获得较大收益。