机器学习中的ROC曲线理解和实战

这篇具有很好参考价值的文章主要介绍了机器学习中的ROC曲线理解和实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是ROC曲线

1、ROC曲线,又可以称之为接受者操作特征曲线(Receiver Operating Characteristic Curve),

ROC曲线下的面积,称为AUC(Area Under Cureve),可以衡量评估二分类模型的分类好坏。

2、AUC是1乘以的方格中的一部分,起大小在0-1之间,AUC越大说明模型效果越好,

  • AUC=1,是完美的分类器,该模型至少存在一个阈值,可以将正负样本完美的划分开
  • 0.5<AUC<1,优于随机猜测,数值越大,分类效果越好
  • AUC=0.5,说明模型没有分类效果,即随机
  • AUC<0.5,比随机猜测要差,然而若方向预测,该模型可以优于随机猜测

二、ROC曲线如何绘制

1、ROC曲线由预测概率和阈值来共同决定

分类模型的输出结果中包含一个0到1的概率值,该概率代表着对应的样本被预测为某类别的可能性,通过阈值来进行划分,概率大于阈值的为正,概率小于阈值的负。

样本 预测概率 阈值(thresholds=0.9) 阈值(thresholds=0.5)
1 0.95
2 0.86
3 0.64
4 0.43

2、TPR和FPR

ROC曲线的横坐标为FPR,纵坐标为TPR,FPR是错误的预测为正的概率,TPR为正确的预测为正的概率(注意TPR+FTR不是固定等于1的

                                   FPR=负的预测为正的数量/原本为负的数量(FPR = FP/(TN+FP))

                                   TPR=正的预测为正的数量/原本为正的数量(召回率:TPR = TP/(TP+FN))

         备注:TN+FP为负样本总量;TP+FN为正样本总量。

                     FPR越小越好,TPR越大越好

                                 

三、ROC的曲线绘制步骤

1、将全部样本按概率递减排序

2、阈值从1至0变更,计算各阈值下对应的(FPR,TPR)数值对

3、将数值对绘制直角坐标系中

具体如下:

step1:将全部样本安装概率递减排序(概率是模型预测之后的概率)

样本ID 原始类型 预测概率
1 0.95
2 0.86
3 0.70
4 0.65
5 0.55
6 0.53
7 0.52
8 0.43
9 0.42
10 0.35

step2:阈值从1至0变更,计算各阈值下的对应的(FPR,TPR)数值对

1)阈值=1时

      FPR=负的预测为正的数量/原本为负的数量 = 0 / 5 = 0 (样本3、6、7、8、10)

      TPR=正的预测为正的数量/原本为正的数量 = 0 / 5 = 0  (样本1、2、4、5、9)

       此时得到一个点(0,0),即为ROC曲线的第一个点。

样本ID 原始类型 预测概率 当阈值=1 阈值=0.95 阈值=0.86 阈值=0.7
1 0.95
2 0.86
3 0.70
4 0.65
5 0.55
6 0.53
7 0.52
8 0.43
9 0.42
10 0.35

  2)阈值=0.95时

      FPR=负的预测为正的数量/原本为负的数量=0/5 = 0  (样本3、6、7、8、10)

      TPR=正的预测为正的数量/原本为正的数量=1(样本1)/5 = 0.2  (样本1、2、4、5、9)

       此时得到一个点(0,0.2),即为ROC曲线的第二个点。

后面依次类推,变化阈值,得到(FPR,TPR)

我们最后得到一些点(0,0)(0, 0.2)(0,0.4)(0.2,0.4)(0.2,0.6)(0.2,0.8)(0.4,0.8)(0.6,0.8)(0.8,0.8)(0.8,1.0)(1.0,1.0),根据这些点,我们画如下的ROC曲线了 ~

                 

              机器学习中的ROC曲线理解和实战

 四、sklearn 中的ROC

1、可能有些同学疑惑,上面这个阈值(thresholds)怎么来的。下面我们简单看下,

这里metrics 输入样本y和scores,scores你可以看成是预测概率了。然后返回的是 fpr, tpr, thresholds。

>>> import numpy as np
>>> from sklearn import metrics
>>> y = np.array([1, 1, 2, 2])
>>> scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)#pos_label=2 正类的标签
>>> fpr
array([0. , 0. , 0.5, 0.5, 1. ])
>>> tpr
array([0. , 0.5, 0.5, 1. , 1. ])
>>> thresholds
array([1.8 , 0.8 , 0.4 , 0.35, 0.1 ])

2、我们可以直接用 

sklearn.metrics.plot_roc_curve 进行绘制 ROC曲线

