解题思路
AUC 可以不画 ROC,直接用秩统计算。把每笔交易按风险分从小到大排,名次从 1 起。分数相同的几笔不能拆开,它们合占第 L 到第 R 个位置,每笔都记平均名次 (L+R)/2。
- 排序后扫一遍,把同分区间扩满,再把区间内所有下标写成同一个平均名次。
- 记欺诈笔数为 k,正常笔数为 g,欺诈样本的名次之和为 S。若欺诈全部排在最前面,名次和最小是 1+⋯+k=k(k+1)/2。多出来的部分 V=S−k(k+1)/2 就是正类“赢过”负类的对数(并列计 0.5)。
- 一共有 k⋅g 对正负样本,因此 AUC=V/(k⋅g)。输出必须保留 6 位小数。
- 常见假解:并列时按出现顺序硬拆成 1,2,3;名次从 0 起;按分数从大到小编号却仍套同一公式;只统计严格大于、并列不算 0.5。