干货

auc的计算

  • 有两种计算方式:
  • 第一种:适合口算,特殊说明:一组正负样本得分相同则分子给0.5即可,多组相同乘以组数即可
  • 第二种:大多数书上给的计算公式,相较第一种不太适合口算。
  • 另外还有绘制ROC曲线,再算area-under-curve的方式,通用方式积分求面积

tf.metrics.auc

  • 常用的auc计算方式有两种
  • 一种是tensorflow的tf.metrics.auc函数
  • 一种是sklearn中的roc_auc_score()函数。
  • 二者都是通过极限逼近求积分的思想,计算roc曲线下面积的一个个小梯形的面积和得到auc。
  • sklearn中对全负样本全正样本没有做特殊处理,所以出现这两种情况的时候会报错,因此通过roc_auc_score()函数算gauc的时候,过滤掉相应的全负或者全正用户。
  • 而tf中的有一个分母为0时的无穷小的数打底,如果样本全正或者全负tf中的auc会1

    求证样本全正全负情况下tf中求曲线面积得到的auc为1,需要对真阳率和假阳率做进一步分析,在这里用auc的第二种计算公式做简单说明:见下图

    说明:M和N分别为正样本和负样本个数,一旦全负或者全正样本,分母则为0,auc无穷大,如果加一个极小值打底,高数求极限思想,分子分母都无穷小,则auc为1。(全负样本的时候tf.metrics.auc=1 这种情况在我之前的工作中出现了这样的case(label 的feature columns的key出现了前后不一致,所以会默认为0,即全负样本,那个时候的自拟合auc是1,排查问题也是耗费了一些时间)

大致看下就ok

  • auc跟样本真实label和预测概率排序相关

单个用户的样本全是正样本或者全是负样本,auc就算不出来了,会报错,所以算gauc的时候要过滤这两类的case

auc计算python sklearn auc计算软件_机器学习

auc计算python sklearn auc计算软件_机器学习_02


gauc的求法一般用的是下面的这种,用户样本数作为系数

auc计算python sklearn auc计算软件_人工智能_03


auc计算python sklearn auc计算软件_机器学习_04