如何轻松理解AUC和K-S曲线?| 大白话科普

在数据分析和模型评估中,AUC(Area Under Curve)和K-S(Kolmogorov-Smirnov)曲线是两个非常重要的指标。特别是在二分类问题中,比如信用评分、医疗诊断等,理解这两个指标对评估模型性能至关重要。今天,我们就用大白话来结合一个详细的实际案例,带你深入了解AUC和K-S曲线。

1. 什么是AUC?

AUC,全称为“曲线下面积”(Area Under the Curve),是评估分类模型性能的重要指标。要理解AUC,首先得知道ROC曲线(Receiver Operating Characteristic Curve)是什么。而要理解ROC,我们先看一下混淆矩阵。

混淆矩阵(Confusion matrix)

混淆矩阵一般都如下图:

                      Predicted
 

Positive

(PP)

Negative 

(PN)

Actual

Positive (P)

True

positive 

(TP)

False 

negative 

(FN)

Negative (N)

False

positive

 (FP)

True 

negative

 (TN)


列代表预测类别,每列总数代表预测为该类别的总数。

行代表真实类别,每行总数代表数据真实类别的总数。

有了混淆矩阵,我们便能计算FPR和TPR。

FPR、TPR

假阳性率(FPR):指的是在所有实际为负例的样本中,被错误预测为正例的比例。

FPR = FP / (FP + TN)

真阳性率(TPR):指的是在所有实际为正例的样本中,被正确预测为正例的比例。

TPR = TP / (TP + FN)

根据FPR和TRR,我们便能绘制ROC曲线。

ROC曲线

ROC曲线展示了模型在不同阈值下的分类能力。它的X轴是假阳性率(False Positive Rate, FPR),Y轴是真阳性率(True Positive Rate, TPR)。

 

2. 实际案例:如何绘制ROC曲线?

为了更好地理解,我们通过一个信用卡欺诈检测的详细案例来说明AUC和K-S曲线的计算和绘制过程。

背景介绍

假设你正在开发一个模型来预测某个交易是否为欺诈。数据集中有100个交易记录,其中50个是欺诈交易(正例),50个是非欺诈交易(负例)。模型为每个交易打一个分数,表示其为欺诈的可能性。

以下是模型预测结果的一个示例:

交易编号 实际类别(0=非欺诈,1=欺诈) 模型打分
1 1 0.90
2 0 0.85
3 1 0.80
4 0 0.60‍
100 0 0.10

 

步骤1:选择阈值

首先,我们需要选择一系列阈值(Threshold),用于判断交易是否为欺诈。假设我们使用以下几个阈值:0.9, 0.7, 0.5, 0.3。

步骤2:计算TPR和FPR

对于每个阈值,我们需要计算模型在该阈值下的TPR(真阳性率)和FPR(假阳性率)。下面逐步演示如何计算这些指标。

a. 阈值 = 0.9

预测分数大于0.9的交易会被标记为欺诈。

 

TP(真正例):假设只有10个欺诈交易的分数大于0.9。

FP(假正例):假设只有5个非欺诈交易的分数大于0.9。

FN(假负例):40个欺诈交易的分数小于0.9。

TN(真负例):45个非欺诈交易的分数小于0.9。

TPR = 10 / (10 + 40) = 0.2

FPR = 5 / (5 + 45) = 0.1

b. 阈值 = 0.7

预测分数大于0.7的交易会被标记为欺诈。
TP:30个欺诈交易的分数大于0.7。FP:10个非欺诈交易的分数大于0.7。FN:20个欺诈交易的分数小于0.7。TN:40个非欺诈交易的分数小于0.7。TPR = 30 / (30 + 20) = 0.6

FPR = 10 / (10 + 40) = 0.2

c. 阈值 = 0.5

预测分数大于0.5的交易会被标记为欺诈。

