糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 线上AUC与线下AUC

线上AUC与线下AUC

时间:2018-10-25 02:29:21

相关推荐

线上AUC与线下AUC

啊啊啊啊啊啊啊,我真的太艰难了,我要疯了。

线上AUC如何计算?这是个面试题,如何统计线上AUC,不会的一面*挂。

For Recommendation in Deep learning QQ Group 277356808

For deep learning QQ Second Group 629530787

I'm here waiting for you

1,线上AUC,由模型预测后根据score排序的结果,最终有多少个正例与负例,

举例如下:abcdefg,7个item,经deepFM预测后分数score,按照score排序后的顺序为rank,实际点击的label为0或1,那么AUC是多少呢?这道题在虾*皮出现了类似的。

代码附下:很不幸,只有0.3,因为是数据量少,不具有统计意义(主要是我瞎给的数据)。

>>> import sklearn.metrics>>> label=[1,0,0,1,0,0,0]>>> score=[0.2,0.7,0.52,0.6,0.8,0.4,0.3]>>> sklearn.metrics.roc_auc_score(label,score)0.3

如果没有预测的score,只有排序后的rank能不能计算AUC呢???这个也是可以的,当然本菜鸟不保证正确哈。可能也与上面的结果不一样,

把结果label为1的rank 加起来,然后减去正例个数的构成的常数,再除以常数即可:

正例数pos_num=2,负例数为neg_num=5,第一个常数,2*(2+1)/2, 第二个常数,2*5

那么结果就是:[7+3-2*(2+1)/2]/(2*5)=0.7

我擦,恰好与上面相加是1 。。哪里有问题啊

注意!!!!上述的rank是按照模型预测分数score的倒排顺序,与求AUC中的顺序相反。如下,为反正法,

2-按照正负样本对进行计算AUC(正负样本对数/(正样本数*负样本数),下面统计的是正负样本对中正样本score大于负样本score的数,这才是用到的正负样本对数)

上述score假设未知(本来也不直接参与计算AUC,只要有所有的大小关系即可),只知道模型的预测score的顺序(依旧是倒排哈),那么正负样本对如下:正样本:a,d,负样本:b ,c,e,f,g

(a,b),(a,c),(a,e),(a,f),(a,g)

(d,b),(d,c),(d,e),(d,f),(d,g)

由于a的rank为7,那么他的score(本文所提及的score均是指预测为正例1的概率)肯定小于所有的负样本,那么正负样本对为0,再看d,d的rank为3,那么他的score肯定大于rank为4(c),5(f),6(g)

,括号内为item,那么统计的正负样本对数为3,AUC=(0+3)/(2*5)=0.3

因此,如果按照score从低到高排序(此排序仅为计算auc用,万不可作为item推出的顺序),即上面的rank,那么很容易看出,a的位置为1,这个刚好与score同样的顺序,不必再反过来,那么a的score肯定小于其他负样本,同样,d的位置为5,他的score大于除了a(因为a是正样本,不是统计正正样本对,而是正负样本对)之外的3个负样本,所以得到正负样本对数3,

总之,由模型预测顺序也可计算AUC,前提是有点击与否label,没有label,一切都是扯淡。

面积统计方法,以及按照阈值(此阈值是对模型预测分数划分的阈值,可参考sklearn的函数)的统计方法不再说了。拜拜。

愿我们终有重逢之时,

而你还记得我们曾经讨论的话题。

那么按照第3种方法的倒推,第2种方法计算的rank应该为1+5,即:(1+5-3)/10=0.3

困死了。

如果觉得《线上AUC与线下AUC》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。