推荐模型评价指标 AUC

    xiaoxiao2022-07-04  128

    推荐中常用的模型评价指标有准确率,召回率,F1-score和AUC。

    1. 什么是AUC

    AUC指标是一个[0,1]之间的实数,代表如果随机挑选一个正样本和一个负样本,分类算法将这个正样本排在负样本前面的概率。值越大,表示分类算法更有可能将正样本排在前面,也即算法准确性越好。

    2. AUC的计算方法

    绘制ROC曲线,ROC曲线下面的面积就是AUC的值假设总共有(m+n)个样本,其中正样本有m个,负样本有n个,则共有m*n个样本对。如果正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,反之为0,求和后除以(m*n)就是AUC的值对所有样本进行打分,按分数排序,第一名的rank为m+n,第二名的rank为m+n-1,往后依次递减,则 A U C = ∑ i ∈ 正 样 本 r a n k i − m ( 1 + m ) 2 m × n {AUC = \frac{\sum_{i \in 正样本} rank_i - \frac{m(1+m)}{2}}{m \times n}} AUC=m×niranki2m(1+m)

    第三种的计算方法与第二种是一样的,分子也是计算满足正样本被预测为正样本的概率值大于负样本被预测为正样本的概率值的<正样本,负样本>对个数。将所有正样本排在前面的样本对求和,再减去<正样本,正样本>对的个数。

    3. ROC曲线

    数学上的背景 考虑一个二分类问题,分类结果有四种情况: (1) 若sample是正类,并且被预测为正类,即为真正类(True Postive TP) (2) 若sample是正类,但被预测成为负类,即为假负类(False Negative FN) (3) 若sample是负类,但被预测成为正类,即为假正类(False Postive FP) (4) 若sample是负类,并且被预测为负类,即为真负类(True Negative TN)

    实际\预测101TPFNActual Positive TP+FN0FPTNActual Negative FP+TNPredicted Positive TP+FPPredicted Negative FN+TN

    下面是一个简单的图例: line1和line2分别表示一个阈值,以line1为例,左边是正样本的分布,右边是负样本的分布,虚线左侧预测为正,右侧预测为负。那么line1左侧白色部分的面积即为TP,虚线部分的面积为FP,line1右侧白色部分的面积为TN,虚线部分的面积为FN。

    定义: 准确率(Accuracy ACC): T P + T N T P + F N + F P + T N {\frac{TP+TN}{TP+ FN+FP+TN} } TP+FN+FP+TNTP+TN

    真正类率(True Postive Rate TPR): T P T P + F N {\frac{TP}{TP+FN} } TP+FNTP,代表分类器预测的正类中实际正实例占所有正实例的比例 负正类率(False Postive Rate FPR): F P F P + T N {\frac{FP}{FP+TN} } FP+TNFP,代表分类器预测的正类中实际负实例占所有负实例的比例。 真负类率(True Negative Rate TNR): T N F P + T N {\frac{TN}{FP+TN} } FP+TNTN,描述识别出的负例占所有负例的比例

    TPR也叫敏感度(sensitivity),TNR称为特异度(specificity)

    结合上面的图,当虚线从line1移至line2,TPR在变大,FPR也在变大,TNR在变小,即敏感度变高,特异度变低。举一个实例,假设我们要预测一个人是否有糖尿病,有则为正样本,无则为负样本,那么左边是糖尿病人的血糖水平分布,右边是健康人的血糖水平分布。我们把阈值定为line1时,特异度高,健康人误诊率低,当阈值为line2时,敏感度高,基本大部分糖尿病人都可以被检测出来,漏诊率低。

    ROC曲线 如果我们以特异度TNR为横轴,敏感度TPR为纵轴画出样本的曲线,即为ROC曲线。

    举个例子:

    sampleclassscore1p0.92p0.83n0.74p0.65p0.556p0.547n0.538n0.529p0.5110n0.50511p0.412n0.3913p0.3814n0.3715n0.3616n0.3517p0.3418n0.3319p0.3020n0.1

    然后将socre从高到低取为阈值,大于等于阈值预测为正例,小于阈值预测为负例。当阈值为0.9时,TPR = 1/10 = 0.1,TNR = 0/10 = 0;阈值为0.8时,TPR = 1/10 = 0.1,TNR = 0/10 = 0;阈值为0.7时,TPR = 2/10 = 0.2,TNR = 1/10 = 0.1,以此类推,可以画出ROC曲线如下所示:

    最新回复(0)