衡量机器学习模型功能,你可以试试应用ROC和CAP曲线!
作者头像
  • 王忠帅
  • 2019-03-11 11:48:52 1

虽然有许多指标可以用来评估机器学习模型的表现,比如准确率和召回率,但ROC曲线和CAP曲线对于评估分类模型的效果尤其有用。本文将探讨ROC和CAP曲线的概念,并展示如何使用Python和虚拟数据集来构建这些曲线。

尽管我在研究CAP曲线的文章中没有找到详细的教程,因此决定撰写本文来填补这一空白。

数据集

我创建了一个包含两个特征的数据集:年龄和经验。基于这两个特征,标签被定义为0.0(表示薪水低于20万美元)和1.0(表示薪水不低于20万美元)。

分类

首先,我将数据集分为训练集和测试集,比例为70%和30%。我使用支持向量机分类器和线性核函数进行训练,测试结果显示模型准确率达到95%。

性能评估

受试者工作特征曲线 (ROC)

ROC曲线,又称灵敏度曲线,是一种评估分类模型性能的有效方法。它通过真阳性率(TPR)与假阳性率(FPR)之间的关系来衡量模型效果。ROC曲线下的面积越大,说明模型区分不同类别的能力越强。

导入文件并创建基线

首先,我从sklearn.metrics导入roc_curveauc,以便能够创建ROC曲线并计算其下的面积。我还将图像尺寸设定为20x12,并创建了一个从(0,0)到(1,1)的基线。

计算概率并确定TPR和FPR

接下来,使用predict_proba方法计算预测概率,并将结果存储在变量probs中。我选择了第二类的概率(即薪水不低于20万美元的概率)。roc_curve函数生成了ROC曲线,并返回了FPR、TPR和阈值。最后,我利用这些值计算ROC曲线下的面积,命名为roc_auc

绘制ROC曲线

我使用FPR作为X轴,TPR作为Y轴绘制曲线,颜色设为绿色,线条宽度为4。这条曲线的标签包含了ROC曲线下面积,X轴标签为假阳性率,Y轴标签为真阳性率。标题为“受试者工作特征曲线”,图例位于右下角,字体大小为16。

ROC曲线下面积为0.98,表明模型表现优异。

累积精度曲线 (CAP)

CAP曲线用于分析模型如何以最少的尝试次数有效地识别所有目标类别。在此数据集中,我试图评估支持向量机分类器识别薪水不低于20万美元个体的速度。

计算每种类别的数量

首先,我统计了测试数据中的总样本数,并将结果保存在变量total中。接着,我分别计算了两类样本的数量,并将其保存在class_1_countclass_0_count中。我还将图像尺寸设定为20x12。

随机模型

首先,我绘制了一个随机模型,该模型假设理想情况下,1.0类的正样本检测将呈线性增长。该线为红色虚线,标签为“随机模型”。

完美模型

接着,我绘制了理想的模型,它能够一次性检测出所有1.0类的样本。这条线为灰色,标签为“完美模型”。

训练模型(支持向量分类器)

最后,我绘制了支持向量分类器的结果。同样地,我从probs中提取了第二类的概率,并将probsy_test合并。然后,我按概率降序排列这两组数据,以便概率最大的样本首先出现。我使用np.cumsum()函数计算累积和,并绘制了蓝色曲线,标签为“支持向量分类器”。我还绘制了其他两个模型的曲线。

运用曲线下面积进行CAP分析

一种分析CAP曲线的方法是通过计算曲线下面积。我们将随机模型下的面积视为A。然后,我们按照以下步骤计算精度:

  1. 计算完美模型下的面积(AP)直到随机模型(A)
  2. 计算预测模型下的面积(AR)直到随机模型(A)
  3. 计算精度(AR/AP)

精度越接近1,说明模型越好。根据计算,该模型的精度约为0.97,非常接近1,表明模型确实有效。

通过绘图进行CAP分析

另一种分析方法是通过观察已绘制的曲线。具体步骤如下:

  1. 从X轴绘制50%的垂直线,直至与支持向量分类器的曲线相交。
  2. 绘制一条水平线,从交点至Y轴。
  3. 计算1.0类标签相对于总1.0类标签的比例。

如果该比例超过90%,则需要警惕过拟合问题。

我通过计算总测试数据的50%来确定垂直线的位置,并绘制了从这一点到训练模型的垂直虚线。接着,我绘制了从交点到Y轴的直线,并计算了1.0类标签相对于总1.0类标签的比例,结果为93.55%。

虽然比例高于90%,但这是可以预期的结果。在数据集和分类的初步分析中,模型在划分数据方面表现良好。尽管我在这里使用的是测试数据,但同样的方法也可应用于训练数据,以评估模型在训练数据上的表现。

结论

本文介绍了如何使用Python计算ROC曲线和CAP曲线,并展示了如何分析这些曲线。

    本文来源:图灵汇
责任编辑: : 王忠帅
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
衡量曲线模型试试机器功能可以应用学习ROC
    下一篇