機器學習--分類

陽性(Positive)和陰性(Negative)

  • 陽性(Positive) = 正類:通常指的是我們關注的類別或事件;
  • 陰性(Negative) = 負類: 指的是與陽性相反的類別或事件。

如果對貓類別感興趣,那么貓就是正類,而其他事物(例如狗,牛,人類)都是負類。

如果目標是檢測/識別行人,那么行人就是正類,而其余的則是負類。

陽性和陰性完全是一個相對的概念,取決于任務中關注的對象。

混淆矩陣(Confusion Matrix)

混淆矩陣 = 可能性矩陣 = 錯誤矩陣,它是一種用于評估機器學習分類模型表現的工具,它將模型的預測結果分為四類,以預測垃圾郵件為例子:
在這里插入圖片描述

真陽性(True Positive, TP):實際為陽性,預測也為陽性。垃圾郵件,模型分類為垃圾郵件
真陰性(True Negative, TN):實際為陰性,預測也為陰性。普通郵件,模型分類為普通郵件
假陽性(False Positive, FP) = 第一類錯誤(Type I Error) = 誤報 :實際為陰性,預測為陽性。普通郵件,模型分類為垃圾郵件。
假陰性(False Negative, FN) = 第二類錯誤(Type II Error) = 漏報:實際為陽性,預測為陰性。垃圾郵件,模型分類為普通郵件

閾值 Threshold

通過設置閾值,我們可以直接指示模型以何種置信度(Confident Level)來區分正類和負類

假設有一個用于垃圾郵件檢測的邏輯回歸模型,該模型預測一個介于 0 到 1 之間的值,表示給定電子郵件是垃圾郵件的概率。預測結果為 0.50 表示電子郵件為垃圾郵件的可能性為 50%,預測為 0.75 表示電子郵件為垃圾郵件的可能性為 75%,依此類推。

您想在電子郵件應用中部署此模型,以將垃圾郵件過濾到單獨的郵件文件夾中。不過,為此,您需要轉換模型的原始數值輸出(例如 0.75)分為“垃圾郵件”或“非垃圾郵件”這兩類。

如需進行此轉換,您需要選擇一個閾值概率,稱為分類閾值(Classification Threshold)。然后,概率高于閾值的樣本會被分配到正類別(即要測試的類,此處為 spam)。概率較低的樣本會被分配到負類別(即備選類別,此處為 not spam)。

雖然 0.5 看起來像是一個直觀的閾值,但如果一種錯誤分類的代價高于另一種類型,例如將非常重要的正常郵件錯誤歸類為垃圾郵件(這就是后面會提到的假陽性/第一類錯誤/誤報 ),應顯著提高閾值避免誤判。

先給結論

  • 降低閾值,會提高真正例、假正例(誤報),降低真負例、假負例(漏報);
  • 提高閾值,會提高真負例、假負例(漏報),降低真正例、假正例(誤報)
  • 原因顯而易見,閾值更高,模型需要更高的信心才會歸類為正例,因此不管實際正負,模型預測為正的樣本都會變少,而結果是二元化,不預測為正就會預測為負,因此模型預測為負的樣本都會變多。

舉個例子,假設在數據集中,實際正例和實際負例分別為 50,合計 100
在這里插入圖片描述
在這里插入圖片描述

當閾值設為 0 時,代表著指示模型,將可能性大于 0 的例子歸類為正例,實質就是將所有例子歸類為正例
這樣做的優點是能找出所有正例,但相對的,會引入很多誤報。
以垃圾郵件為例,即雖然能準確找到所有垃圾郵件,但也會把所有普通郵件都當成垃圾郵件誤報。
在這里插入圖片描述
在這里插入圖片描述

當閾值設為 0.53 時,代表著指示模型,將可能性大于 0.53 的例子歸類為正例
這樣做,我們可以極大減少誤報,但相應地也會引入一些漏報。

以垃圾郵件為例,雖然此時有 8 封垃圾郵件沒有被正確分類,但至少,有 47 封普通郵件被正確分類,顯然,在郵件分類中,我們多看幾封垃圾郵件,也不愿意遺漏任何一封普通郵件,因此可以說,0.53 的閾值比 0 的閾值更合理。

在這里插入圖片描述
在這里插入圖片描述