import matplotlib.pyplot as plt
from sklearn import svm
from sklearn import datasets, metrics, model_selection, svm
X, y = datasets.make_classification(random_state=0)
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)
clf = svm.SVC(random_state=0)
clf.fit(X_train, y_train)
metrics.plot_roc_curve(clf, X_test, y_test) 
plt.show()

机器学习中的ROC曲线理解和实战

说明下,一般我们的模型都会返回预测概率值的。 

以上就是ROC的介绍和使用,欢迎大家评论指正。谢谢!文章来源地址https://www.toymoban.com/news/detail-472702.html

到了这里,关于机器学习中的ROC曲线理解和实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】了解 AUC - ROC 曲线

            在机器学习中,性能测量是一项基本任务。因此,当涉及到分类问题时,我们可以依靠AUC - ROC曲线。当我们需要检查或可视化多类分类问题的性能时,我们使用AUC(曲线 下面积 )ROC( 接收器工作特性 )曲线。它是检查任何分类模型性能的最重要评估指标之一。

    2024年02月16日
    浏览(34)
  • 机器学习:关于P-R曲线和Roc曲线

    一:关于P-R曲线 :     1:1:何为P-R曲线:      P为precision即 精准率(查准率) ,R为recall即 召回率 ,所以P-R曲线是反映了准确率与召回率之间的关系。一般横坐标为recall,纵坐标为precision。P-R曲线      1.2:P-R曲线作用:      PR曲线常被用在信息提取领域,同时当我们的

    2024年02月13日
    浏览(30)
  • 机器学习技术:如何使用交叉验证和ROC曲线提高疾病预测的准确性和效率?

    随着机器学习的普及,评估模型的性能越来越重要。交叉验证和ROC曲线是两种常见的评估模型性能的方法。本文将介绍这两种方法的基本原理和应用场景,并结合实际案例和技术实践,讲解如何使用交叉验证和ROC曲线来提高机器学习模型的性能。此外,文章也将提供一些最佳

    2024年02月11日
    浏览(49)
  • 【超详细】机器学习sklearn之分类模型评估 混淆矩阵、ROC曲线、召回率与精度、F1分数

    机器学习之分类模型的评估 学习分类模型评估的方法: 1、混淆矩阵 2、分类结果汇总 3、ROC曲线 4、召回率与精度 5、F1分数 一、评估分类器性能的度量 1、真正(true positive, TP)或f++,对应的是被分类模型正确预测的正样本数。 2、假负(false negative, FN)或f±对应的是被分类模型错

    2023年04月08日
    浏览(78)
  • 【Python & 机器学习 基础】绘制 sigmoid 函数曲线 | exp:以e为底的指数函数(科普向)| 区块链 面试题:区块链技术中的“区块链浏览器”是什么?有什么作用?

      “谁都了解生存往往比命运还残酷,只是没人愿意认输,我们都在不断赶路,忘记了出路。”     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿   🌟[3] 2022年度博客之星人工智能领域

    2024年02月06日
    浏览(37)
  • 【机器学习300问】13、学习率曲线有什么作用?

            在之前的文章中我为大家详细介绍了学习率的概念以及学习率设置过大或者过小分别有什么坏处。如果您还未看相关内容,下面是跳转链接哦:         【机器学习300问】10、学习率设置过大或过小对训练有何影响?         本篇文章中,为大家介绍一个工具—

    2024年01月21日
    浏览(29)
  • 机器学习中的数学——学习曲线如何区别欠拟合与过拟合

    通过这篇博客,你将清晰的明白什么是 如何区别欠拟合与过拟合 。这个专栏名为白话机器学习中数学学习笔记,主要是用来分享一下我在 机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新一下 《 白话

    2023年04月19日
    浏览(38)
  • 机器学习:ROC与AUC(Python)

       

    2024年01月25日
    浏览(33)
  • 绘制ROC曲线及P-R曲线

    ROC曲线(Receiver Operating Characteristic Curve)以假正率(FPR)为X轴、真正率(TPR)为y轴。曲线越靠左上方说明模型性能越好,反之越差。ROC曲线下方的面积叫做AUC(曲线下面积),其值越大模型性能越好。P-R曲线(精确率-召回率曲线)以召回率(Recall)为X轴,精确率(Precision)为y轴,

    2023年04月15日
    浏览(34)
  • Python包sklearn画ROC曲线和PR曲线

    关于ROC和PR曲线的介绍请参考: 机器学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线 参考: Python下使用sklearn绘制ROC曲线(超详细) Python绘图|Python绘制ROC曲线和PR曲线

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包