ROC-AUC
AUC就是ROC曲线下面的面积,是评价二分类任务的重要指标。
ROC曲线
x轴是FPR=FP / (FP+TN)——就是预测为正(1)但是预测错了的数量 / 全部负样本(0)数量,FP / NegNum。
y轴是TPR=TP / (TP+FN)——就是预测为正并且预测正确 / 全部正样本(1)的数量,TP / PosNum。
ROC曲线是阶梯状的。
计算AUC
把p从高到低排序,然后从前往后以此作为threshold来判断预测为正还是负。依次描点计算面积。
伪代码:参考https://zhuanlan.zhihu.com/p/81202617
sort(p)
pos_num = neg_num = 0
for item in p:
if item.label > 0:
pos_num += 1
else:
neg_num += 1
tp = fp = tp_next = fp_next = auc = 0
for item in p:
if item.label > 0:
tp_next += 1
else:
fp_next += 1
auc += (tp_next / pos_num) * (fp_next / neg_num - fp / neg_num)
fp = fp_next
tp = tp_next