當閾值設為 0.68 時,代表著指示模型,將可能性大于 0.68 的例子歸類為正例
這樣做,我們可以將誤報完全消除,但相應地引入了大量的漏報。

以垃圾郵件為例,雖然此時所有普通郵件都沒有被誤傷(FP = 0),但相應的,漏網之魚垃圾郵件大大增加到 22。

在做深度學習預測分類時,有些任務絕對不能出現漏報,為此就算帶來了很多誤報,也可以接受;有些任務,可以容忍出現一些漏報,只要將漏報和誤報控制在一個較低的水平就可以。

  • 癌癥篩查:漏診癌癥(FN)可能導致患者錯過最佳治療時機,危及生命。此時采取的策略應是召回率優先(將閾值降低),即使將許多良性腫瘤誤判為惡性(FP),也需確保盡可能檢出所有癌癥病例。
  • 電商商品推薦:??誤推不相關商品(FP)降低用戶體驗;漏推潛在喜歡商品(FN)損失部分轉化率。此時采取的策略應是平衡精確率和召回率,即將閾值調整到合理地步,類似上面的 0.52 。

數據集不平衡

作為訓練模型的一部分,我們希望提供給模型的數據集中,每個類別包含的實際個例數,應當大致相當。如果實際正例的總數與實際負例的總數不接近,則表示數據集不平衡。以預測垃圾郵件為例,數據集中可能數千條普通郵件,而垃圾郵件只有幾例。

評價模型的指標

真正例、假正例和假負例是用于計算評估模型的幾個實用指標。哪些評估指標最有意義,取決于具體模型和具體任務、不同錯誤分類的代價,以及數據集是平衡的還是不平衡的。

本部分中的所有指標均基于單個固定閾值計算得出,并且會隨閾值的變化而變化。很多時候,用戶會調整閾值以優化其中某個指標。

在這里插入圖片描述

  • 準確率(Accuracy):準確率用于衡量一個分類模型的效果。它表示模型預測對的次數占總預測次數的百分比。

    • 由于精度包含混淆矩陣中的所有四種結果(TP、FP、TN、FN),因此,在執行通用或未指定任務的通用或未指定模型、數據集平衡、兩個類別中的示例數量相近的情況下,精度可以用作衡量模型質量的粗略指標。
    • 例如,模型測試了 100 張圖片,其中有 90 張預測正確(TP + TN = 90),那么準確率就是 90%。
    • 對于嚴重不均衡的數據集(例如普通郵件占比非常低為1%,垃圾郵件占比為 90%),如果我們將閾值調到最高,模型 100% 都預測為負類(普通郵件),則準確率得分為 99%。盡管得分很高,這個模型實質毫無用處
      在這里插入圖片描述
  • 精確率(Precision):所有被預測為正類的樣本中,實際為正類的比例。
    在這里插入圖片描述

  • 召回率(Recall) = 靈敏度(Sensitivity) = 真正例率(TPR):所有實際為正類的樣本中,被預測為正類的比例,衡量模型正確識別正類的能力。召回率。

    • 在實際正例數量非常少的不均衡數據集中,召回率作為指標的意義不大。
      在這里插入圖片描述
  • 準確率會在一個合適的閾值達到最高;但精確率和召回率通常呈反函數關系,其中一個提高會反過另一個,無法同時提高二者。

  • F1 Score :是精確率和召回率的調和平均數(一種平均值)。該指標在精確率和召回率的重要性之間進行了平衡,對于類別不平衡的數據集,該指標優于準確率。更廣泛地說,當精確率和召回率的值接近時,F1 也會接近它們的值。當精確率和召回率相差很大時,F1 將與較差的指標相似。

在這里插入圖片描述

  • 假正例率(False Positive Rate, FPR) = 誤報概率 :所有實際為負類的樣本中,(錯誤地)被預測為正例的比例。

在這里插入圖片描述

  • 特異性(Specificity):所有實際為負類的樣本中,(正確地)被預測為負類的比例,衡量模型正確識別負類的能力。特異性 = 真正負類率,
    在這里插入圖片描述

