SQL实现AUC的代码,可用于HIVE等使用SQL处理大数据的场景。注意:这段代码不是原创,而是从其他地方摘录下来记录这里的,但是效果经过验证,方便后续查找使用,感谢原创。
select (ry - 0.5*ny*(ny+1))/(nx*ny) as auc from(
select sum(if(y=1, r, 0)) as ry,
sum(y) as ny,
sum(1-y) as nx from(
select y,
score,
row_number() over(order by score asc) as r
from some.table
)t
)a
其中:y是样本实际Label, score是预测值。
附AUC的定义:
AUC(Area Under Curve)被定义为ROC曲线下的面积。很明显这个面积的数值不会大于1。并且ROC曲线一般都处于y=x这条直线的上方,因此AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
参考资料:https://blog.csdn.net/Joyliness/article/details/79156879