在信号检测理论中,接收者操作特征(Receiver Operating Characteristic,ROC)曲线是是一种坐标图式的分析工具,通过计算 ROC 的曲线下面积(Area Under Curve,AUC)可以对分类模型进行评估。
ROC 分析的是二分分类模型。
ROC 曲线是通过绘制采用不同分类阈值时的 TPR 与 FPR 来选择模型。ROC 曲线的对角线可以被解释为随机猜测(如丢硬币、正反面出现概率预测均是 50%),并且落在对角线上方的分类模型优于随机猜测,落在对角线下方的分类模型比随机猜测更差。完美的分类器将落入图的左上角,TPR 为 1,FPR 为 0。降低分类阈值会导致将更多样本归为正类别,从而增加假正例和真正例的个数。
下文将实现分类器的 ROC 曲线绘制,该分类器仅使用 wdbc 数据集中的两个特征来预测肿瘤是良性还是恶性。
数据导入和预处理
1 | import pandas as pd |
ROC 曲线的 scikit-learn 实现
使用逻辑回归 pipeline,并采用折叠数为 3 的 StratifiedKFold
,如下代码:
1 | from sklearn.metrics import roc_curve, auc |
上面的代码通过从 SciPy 导入的 interp
函数插入了三次折叠的平均 ROC 曲线,并通过 auc
函数计算曲线下面积。
三次绘制的 ROC 曲线表明不同折叠之间存在一定程度的变化,并且 ROC AUC 的平均值 (0.76) 落在完美预测 (1.0) 和随机猜测 (0.5) 之间:

如果只需要用到 ROC AUC 分数,也可以直接导入 sklearn.metrics.roc_auc_score
函数。ROC AUC 分数可以对样本数量不平均的二分分类模型进行评估。