例題:構建一個二元分類器,用于檢查昆蟲捕獲器的照片,以確定是否存在危險的入侵物種。在該系統中,誤報(假正例)很容易處理:昆蟲學家發現照片被錯誤分類,并將其標記為誤報即可。假設準確率水平在可接受的范圍內,此模型應該針對哪個指標進行優化?

誤報 (FP) 的成本較低,而假負例的成本非常高,因此,最大限度地提高召回率(即檢測概率)是明智之舉。

ROC 曲線(ROC, Receiver Operating Characteristic Curve)

上一部分介紹了一組模型指標,這些指標均以固定的閾值來計算,一旦更換閾值,每個指標都會變化。

如果想評估所有可能的閾值下模型的表現,則需要 ROC、AUC。

在這里插入圖片描述
ROC 曲線是模型在所有閾值上的表現的可視化表示。

ROC 曲線的繪制步驟:

  1. 將 0-1 之間的閾值按照固定間隔分類,例如十等分。
  2. 對于每個閾值,計算對應的 TPR 和 FPR。
  3. 繪制 ROC 曲線:將所有閾值對應的 TPR 和 FPR 繪制在圖上,FPR 為 x 軸,TPR 為 y 軸。
  4. 計算 AUC:ROC 曲線下的面積(AUC)表示模型的整體性能。AUC 值越高,模型的分類性能越好。

舉個例子,假設有一個醫療檢測模型,用于判斷患者是否患有某種疾病(正樣本)或沒有疾病(負樣本)。我們將繪制 ROC 曲線來評估模型性能。

  1. 收集預測概率:預測結果可能是每個患者的概率值,比如 [0.1, 0.4, 0.35, 0.8]。
  2. 選擇不同閾值:選擇閾值 0.2, 0.4, 0.6, 0.8 等。
  3. 計算 TPR 和 FPR:對于閾值 0.2,將所有預測概率大于等于 0.2 的樣本標記為正類。計算 TPR 和 FPR。
  4. 重復上述步驟,計算其他閾值下的 TPR 和 FPR。
  5. 繪制 ROC 曲線:在圖中,x 軸是 FPR,y 軸是 TPR,繪制 ROC 曲線。
  6. 計算 AUC:計算 ROC 曲線下的面積。AUC 越接近 1,模型性能越好。

曲線下方面積 (Area under the curve,AUC)

曲線下面積的數學意義是,代表模型在隨機選擇一個正例和一個負例時,將正例的排序高于負例的概率,表示模型在所有可能的閾值下的總體表現。

以垃圾郵件為例子,AUC 為 1.0 的垃圾郵件分類器始終會給隨機選取的垃圾郵件賦予比隨機選取的正常郵件更高的垃圾郵件概率。

更為人話的說法就是,AUC 越高,表示模型在打分階段更能準確地區分正例和負例:它通常會給正例更高的得分,給負例更低的得分,從而具備更強的區分能力。

AUC反映了二分類模型對正負樣本的區分能力,取值范圍從 0 到 1:

  • AUC = 1:模型能夠完美地區分所有正樣本和負樣本。
  • AUC = 0.5:模型的性能相當于隨機猜測,沒有實際區分能力。
  • AUC < 0.5:模型的預測性能差于隨機猜測,通常需要重新訓練或調整模型。

在這里插入圖片描述

完美模型的 ROC 和 AUC,由于在任何閾值下均不存在誤報和漏報,且 TP、TN 均為 1,因此 TPR、FPR 均為恒定常數 1。

隨著閾值從1逐步減小到0(或從高到低),模型會“更寬松”地判為正類,導致:

  • TPR 上升(找到了更多正類)
  • FPR 也上升(錯判的負類也變多)

標注(Annotation)

標注就是給數據打標簽的過程。在機器學習中,標注數據是為了讓模型能夠學習如何將輸入數據映射到正確的輸出。標注的過程通常包括以下幾個步驟:

  • 選擇數據:選擇需要標注的數據,例如圖片、文本或視頻。
  • 添加標簽:為每個數據樣本添加標簽。例如,我們有一組圖片,我們會給每張圖片加上標簽,標明這張圖片是“狗”還是“貓”。
  • 檢查和驗證:確保標注的準確性,以便模型可以學習到正確的信息。

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

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

相關文章

三星MZQL2960HCJR-00BAL高性能固態硬盤控制器SSD云計算和高端存儲專用 電子元器件解析