TP:40个欺诈交易的分数大于0.5。FP:15个非欺诈交易的分数大于0.5。FN:10个欺诈交易的分数小于0.5。TN:35个非欺诈交易的分数小于0.5。TPR = 40 / (40 + 10) = 0.8

FPR = 15 / (15 + 35) = 0.3

d. 阈值 = 0.3

预测分数大于0.3的交易会被标记为欺诈。

TP:45个欺诈交易的分数大于0.3。FP:20个非欺诈交易的分数大于0.3。FN:5个欺诈交易的分数小于0.3。TN:30个非欺诈交易的分数小于0.3。TPR = 45 / (45 + 5) = 0.9

FPR = 20 / (20 + 30) = 0.4

步骤3:绘制ROC曲线

我们将以上计算得到的TPR和FPR值作为坐标点(FPR, TPR)绘制在二维平面上,即可得到ROC曲线:

点1 : (0.1, 0.2) ——对应阈值0.9点2:  (0.2, 0.6) ——对应阈值0.7点3:  (0.3, 0.8) ——对应阈值0.5

点4:  (0.4, 0.9) ——对应阈值0.3

这些点连成的曲线即为ROC曲线,曲线下面积(AUC)代表了模型的整体分类性能。AUC值越接近1,模型的区分能力越强。

3. 什么是K-S曲线?

K-S曲线,即Kolmogorov-Smirnov曲线,是另一个评估分类模型性能的工具。K-S曲线主要关注模型在不同阈值下对正负样本的区分能力。

K-S曲线的绘制方法

K-S曲线是通过计算不同阈值下正例和负例的累积分布来绘制的。我们继续使用上述的欺诈检测案例来说明。

1. 计算累积分布

对于每个阈值,我们分别计算正例(欺诈交易)和负例(非欺诈交易)的累积分布。

以阈值0.7为例,正例的TPR为0.6,负例的FPR为0.2。此时正例的累积分布曲线达到0.6,而负例的累积分布曲线达到0.2。

2. 绘制累积分布曲线

将正例和负例在不同阈值下的累积分布绘制在同一张图上。

3. 计算K-S值

K-S值即为两条累积分布曲线之间的最大垂直距离。例如,在阈值0.5时,正例的累积分布为0.8,负例的累积分布为0.3,此时K-S值为0.5(即0.8 - 0.3)。

K-S值越大,表示模型在该阈值下的区分效果越好。

3. 常见误区

1. AUC和准确率的区别

AUC关注的是模型在不同阈值下的整体表现,而准确率只是固定阈值下的一个静态指标。AUC考虑了模型对不同类别的区分能力,而准确率容易受到类别不平衡问题的影响。

2. AUC和K-S的关系

虽然AUC和K-S都是评估模型性能的指标,但它们关注的重点不同。AUC关注的是模型整体的分类能力,而K-S更注重在某个最佳阈值下的区分能力。因此,AUC高不一定K-S高,反之亦然。

3. K-S值并非越大越好

K-S值过高可能意味着模型过拟合,即在训练数据上表现很好,但在新数据上表现可能不佳。因此,K-S值需要结合实际业务场景进行合理解读。

 

4. 总结

通过这篇文章,我们详细介绍了AUC和K-S曲线的概念,并通过信用卡欺诈检测的案例一步步讲解了如何计算ROC曲线上的FPR和TPR,如何绘制ROC曲线,并通过累积分布曲线来绘制K-S曲线。

AUC和K-S曲线都是强大的工具,各自有其独特的适用场景。AUC提供了模型整体表现的全貌,而K-S值则帮助我们找到模型在某个阈值下的最佳区分点。在实际应用中,建议结合使用这些指标,以全面评估模型的表现。

希望这篇文章能帮助你更好地理解AUC、K-S曲线及相关概念。如果你有任何疑问或想了解更多内容,欢迎留言讨论!

posted @ 2024-10-09 23:39  dpfocus  阅读(1065)  评论(0)    收藏  举报