什么是AUC?

AUC的定义是ROC曲线下的面积,实际意义为模型打分时将正例分数排在反例前面的概率。ROC曲线一般都会处于0.5-1之间,所以auc一般是不会低于0.5的,0.5为随机预测的auc。

什么是ROC曲线?

ROC中文名为:受试者操作特征(receiver operating characteristic curve),源于二战雷达信号分析技术。

ROC曲线绘制:分别计算模型结果的FPR与TPR,然后将TPR作为纵坐标,TPR作为横坐标作图,便可得到ROC曲线,ROC曲线上的每一个点对应一个阈值。。

R语言 PR AUC越高 r语言计算auc值_反例

 

 

 

TPR,FPR是什么?

这一块知识非常绕,很容易混淆。

TPR——真正例率:TP/(TP+FN),指的是模型预测的正确正例占所有正例的比例,等同于召回率,可以理解为正例的灵敏度。TPR越大,则预测的正例中正例占比越高。

FPR——假负例率:FN/(TN+FP),指的是模型预测的错误反例占所有预测反例的比例,等同于反例预测的错误率,也可以理解为模型对负例的特异度。FPR也可以用公式(1 - TNR)来表示。FPR越大,则预测的正例中反例越多。

总结:需要FPR越小,TPR越高,则模型越好,所以通常可用ROC曲线最靠近左上角的点作为二分类模型阈值的选择标准。(考虑人群浓度的话则是另一种阈值选法)

如何画ROC曲线?

将设我们预测出(z,0.08),(a,0.1),(b,0.2),(c,0.4),(d,0.5),然后我们在预测结果中选择每一个样本的分值作为阈值,比如第一个数据(a,0.1)则分值大于等于0.1的都为正样本,小于0.1的为负样本,然后便根据这些样本算出一组FPR,与TPR值,得到ROC曲线上的一点,对所有测试用例做一遍操作,便可以绘制得到ROC曲线图。

AUC如何计算

方法一:

按照AUC的含义,计算正例分数大于反例分数的概率,该方法计算复杂度为O(n^2),显然效率并不高。

方法二:

 

R语言 PR AUC越高 r语言计算auc值_R语言 PR AUC越高_02

 

 

 

解释:该方法为方法一的进阶版本,首先rank项就是样本按照score值从小到大升序排序,然后只对正样本的序号相加,然后减去正样本在正样本之前的数,结果便是正样本大于负样本的数,然后再除于总的样本数得到的便是AUC值。

直观理解:

A——rank序号:小于该样本分值的样本数。

B——M(1+M)/2:等差数列之和,即将所有正样本排序之和相加(1+...+10+...n)

A-B:即将所有小于某正样本得个数去掉,得到的便是小于该正样本的负样本数

M*N:所有正负样本两两排序的数之和

最终得到正样本排在负样本之前的概率值。该方法时间复杂度为O(nlogn)

方法三:

直接通过每一个梯形的面积计算整个ROC曲线的面积,该方法目前用的已经不多。

小弟水平有限,还请各位大神指点错误。