MZQL2960HCJR-00BAL 電子元器件解析 1. 基本類型與功能 MZQL2960HCJR-00BAL 是 三星&#xff08;Samsung&#xff09; 推出的一款 企業級NVMe SSD主控芯片&#xff0c;屬于 高性能固態硬盤控制器&#xff0c;專為 數據中心、云計算和高端存儲 設計。 關鍵特性&#xff1a; 接…

Blender——建構、粒子、燈光、動畫

Blender是一款開源的三維建模和動畫軟件&#xff0c;可用于創建3D模型、動畫、渲染圖像和視頻&#xff0c;還支持雕刻、紋理繪制、粒子系統等功能。 建構篇&#xff1a; 基本操作&#xff1a; 視角的控制&#xff1a; 控制觀察視角: 鼠標中鍵 平移視圖: Shift鼠標中鍵 縮放視…

節日快樂啊

<section data-role"paragraph" class"_135editor"> <p> <br/> </p> </section> <p> 瑪哈特2025中國國際金屬成形展覽會邀請函 </p><style>* { margin: 0; …

PHP和Node.js哪個更爽?

先說結論&#xff0c;rust完勝。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最開始在蘇寧的時候寫了幾年php&#xff0c;當時覺得php真的是世界上最好的語言&#xff0c;因為當初活在舒適圈里&#xff0c;不愿意跳出來&#xff0c;就好比當初活在…

LeetCode - 387. 字符串中的第一個唯一字符

題目 387. 字符串中的第一個唯一字符 - 力扣&#xff08;LeetCode&#xff09; 思路 用哈希表統計每個字符出現的次數 創建一個 unordered_map<char, int>&#xff0c;遍歷字符串&#xff0c;把每個字符出現的次數存進去。 再遍歷字符串&#xff0c;找到第一個只出現…

python從環境變量和配置文件中獲取配置參數

前言 從環境變量和配置文件中獲取配置參數&#xff0c;相關庫&#xff1a; python-dotenv&#xff1a;第三方庫&#xff0c;需要使用pip安裝configparser&#xff1a;標準庫 代碼 test.ini [mysql] host "192.168.0.10" port 3306 user "root" pas…

HarmonyOS5 運動健康app(一):健康飲食(附代碼)

一、核心數據模型設計 代碼通過兩個接口構建了飲食管理的基礎數據結構&#xff1a; interface footItem {name: string; // 營養名稱&#xff08;蛋白質/碳水/脂肪&#xff09;weight: number; // 重量&#xff08;克&#xff09; }interface DietItem {name: string; // 食物…

MQ選型及RocketMQ架構總覽

一、什么是MQ MQ&#xff08;MessageQueue&#xff09; Message(消息)&#xff1a;消息是在不同進程之間傳遞的數據&#xff0c;這些進程可以在同一臺機器上&#xff0c;也可以在不同的機器上。 Queue&#xff08;隊列&#xff09;&#xff1a;隊列原意是指一種具有FIFO&#…

python與java的區別

java老程序員來學習python了&#xff0c;記錄一下兩種類型語言的區別&#xff1a; Python與Java變量類型對比 python里面定義變量不需要指定變量的數據類型&#xff0c;并且是可以修改成其他類型java里面定義變量要指定變量的數據類型&#xff0c;指定以后不可以修改成其他數據…

固件簽名技術深度解析:HSM模塊如何守護設備安全,CAS系統如何賦能產業升級

引言&#xff1a;數字時代的固件安全危機 在萬物互聯的今天&#xff0c;全球設備固件安全事件頻發&#xff1a;某汽車品牌因固件漏洞導致百萬車輛被遠程控制&#xff0c;某醫療設備廠商因固件篡改引發數據泄露&#xff0c;某工業控制系統因非法固件升級造成生產線癱瘓……這些…

修改Typora快捷鍵

代碼 的默認快捷鍵為&#xff1a; 這對我來說不太友好&#xff0c;太難按了&#xff0c;而且我電腦右邊的Ctrl鍵壞了&#xff0c;這意味著我只能一個左手去按這3個鍵的組合&#xff0c;這更是難上加難了&#xff0c;于是想到改一下快捷鍵&#xff0c;代碼塊 是Ctrl Shift K&…

Bellman-Ford算法(詳解版)

Bellman-Ford算法 Bellman-Ford算法是用來解決,對于有負權的圖的**單源最短路徑**.因為DJ算法不可以解決對于負權的圖,所以使用這個算法來求解.但是依舊不可以有負回路.因為負回路就沒有存在單源最短路徑這一說. BF的另一個重要的用途就是用來檢測**是不是存在負回路** 思路…

《HarmonyOSNext的ForEach數組渲染の核心玩法與避坑指南》

《HarmonyOSNext教學寶典&#xff1a;ForEach數組渲染全攻略與性能優化》 #HarmonyOS開發 #ArkTS實戰 #組件解析 &#x1f3af; ForEach組件完全指南&#xff1a;數組循環渲染核心機制 舉個栗子&#x1f330;&#xff1a; ForEach相當于智能印刷機&#xff0c;將數組元素自動轉…

單片機 - STM32F407 ADC 模式詳解:單次轉換、連續轉換、掃描模式、非掃描模式

STM32F407 ADC 模式詳解&#xff1a;單次轉換、連續轉換、掃描模式、非掃描模式 前言 在 STM32F407 中&#xff0c;ADC&#xff08;模數轉換器&#xff09;模塊常用于采集模擬信號&#xff0c;比如讀取光敏電阻、電壓、電流、溫度傳感器等。STM32 的 ADC 模式較多&#xff0c…

開源模型應用落地-工具使用篇-從零開始搭建Qdrant Web UI-可視化管理工具-Windows(十)

一、前言 Qdrant 是一個高性能的向量搜索引擎&#xff0c;廣泛應用于相似性搜索、推薦系統和大規模數據檢索等場景。雖然其原生 API 提供了強大的功能&#xff0c;但對于開發者和運維人員來說&#xff0c;缺乏直觀的可視化界面常常增加了使用門檻。為了解決這一問題&#xff0c…

高頻交易技術:訂單簿分析與低延遲架構——從Level 2數據挖掘到FPGA硬件加速的全鏈路解決方案

高頻交易技術&#xff1a;訂單簿分析與低延遲架構——從Level 2數據挖掘到FPGA硬件加速的全鏈路解決方案 一、引言&#xff1a;高頻交易的技術本質 1.1 速度即利潤的微觀戰場 數據揭示&#xff1a;據NYSE實測&#xff0c;每降低1微秒延遲可獲得年化$700-1500萬套利窗口&#…

基于生成對抗網絡(GAN)的圖像生成與編輯:原理、應用與實踐

前言 生成對抗網絡&#xff08;GAN&#xff09;是近年來深度學習領域中最具影響力的技術之一。自2014年由Ian Goodfellow等人首次提出以來&#xff0c;GAN已經在圖像生成、圖像編輯、風格轉換等多個領域取得了令人矚目的成果。GAN的核心思想是通過生成器&#xff08;Generator&…

pytorch基本運算-梯度運算:requires_grad_(True)和backward()

引言 前序學習進程中&#xff0c;已經對pytorch基本運算中的求導進行了基礎討論&#xff0c;相關文章鏈接為&#xff1a; 導數運算pytorch基本運算-導數和f-string-CSDN博客 實際上&#xff0c;求導是微分的進一步計算&#xff0c;要想求導的前一步其實是計算微分&#xff1…

idea64.exe.vmoptions配置

這個idea64.exe.vmoptions文件是用于配置 IntelliJ IDEA&#xff08;64位版本&#xff09;運行時的 Java 虛擬機&#xff08;JVM&#xff09;參數。這些參數直接影響到 IDEA 的性能、內存使用、調試能力和行為。 下面是對文件中每一行配置的詳細解讀&#xff1a; -Xms2048m 作…

齊次變換矩陣相乘的復合變換:左乘與右乘的深度解析

在三維幾何變換中,齊次變換矩陣相乘是實現復雜變換的核心方法。本文將通過一個包含四個變換步驟的完整示例,深入探討齊次變換矩陣左乘和右乘的區別,并結合 Python sympy 庫的代碼實現,詳細闡述變換過程和結果差異。 二維齊次坐標的旋轉變換 在二維齊次坐標系中,一個點可以…