ROC曲线的通俗理解

ROC曲线的通俗理解在准备机器学习导论课程考试的过程中 发现自己根据西瓜书上的讲解总是也理解不上去 ROC 曲线的含义 于是在网络上寻求答案 发现一篇讲解得不错的博客 1 说得比西瓜书好很多 通俗易懂 这里说一下自己的感想和理解对于已经有数据标签的训练样本 可以得到它们的评分 其中 class 一栏表示真实值 p 为正例 n 为反例 这 20 个样本中有 10 个正例 10 个反例 score 一栏则是分类器给出的分类评分

在准备机器学习导论课程考试的过程中,发现自己根据西瓜书上的讲解总是也理解不上去ROC曲线的含义。于是在网络上寻求答案,发现一篇讲解得不错的博客【1】,说得比西瓜书好很多,通俗易懂。这里说一下自己的感想和理解对于已经有数据标签的训练样本,可以得到它们的评分:

其中class一栏表示真实值,p为正例,n为反例,这20个样本中有10个正例10个反例;score一栏则是分类器给出的分类评分。一般的二分类的实现方法就是选择一个阈值,将大于这个阈值的样本认为是正例,小于这个阈值的样本认为是反例。于是,不妨对 样本4来看,如果将样本4的评分设置为分类阈值,被分类器为正例的样本有1 2 3 4,其中真正的正例样本有1 2 4,故其TPR=3/10=0.3,FPR=1/10=0.1(分母虽然数值一样但是意义不同,前面TPR的分母是样本总体中的真正例个数,后者是样本总体中的真反例个数)。接着不妨设置样本9的评分0.51作为阈值,那么样本1~9都会被分类器认为是正例样本,其中为真正例的有1 2 4 5 6 9共6个,所以TPR=6/10=0.6,FPR=3/10=0.3.如此这样,将1~20每个样本的评分均作为分类器的判定阈值,可以得到20组TPR和FPR的有序数对;然后不妨以TPR和FPR为两个坐标轴建立一个直角坐标系,就可以得到这样的图像:

这样每一组图像在图中都会有一个坐标,可以连成一条折线。一般地我们希望分类器得到的分类结果是完全正确的,也就是正例样本全部都能够被检测出来,并且不会混入真反例样本,这个时候TPR->1且FPR->0,反应在图像上好的分类器的折线应该更加接近左上角。当样本足够多时,折线就近似为圆滑的曲线,类似于这个样子【2】:

从这个图上看,分类器A的结果肯定比分类器B要好。这个就是AOC曲线以及它的含义,通过这样的分析理解,感到自己明白了很多。

附上绘图所使用的MATLAB程序:

%code type:MATLAB
%绘制ROC曲线,demo

clear all;
close all;
clc;

%测试样本数据
samples=[
1,0.9;
1,0.8;
0,0.7;
1,0.6;
1,0.55;
1,0.54;
0,0.53;
0,0.52;
1,0.51;
0,0.505;
1,0.4;
0,0.39;
1,0.38;
0,0.37;
0,0.36;
0,0.35;
1,0.34;
0,0.33;
1,0.30;
0,0.1];

%首先准备绘制ROC曲线
figure;
%开始计算TPR和FPR
tpr=zeros(20,1);
fpr=zeros(20,1);
%这里的i表示以第i个样本的评分作为分类阈值
for i=1:20
%正例样本计数
p_cnt=0;
%这里的j表示在统计正例个数的时候,遍历到的样本的id
for j=1:i
%判断这个遍历到的样本是不是正例
if(samples(j,1)==1)
%是?计数器++
p_cnt=p_cnt+1;
end
end

%计算TPR FPR
tpr(i)=p_cnt/10; %(10)是表示样本总体中的真正例个数总数为10
fpr(i)=(i-p_cnt)/10; %这里的10则是样本总体中的真反例个数总数
end

%计算完成之后需要做的事情就是……画点,连线
plot(fpr,tpr,'*b-');
xlabel('FPR');
ylabel('TPF');
title('ROC Curve');
text(fpr+0.02,tpr+0.02,num2str(samples(:,2)));

参考文献:

【1】dzl_ML.机器学习之分类器性能指标之ROC曲线、AUC值.博客园,https://www.cnblogs.com/dlml/p/4403482.html.20150408,20181105.

【2】Dengchao.博客园,ROC曲线.https://www.cnblogs.com/cdeng/p/3471527.html.20131212,20181105.

编程小号
上一篇 2025-03-19 11:17
下一篇 2025-02-08 11:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/128412.html