機器學習-ROC曲線?? 和 ??AUC指標

1. 什么是ROC曲線???

ROC(Receiver Operating Characteristic,受試者工作特征曲線)是用來評估??分類模型性能??的一種方法,特別是針對??二分類問題??(比如“患病”或“健康”)。

??核心思想??

  • ROC曲線通過改變??分類閾值??(即模型預測為“正類”的概率界限),觀察模型的??真正例率(TPR)??和??假正例率(FPR)??的變化。
  • ??TPR(True Positive Rate)?? = 真正例 / 所有實際正例
    (正確識別出病人的比例)
  • ??FPR(False Positive Rate)?? = 假正例 / 所有實際負例
    (把健康人誤診為病人的比例)

??例子:醫生診斷病人??

假設我們有10個病人,其中??4個真的患病(正類)??,??6個健康(負類)??。醫生(模型)對每個病人給出一個??患病概率??(0~1之間的值)。

病人實際狀態模型預測概率
1患病0.9
2患病0.8
3患病0.7
4患病0.6
5健康0.55
6健康0.54
7健康0.53
8健康0.52
9健康0.51
10健康0.5

??問題??:醫生應該設置一個閾值(比如0.6),把概率≥0.6的病人判定為“患病”,否則“健康”。但這個閾值選多少最好呢?ROC曲線就幫我們分析不同閾值下的表現。


??2. 如何畫ROC曲線???

我們調整??閾值??,計算不同閾值下的??TPR和FPR??,然后畫出曲線:

閾值預測結果(≥閾值=患病)TPR(真正例率)FPR(假正例率)
0.9[1]1/4 = 0.250/6 = 0
0.8[1,2]2/4 = 0.50/6 = 0
0.7[1,2,3]3/4 = 0.750/6 = 0
0.6[1,2,3,4]4/4 = 1.00/6 = 0
0.55[1,2,3,4,5]4/4 = 1.01/6 ≈ 0.167
0.54[1,2,3,4,5,6]4/4 = 1.02/6 ≈ 0.333
............

??ROC曲線??就是把所有(FPR, TPR)點連起來:

  • ??橫軸(X)??:FPR(假正例率)
  • ??縱軸(Y)??:TPR(真正例率)

??理想情況??:曲線越靠近左上角(TPR高,FPR低),模型越好。


??3. 什么是AUC???

AUC(Area Under Curve,曲線下面積)是ROC曲線下的面積,范圍在??0~1??:

  • ??AUC=1??:完美模型(所有病人都被正確識別,沒有誤診)
  • ??AUC=0.5??:隨機猜測(和拋硬幣一樣,沒有區分能力)
  • ??AUC=0??:完全反了(把病人當成健康,健康當成病人)

??例子??:

  • 如果AUC=0.9,說明模型很好。
  • 如果AUC=0.6,說明模型一般。
  • 如果AUC=0.5,說明模型和隨機猜測差不多。

??4. Python代碼實現??

我們用sklearn計算ROC曲線和AUC:

import numpy as np from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 實際標簽(1=患病,0=健康) y_true = np.array([1, 1, 1, 1, 0, 0, 0, 0, 0, 0]) # 模型預測概率 y_scores = np.array([0.9, 0.8, 0.7, 0.6, 0.55, 0.54, 0.53, 0.52, 0.51, 0.5]) # 計算ROC曲線 fpr, tpr, thresholds = roc_curve(y_true, y_scores) # 計算AUC roc_auc = auc(fpr, tpr) # 畫圖 plt.figure() plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (AUC = {roc_auc:.2f})') plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') # 隨機猜測的線 plt.xlabel('False Positive Rate (FPR)') plt.ylabel('True Positive Rate (TPR)') plt.title('Receiver Operating Characteristic (ROC) Curve') plt.legend(loc="lower right") plt.show()
 

??輸出結果??:

  • 你會看到一條ROC曲線,AUC值會顯示在圖上(比如AUC=1.0,因為這個例子數據簡單)。

