python画出roc曲线 auc计算逻辑_ROC及AUC计算方法及原理

1.非均衡分类问题

在大多数情况下不同类别的分类代价并不相等,即将样本分类为正例或反例的代价是不能相提并论的。例如在垃圾邮件过滤中,我们希望重要的邮件永远不要被误判为垃圾邮件,还有在癌症检测中,宁愿误判也不漏判。在这种情况下,仅仅使用分类错误率来度量是不充分的,这样的度量错误掩盖了样例如何被错分的事实。所以,在分类中,当某个类别的重要性高于其他类别时,可以使用Precison和Recall多个比分类错误率更好的新指标。

Precison(查准率):预测为正例的样本中真正正例的比例。

Recall(召回率):真正为正例的样本有多少被预测出来。

可见,我们可以根据我们最终的目标来选择度量指标。例如,在癌症检测中,我们希望选择Recall较高的模型(有病为正例)。而在垃圾邮件过滤中,我们希望选择Precison较高的模型。但是我们很容易构造一个高查准率或高召回率的分类器,但是很难保证两者同时成立。构建一个同时使两者很大的分类器是具有挑战性的。

2.ROC曲线

ROC是一个用于度量分类中的非均衡性的工具,ROC曲线及AUC常被用来评价一个二值分类器的优劣。

既然已经有了这么多的评价指标,为什么还要使用ROC与AUC呢?

因为ROC曲线有一个很好的特征:在实际的数据集中经常会出现类别不平衡现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间而变化。而在这种情况下,ROC曲线能够保持不变。下图是ROC曲线和Precison-Recall曲线的对比:

在上图中,a和c为ROC曲线,b和d为Precison和Recall曲线。a和b展示的是在原始测试集(正负样本平衡)的结果,c和d是将测试集中负样本的数量变为原来的10倍后分类器的结果。可以看出,曲线基本保持不变,而Precison和Recall变化较大。

2.2 ROC曲线的定义(Receiver Operating Characteristic)

ROC可以用来比较不同分类器的相关性能。

如图是一个ROC曲线的实例。

其中横坐标为FPR(False positive rate 假阳率),纵坐标为真阳率TPR(True postive rate)。

FPR:所有负例中有多少被预测为正例; TPR:有多少真正的正例被预测出来;

ROC 描绘了两者的相对权衡:

benefits(true postives)

costs(false positives)

下图给出了Precison,Recall, FPR,TPR的定义:

F-measure: precison和recall的调和平均值。没有一个单个的度量可以告诉所有的信息,所以建议使用多个度量。

接下来我们考虑ROC曲线中的四个点和一条线。

1.(0,0)&

你可能感兴趣的:(python画出roc曲线,auc计算逻辑)