社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

一步一步理解机器学习的ROC曲线

Python开发 • 2 年前 • 343 次点击  
👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇

      

你好,我是zhenguo

ROC曲线是评估机器学习模型分类能力最常用的一条曲线,那么你知道:

  • ROC曲线x,y轴各代表什么含义?
  • ROC曲线上的一个点代表什么含义?

这两个问题在面试中也常会被问道,不妨抽几分钟时间理解我下面的这篇小总结。

二分类混淆矩阵

下面是二分类的混淆矩阵,这个不难理解,P或N代表结果,T或F代表预测对与否:

基于二分类混淆矩阵,我们再来探讨关于ROC曲线上面提出的两个问题。

ROC曲线x,y轴各代表什么含义?

x轴是FPR,y轴是TPR,如下图所示:

其中:

x轴的FPR,即假阳率:

想象为:在所有的恶性肿瘤中,被预测成良性的比例,显然我们希望这个比例越小越好

y轴的TPR就是Recall值,即真阳率:

想象为:在所有良性肿瘤中,被预测为良性的比例,显然我们希望这个比例越大越好

ROC曲线上的四个特殊点

对于二分类,要么为0,要么为1,那么我们可以无脑的预测所有样本为0. 此时,不管是FP,还是TP都为0,因为我们没有预测哪怕一个样本为P,即为1.

故,我们得到一个特殊点(FPR=0, TPR=0),即(0, 0):

这个点虽特殊,但却是任何一条ROC曲线都会包括的!

同样的,如果我们无脑的预测所有样本为1,此时不管是FN,还是TN都为0,所以我们又得到一个特殊点(FPR=1, TPR=1),即(1,1):

同样,此点虽特殊,但却是任何一条ROC曲线都会包括的!

还有2个特殊点,分别对应全部预测对,或全部预测错!如果运气爆棚,全部猜对,此时就是没有一个预测错的,自然:(FPR=0, TPR=1);如果运气糟糕透顶,全部预测错误,自然:(FPR=1, TPR=0)

此两点虽特殊,但却未必一定包括在ROC曲线中。

ROC曲线上的点到底代表什么含义?

在二分类(0,1)的模型中,一般我们最后的输出是一个概率值,表示结果是1的概率。

那么我们最后怎么决定输入的x是属于0或1呢?

我们需要一个阈值,超过这个阈值则归类为1,低于这个阈值就归类为0。

所以,不同的阈值会导致分类的结果不同,也就是混淆矩阵不一样了,FPR和TPR也就不一样了。

所以当阈值从0开始慢慢移动到1的过程,就会形成很多对(FPR, TPR)的值,将它们画在坐标系上,就是所谓的ROC曲线。

其中阈值为0时,即对应:无脑的预测所有样本为1;当阈值为1时,即对应:无脑的预测所有样本为0。也就是对应的上节提到一定会出现的2个特殊点。

最后如果两种模型得到中间点如下图所示,那么绿色对应模型分类能力好于黄色对应模型:

最后一句话:ROC是用来表征分类器分类能力的曲线!


-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击👆卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/147116
 
343 次点击