AUC 在分类问题中是一个重要的指标,使用 python,调用相关库包的api可以很容易的计算这个指标。但是在工业界,我们往往更多使用的是 Hive 环境,如果能够用 HQL 直接计算 AUC,在很多时候都会方便不少。
AUC 两种解释
- AUC 表示 ROC 曲线下的面积
- AUC 表示在样本中随机挑选一对正负样本,正样本的打分高于负样本的概率
关于两种解释的具体说明见参考文献吧,人家已经写得很好了。
用 HQL 计算AUC
借助 AUC 的概率解释,我们很容易就能写出 HQL 代码:
SELECT
'v1' as version
, 1.0 * (SUM(rk * label) - SUM(label) * (SUM(label) + 1) / 2) / (SUM(1 - label) * SUM(label)) as auc
, count(1)
FROM (
SELECT
label
, pred as score
, ROW_NUMBER() OVER (ORDER BY pred, rand()) AS rk
FROM
(
select pred, label
from some.table
) t1
) t2;
参考文献
本文由 栖木 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。