??5. 總結??

概念解釋
??ROC曲線??不同閾值下的TPR vs FPR曲線
??AUC??ROC曲線下的面積,衡量模型區分能力
??理想情況??AUC接近1,曲線靠近左上角
??隨機猜測??AUC=0.5,曲線是45度直線

??適用場景??:

  • 醫學診斷(患病/健康)
  • 垃圾郵件檢測(垃圾/正常)
  • 金融風控(欺詐/正常)

希望這個例子能讓你輕松理解ROC和AUC!如果有疑問,歡迎繼續討論 😊

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82218.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82218.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82218.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker容器創建Redis主從集群

利用虛擬機中的三個Docker容器創建主從集群,容器信息: 容器名角色IP映射端口r1master192.168.150.1017001r2slave192.168.150.1017002r3slave192.168.150.1017003 啟動多個redis實例 新建一個docker-compose文件來構建主從集群: 文件內容&…

手寫ArrayList和LinkedList

項目倉庫:https://gitee.com/bossDuy/hand-tear-collection-series 基于b站up生生大佬:https://www.bilibili.com/video/BV1Kp5tzGEc5/?spm_id_from333.788.videopod.sections&vd_source4cda4baec795c32b16ddd661bb9ce865 LinkedList package com…

每日c/c++題 備戰藍橋杯(Cantor 表)

Cantor 表的探究與實現 在數學中,有理數的可枚舉性是一個令人驚嘆的結論。今天,就讓我們一起深入探討這個經典問題,并分享一段精心編寫的代碼,揭開這一數學奧秘的神秘面紗。 問題背景 在 19 世紀末,偉大的數學家康托…

解決idea與springboot版本問題

遇到以下問題: 1、springboot3.2.0與jdk1.8 提示這個包org.springframework.web.bind.annotation不存在,但是pom已經引入了spring-boot-starter-web 2、Error:Cannot determine path to tools.jar library for 17 (D:/jdk17) 3、Error:(3, 28) java: …

Notepad++找回自動暫存的文件

場景: 當你沒有保存就退出Notepad,下次進來Notepad會自動把你上次編輯的內容顯示出來,以便你繼續編輯。除非你手動關掉當前頁面,這樣Notepad就會刪除掉自動保存的內容。 問題: Notepad會將自動保存的文件地址,打開Note…

yolov12畢設前置知識準備 1

