首页 > 其他分享 >模型性能分析:ROC 分析和 AUC

模型性能分析:ROC 分析和 AUC

时间:2023-01-02 23:11:30浏览次数:53  
标签:分析 AUC 模型 ROC test model 阳性率

本文将介绍模型性能分析的两个方法:ROC & AUC。

ROC 分析和曲线下面积 (AUC) 是数据科学中广泛使用的工具,借鉴了信号处理,用于评估不同参数化下模型的质量,或比较两个或多个模型的性能。

传统的性能指标,如准确率和召回率,在很大程度上依赖于正样本的观察。因此,ROC 和 AUC 使用真阳性率和假阳性率来评估质量,同时考虑到正面和负面观察结果。

从分解问题到使用机器学习解决问题的过程有多个步骤。它涉及数据收集、清理和特征工程、构建模型,最后是,评估模型性能。

当您评估模型的质量时,通常会使用精度和召回率等指标,也分别称为数据挖掘领域的置信度和灵敏度。

这些指标将预测值与通常来自保留集的实际观察值进行比较,使用混淆矩阵进行可视化。

confusion matrix

让我们首先关注精度,也称为阳性预测值。使用混淆矩阵,您可以将 Precision 构建为所有真实阳性与所有预测阳性的比率。

Precision

召回率,也称为真阳性率,表示真阳性与观察到的和预测的所有阳性的比率。

Recall

使用混淆矩阵中的不同观察集来描述 PrecisionRecall,您可以开始了解这些指标如何提供模型性能的视图。

值得注意的是 Precision 和 Recall 只关注正例和预测,而不考虑任何负例。此外,他们不会将模型的性能与中值场景进行比较,中值场景只是随机猜测。

1. ROC 曲线

ROC 作为汇总工具,用于可视化 Precision 和 Recall 之间的权衡。ROC 分析使用 ROC 曲线来确定二进制信号的值有多少被噪声污染,即随机性。它为连续预测器提供了一系列操作点的灵敏度和特异性摘要。ROC 曲线是通过绘制 x 轴上的假阳性率与 y 轴上的真阳性率来获得的。

由于真阳性率是检测信号的概率,而假阳性率是误报的概率,因此 ROC 分析也广泛用于医学研究,以确定可靠地检测疾病或其他行为的阈值。

ROC

一个完美的模型将具有等于 1 的误报率和真阳性率,因此它将是 ROC 图左上角的单个操作点。而最差的可能模型将在 ROC 图的左下角有一个单一的操作点,其中误报率等于 1,真阳性率等于 0。

随机猜测模型有 50% 的机会正确预测结果,因此假阳性率将始终等于真阳性率。这就是为什么图中有一条对角线,代表检测信号与噪声的概率为 50/50。

2. AUC 面积

要全面分析 ROC 曲线并将模型的性能与其他几个模型进行比较,您实际上需要计算曲线下面积 (AUC),在文献中也称为 c 统计量。曲线下面积 (AUC) 的值介于 0 和 1 之间,因为曲线绘制在 1x1 网格上,并且与信号理论平行,它是信号可检测性的度量。

这是一个非常有用的统计数据,因为它可以让我们了解模型对真实观察结果和错误观察结果的排名有多好。它实际上是 Wilcoxon-Mann-Whitney 秩和检验的归一化版本,它检验零假设,其中两个有序测量样本是从单个分布 中抽取的。

要绘制 ROC 曲线并计算曲线下面积 (AUC),您决定使用 SckitLearn 的 RocCurveDisplay 方法并将多层感知器与随机森林模型进行比较,以尝试解决相同的分类任务。

import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, RocCurveDisplay

def plot_roc(model, test_features, test_targets):
    """
    Plotting the ROC curve for a given Model and the ROC curve for a Random Forests Models
    """

    # comparing the given model with a Random Forests model
    random_forests_model = RandomForestClassifier(random_state=42)
    random_forests_model.fit(train_features, train_targets)

    rfc_disp = RocCurveDisplay.from_estimator(random_forests_model, test_features, test_targets)
    model_disp = RocCurveDisplay.from_estimator(model, test_features, test_targets, ax=rfc_disp.ax_)
    model_disp.figure_.suptitle("ROC curve: Multilayer Perceptron vs Random Forests")

    plt.show()

# using perceptron model as input
plot_roc(ml_percetron_model, test_features, test_targets)

ROC&AUC


欢迎Star -> 学习目录


本文由mdnice多平台发布

标签:分析,AUC,模型,ROC,test,model,阳性率
From: https://www.cnblogs.com/swindler/p/17020815.html

相关文章

  • 分析.foreach和.map的区别
    在程序员编程的过程中经常会有遍历数组的需要,.foreach和.map都具有遍历的作用,那么他们的共同点和区别是什么呢?我们来分析一下.一、共同点1.都只能遍历数组。2.每次......
  • magento 数据结构分析
    1  首页启动——————————————————————————————————————————————————1QuerySETSQL_MODE=''1QuerySE......
  • 【数学建模入门】层次分析法
    层次分析法适用场景主要用于解决评价类问题(例如:选择哪种方案最好、哪位运动员或者员工表现最好)基本知识例题:假如有三个地方分别是苏杭、北戴河、桂林,我们现在要运用层......
  • 蓝桥真题——单词分析
    题目单词分析标签:字符串暴力2020省赛代码importosimportsys#请在此输入您的代码words=list(input())m=0m_word=''words.sort()foriinwords:......
  • 实时分析数据库 Druid,Mark 一下
    持之以恒,贵在坚持,每天进步一点点!前言Druid 则是一个分布式的支持实时分析的数据存储系统(DataStore)。Druid设计之初的想法就是为分析而生,它在处理数据的规模、数据处理的......
  • Spring Security 源码分析(四):Spring Social实现微信社交登录
    前言在上一章Spring-Security源码分析三-Spring-Social社交登录过程中,我们已经实现了使用​​SpringSocial​​​+​​Security​​的QQ社交登录。本章我们将实现微信的社......
  • linux led flash驱动分析
    led作为嵌入式设备中常见的器件,特别是在手机上,一般手机现在都会配置1-2led灯,用于camera补光和手电筒照明功能。led驱动是字符设备,数据流和操作比较简单。闪光灯的几种模......
  • (数学分析复习)含参量积分总结
    文章目录写在前面总结一下含参量正常积分、含参量反常积分、Euler积分,这部分内容主要为曲线积分曲面积分以及多重积分做铺垫。主要参考《数学分析(第四版)下册》(华东师范大......
  • detours内在原理分析
    Detours库类似于WTL的来历,是由GalenHunt andDougBrubacher自己开发出来,于99年7月发表在一篇名为《Detours:BinaryInterceptionofWin32Functions.》的论文中。基......
  • m基于MATLAB-GUI的GPS数据经纬度高度解析与kalman分析软件设计
    1.算法概述经度纬度和高度来自GPS信号的中的GPGGA的数据。所以提取这三个信息主要是对GPGGA中的数据进行整理。GPGGA的数据格式如下所示:GPGGA是GPS数据输出格式语句,意......