AUC性能指标计算方法及优缺点

AUC性能指标计算方法及优缺点

ROC实际评估模型对样本分类预测概率的排名序列,在不同截断点,和实际样本标签之间的差异。通过排序本身的质量好坏体现了学习器的”期望泛化性能“。

ROC曲线通过假阳性率FDR和真阳性率TPR来绘制,所有真实负样本中预测为正的比例FPR=FP/(FP+TN),所有真实正样本中预测为真的比例TPR=TP/(TP+FN)

AUC(Area Under ROC Curve)是ROC下面的面积,AUC越大说明分类器越可能把正样本排在前面。

AUC的优点:

1.衡量排序能力,适合排序类任务

2.对正负样本均衡不敏感,在样本不均衡情况下也能够合理评估

3.AUC不需要手动设置阈值,是一种整体上的衡量方法

AUC的缺点:

1.忽略了预测的概率值和模型的拟合程度

2.AUC反应信息较为笼统,无法反映召回率、精确率等实际业务关心指标

3.没有给出模型误差的空间分布信息,只关心正负样本之间的排序,并不关心正负样本内部的排序,难以衡量样本对于实际程度的刻画能力。

AUC的改进:

AUC仅关注所有样本中模型的排序能力,但是个性化推荐中,我们更关心对于同一个用户模型排序item的能力。因此引入了GAUC,对每个用户算AUC,然后算加权平均。

AUC的计算:

AUC也被定义为:随机抽样过程中,正样本预测值大于负样本预测值的概率。代码如下:

import numpy as np
from sklearn.metrics import roc_auc_score

y = np.array([0,   0,   0,   0,   1,    0,   0,    0,    1,   1  ])
pred = np.array([0.9, 0.4, 0.3, 0.1, 0.6, 0.58, 0.65, 0.32, 0.8, 0.7])

auc = roc_auc_score(y, pred)
print('AUC calculated by sklearn tool is {}'.format(auc))

p_index = []
n_index = []
for i in range(len(y)):
    if(y[i]==0):
        n_index.append(i)
    else:
        p_index.append(i)

total = 0
numerator = 0
for p in p_index:
    for n in n_index:
        total += 1
        if(pred[p]>pred[n]):
            numerator += 1
        if(pred[p]==pred[n]):
            numerator +=0.5

print(numerator/total)

AUC的计算还可以通过排序从O( n 2 n^2 n2)优化到O(nlogn),代码如下:

import numpy as np
from sklearn.metrics import roc_auc_score
y = np.array([0,   0,   0,   0,   1,    0,   0,    0,    1,   1  ])
pred = np.array([0.9, 0.4, 0.3, 0.1, 0.6, 0.58, 0.65, 0.32, 0.8, 0.7])

auc = roc_auc_score(y, pred)
print('AUC calculated by sklearn tool is {}'.format(auc))

arr = list(zip(list(pred),list(y)))
arr = sorted(arr,key=lambda x: x[0])
arr = np.array(arr)
M = 0
N = 0
sum = 0
rank = np.arange(1,len(arr)+1,dtype=float)

for index in range(0,len(arr)):
    rank[index] = np.mean(rank[arr[:,0]==arr[index,0]])#返回值相等的索引集合,求平均
    if(arr[index,1]==1):
        sum += rank[index]
        M += 1
    else:
        N += 1

numerator = (sum-(M+1)*M/2)
M_N = M*N
print(numerator/(M*N))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郁同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值