专业的编程技术博客社区

网站首页 > 博客文章 正文

分类器模型检测--ROC曲线和AUC值(roc分类算法)

baijin 2024-10-29 13:05:13 博客文章 10 ℃ 0 评论

在监督学习建模中有一个重要的模块是模块的检测,就是怎样判断一个模型的好坏?那么常用的的检测的指标有P值、R值、F值、ROC曲线、AUC值等,今天来学习他们都是怎么来的,有什么用处。这里为二分类问题,即只有正例(为1)和负例(为0)。

1、TP为正例中正确预测的值。

2、FP为错报,即把不是正例的样本预测为正例。

3、FN为漏报,即没有把正例的样本预测为正例。

4、TN为正确预测负例的值。

模型判断最基础的两个指标是P值和R值。P值(准确率)是指预测为正例的数据中实际为正例所占有的比例:TP/(TP+FP)。R值(召回率)是指在实际为正例的数据中预测为正例所在比例:TP/(TP+FN)。这两个指标都有片面性,所以常常用两者的调和平均数(harmonic mean)来评判模型的好坏,这个调和平均数就是F值。即F=2RP/(P+R)=2TP/(2TP+FN+FP)。

那么什么是ROC曲线呢,引用维基百科的图片如下:

这里两个坐标是FPR(False positive rate)和TPR(True positive rate)的计算公式为:

1、FPR = FP/(FP+TN)

2、TPR = TP/(TP+FN)

理解上TPR就是召回率,FPR是模型错报值在实际是负例中的比例。显然他们都是在0-1区间中的,那么在上图中有四个点分别为(0,0)、(0,1)、(1,0)、(1,1)为四种极端情况。

(0,0)点说明TP=0和FP=0,是在模型把所有值都判断为负例。

(0,1)点说明TP=0且TN=0,意思是模型一个都没判断对,把正例全判断为负例,负例全判断为正例。

(1,0)点说明FN=0和FP=0,意思是模型全都判断对了,是完美分类器的表现。

(1,1)点说明TN=0和FN=0,意思是模型把所有样本都判断为正例。

那么一个模型只有一个TPR和FPR值,即只能得图中的一个点,那么怎么得到图中的曲线呢?做法是我们在得到模型后,可以得到所有测试集的判为正例的概率值,那么我们可以设定一个阈值(threshold),高于这个阈值则判为1,低于这个阈值判为0。我们对所有测试集的结果按概率大小从大到小排序,如下图:

第一列是样本,第二列是实际的类别,第三列是模型计算后的概率值。那么可以根据不同的阈值得到不同的TPR和FPR,比如阈值设为0.7时TPR为0.2,FPR为0.1。则可以得到这样的图形:

AUC的定义是在ROC曲线下的面积,即对曲线求积分。ROC可以直观的说明都趋于(1,0)点的曲线是一个好的模型,而AUC则从数值上说明模型的好坏,当AUC趋于1时模型越好。

那么在有了F值等指标后为啥要采用ROC和AUC来说明模型的好坏呢?下面是摘自网上的一段话:因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表