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