我花了一天半的时间理解auc,其中自己把自己绕进去了,其实最终也没有理解的很是透彻,只是记住了auc的计算方法。
大纲:auc的理论推导及示例
推荐系统中auc计算公式
简便方法1
简便方法2
auc的理论推导及示例
提到auc,首先想到的就是ROC曲线,auc=ROC曲线下与xy轴的面积。ROC曲线的x轴为伪阳率,y轴为真阳率。
混淆矩阵
这里需要注意的是:FN为伪阴(预测与真实不一致为伪,预测结果negative为阴),同理TN是真阴(预测与真实结果一致,预测结果为阴)。
真阳率=真阳个数/(真阳数+伪阴数) (预测为1&真实为1)/预测为1
伪阳率=伪阳个数/(伪阳数+真阴数)(预测为1&真实为0)/预测为0
当真阳率等于伪阳率时我们认为真实为1预测为1的概率等于真实为0预测为1的概率。整个的正确率为0.5.
在推荐系统中我们希望真实为1预测为1的概率尽量大于真实为0预测为1的概率。如下图所示。
举个简单例子,计算下图的auc
TP=3,FN=1,TPr=3/4.FP=2,TN=2,FPr=1/2
推荐系统中auc计算公式
对于推荐系统来说我们事判断排序是否正确,比如ctr预估,得到的是点击与否的概率值,然后排序,我们想看这个ctr排序的auc。将每个ctr作为划分正负样本的阈值,大于等于阈值的被划分为正样本,小于阈值的被划分负样本。
举个例子 :
分别采用每个值作为阈值来划分正负样本。
0.1为阈值时
得到最后的面积为13/16.
简便算法1
auc=(正样本的排序序号-正正样本对)/正负样本对个数
存在问题是当正负样本值一样时,排序是把正样本的值排在前边还是负样本的排在前边呢?会出现auc的奇异情况。所以以上公式不适用于正负样本值一样的情况。
简便算法2
以下有另外一种解释,是正样本的值大于等于负样本的值,那么负样本值小于正样本值的个数是几个?
正样本和负样本是两个互不纠缠的正态分布,其中有M个正样本,N个负样本。
阈值如果遍历所有正样本,则每个正样本都比N个负样本大,因此,积分下来,就是N+N+N+…+N = M * N,而积分的区域是M * N,因此,这种理想状态下,得到了AUC为
以上例子里,
正样本的阈值为0.9时,比4个负样本的值大,
正样本的阈值为0.8时,比4个负样本的值大,
正样本的阈值为0.6时,比3个负样本的值大,
正样本的阈值为0.3时,比2个负样本的值大。
总共时16个正负样本对,正样本比负样本大的有4+4+3+2=13个
auc=13/16
基于以下大佬讲解总结的,如何理解机器学习和统计中的AUC?www.zhihu.com千寻:图解AUC和GAUCzhuanlan.zhihu.com