1 什么是目標檢測呢? 目標檢測(Object Detection)主要用于識別圖像或視頻中特定類型物體的位置,并標注其類別。 簡單來說,就是讓計算機像人類一樣 “看懂” 圖像內容,不僅能識別出物體(如人、…

unix/linux source 命令,其內部結構機制

要理解 source (或 .) 命令的內部結構機制,我們需要戴上“操作系統”和“解釋器設計”的眼鏡,深入到 Shell 如何管理其狀態以及如何執行命令的層面。 雖然我們無法直接看到 Shell 內部的 C 代碼(除非我們去閱讀 Bash 或 Zsh 的源碼),但我們可以基于其行為和操作系統的原理…

計算機網絡學習20250528

地址解析協議ARP 實現IP地址和Mac地址的轉換 ARP工作原理&#xff1a; 每臺主機或路由器都有一個ARP表&#xff0c;表項&#xff1a;<IP地址&#xff0c;Mac地址&#xff0c;TTL>&#xff08;TTL一般為20分鐘&#xff09; 主機產生ARP查詢分組&#xff0c;包含源目的IP地…

【Rust】Rust獲取命令行參數以及IO操作

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

微服務中引入公共攔截器

本文使用的微服務版本為springcloudAlbaba :2021.0.4.0 微服務工程&#xff0c;一般公共的東西都放入一個工程&#xff0c;別的微服務都會引入這個工程&#xff0c;比如common-service,那么就可以在這個工程編寫一個攔截器&#xff1a;&#xff0c;比如&#xff1a; public cla…

Linux SLES 系統的/var/log/下的常見文件及其作用

在 SUSE Linux Enterprise Server&#xff08;SLES&#xff09; 系統中&#xff0c;/var/log/ 目錄是系統日志的集中地&#xff0c;存儲了各種服務、內核、系統消息的日志。以下是一些在 /var/log/ 下常見的日志文件及其功能&#xff1a; &#x1f4c2; 常見日志文件及功能 文…

oracle goldengate同步SQL server到SQL server的實時數據同步

參考文檔 https://docs.oracle.com/en/middleware/goldengate/core/19.1/oggmp/oracle-goldengate-classic-sql-server.html#GUID-948C5BEE-E7A0-4CE2-BE09-F83145677D18 https://docs.oracle.com/en/middleware/goldengate/core/21.3/ggcab/other-programs-and-settings-sql-…

語音轉文字工具

平時工作和學習比較忙&#xff0c;可能沒時間聽講座&#xff0c;只能看回放&#xff0c;回訪也很長&#xff0c;這時&#xff0c;我們可以借助語言轉文字&#xff0c;通過閱讀文字快速了解講座的重點&#xff0c;今天給大家分享一個本人經常用的語言轉文字工具&#xff0c;改工…

硬件實時時鐘(RTC)

硬件實時時鐘&#xff08;RTC&#xff09;詳解 硬件實時時鐘&#xff08;Real-Time Clock&#xff0c;RTC&#xff09;是計算機主板上的一個獨立計時芯片&#xff0c;用于在系統關機后持續記錄時間。它不依賴操作系統&#xff0c;由紐扣電池&#xff08;如CR2032&#xff09;供…

pycharm debug的時候無法debug到指定的位置就停住不動了

報錯大致是這樣的&#xff0c;但是直接run沒有問題&#xff0c;debug就停住不動了 Traceback (most recent call last): File "/home/mapengsen/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_comm.py", line 467, in start_client s.connect((host, port)) Timeou…

Python6.1打卡(day33)

DAY 33 MLP神經網絡的訓練 知識點回顧&#xff1a; 1.PyTorch和cuda的安裝 2.查看顯卡信息的命令行命令&#xff08;cmd中使用&#xff09; 3.cuda的檢查 4.簡單神經網絡的流程 1.數據預處理&#xff08;歸一化、轉換成張量&#xff09; 2.模型的定義 …

NodeJS全棧開發面試題講解——P11消息隊列(MQ)

? 11.1 為什么要用消息隊列&#xff1f;在哪些場景下最適合&#xff1f; ? 作用&#xff1a; 削峰填谷&#xff1a;緩解高并發壓力&#xff0c;異步處理任務&#xff08;如秒殺下單 → MQ → 異步扣庫存&#xff09; 解耦服務&#xff1a;上下游解耦&#xff08;如下單服務…

mysql執行sql語句報錯事務鎖住

報錯情況 1205 - Lock wait timeout exceeded; try restarting transaction先找出長時間運行的事務 SELECT * FROM information_schema.INNODB_TRX ORDER BY trx_started ASC;終止長時間運行的事務 KILL [PROCESS_ID];

C#集合循環刪除某些行

你想要在遍歷集合&#xff08;例如List&#xff09;的同時刪除某些元素時&#xff0c;直接在循環中刪除元素可能會導致問題&#xff0c;因為這可能會改變集合的大小和導致索引問題&#xff1b; 可以用for循環的倒序來刪除&#xff1b; 如果要刪除滿足特定條件的所有元素&…

裂縫儀在線監測裝置:工程安全領域的“實時守衛者”

在基礎設施運維領域&#xff0c;裂縫擴展是威脅建筑結構安全的核心隱患之一。傳統人工巡檢方式存在效率低、時效性差、數據主觀性強等局限&#xff0c;而裂縫儀在線監測裝置通過技術迭代&#xff0c;實現了對結構裂縫的自動化、持續性追蹤&#xff0c;為工程安全評估提供科學依…