機器學習備忘錄 | AUC值的含義與計算方法

2021-01-15 浮生偷閒

內容導讀

在機器學習領域, AUC 值經常用來評價一個二分類模型的訓練效果,對於許多機器學習或者數據挖掘的從業者或在校學生來說, AUC 值的概念也經常被提起,但由於大多數時候我們都是藉助一些軟體包來訓練機器學習模型,模型評價指標的計算往往被軟體包所封裝,因此我們常常會忽略了它們的具體意義,這在有些時候會讓我們對於手頭正在進行的任務感到困惑。筆者也曾遇到類似的問題,因此希望藉由本文來梳理下 AUC 值的意義與計算方法,通過實際的例子幫助讀者加深理解,同時給出了使用 scikit-learn 工具庫計算 AUC 值的方法,供各位參考。我們參看下維基百科上的定義:在信號檢測理論中,接收者操作特徵曲線( receiver operating characteristic curve ,或者叫 ROC 曲線)是一種坐標圖式的分析工具,用於 (1) 選擇最佳的信號偵測模型、捨棄次佳的模型。通常很多的機器學習工具都封裝了模型指標的計算,當然也包括 AUC 值。可以看出,使用 scikit-learn 工具提供的 roc_auc_score 函數計算 AUC 值相當簡單,只需要提供樣本的實際標籤和預測值這兩個變量即可,大大方便了我們的使用,真心感謝這些開源軟體的作者們!總的來說, AUC 值就是一個用來評價二分類模型優劣的常用指標, AUC 值越高通常表明模型的效果越好,在實際使用中我們可以藉助軟體包的相應函數進行快速計算。

引言

在機器學習領域,AUC值經常用來評價一個二分類模型的訓練效果,對於許多機器學習或者數據挖掘的從業者或在校學生來說,AUC值的概念也經常被提起,但由於大多數時候我們都是藉助一些軟體包來訓練機器學習模型,模型評價指標的計算往往被軟體包所封裝,因此我們常常會忽略了它們的具體意義,這在有些時候會讓我們對於手頭正在進行的任務感到困惑。筆者也曾遇到類似的問題,因此希望藉由本文來梳理下AUC值的意義與計算方法,通過實際的例子幫助讀者加深理解,同時給出了使用scikit-learn工具庫計算AUC值的方法,供各位參考。

定義

AUC的全稱是Area under the Curve of ROC,也就是ROC曲線下方的面積。這裡出現了另一個概念,就是ROC曲線。那麼ROC曲線是個什麼東西呢?我們參看下維基百科上的定義:在信號檢測理論中,接收者操作特徵曲線(receiver operating characteristic curve,或者叫ROC曲線)是一種坐標圖式的分析工具,用於 (1) 選擇最佳的信號偵測模型、捨棄次佳的模型。 (2) 在同一模型中設定最佳閾值。這個概念最早是由二戰中的電子工程師和雷達工程師發明的,用來偵測戰場上的敵軍載具。概括來說,可以把ROC曲線理解為一種用於統計分析的圖表工具。

那麼具體到機器學習的理論中,ROC曲線該怎麼理解呢?首先,需要指出的是,ROC分析的是二元分類模型,也就是輸出結果只有兩種類別的模型,比如:(陽性/陰性)(有病/沒病)(垃圾郵件/非垃圾郵件)。在二分類問題中,數據的標籤通常用(0/1)來表示,在模型訓練完成後進行測試時,會對測試集的每個樣本計算一個介於0~1之間的概率,表徵模型認為該樣本為陽性的概率,我們可以選定一個閾值,將模型計算出的概率進行二值化,比如選定閾值=0.5,那麼當模型輸出的值大於等於0.5時,我們就認為模型將該樣本預測為陽性,也就是標籤為1,反之亦然。選定的閾值不同,模型預測的結果也會相應地改變。二元分類模型的單個樣本預測有四種結果:

真陽性(TP):判斷為陽性,實際也是陽性。偽陽性(FP):判斷為陰性,實際卻是陽性。真陰性(TN):判斷為陰性,實際也是陰性。偽陰性(FN):判斷為陰性,實際卻是陽性。這四種結果可以畫成2 × 2的混淆矩陣:

二階混淆矩陣

有了混淆矩陣,就可以定義ROC曲線了。ROC曲線將假陽性率(FPR)定義為 X 軸,真陽性率(TPR)定義為 Y 軸。其中:

TPR:在所有實際為陽性的樣本中,被正確地判斷為陽性的樣本比率。FPR:在所有實際為陰性的樣本中,被錯誤地判斷為陽性的樣本比率。TPR = TP / (TP + FN)FPR = FP / (FP + TN)給定一個二分類模型和它的閾值,就可以根據所有測試集樣本點的真實值和預測值計算出一個 (X=FPR, Y=TPR) 坐標點,這也就是繪製單個點的方法。那整條ROC曲線又該怎麼畫呢?具體方法如下:

在我們訓練完一個二分類模型後,可以使用該模型對測試集中的全部樣本點計算一個對應的概率值,每個值都介於0~1之間。假設測試集有100個樣本點,我們可以對這100個樣本的預測值從高到低排序,然後依次取每個值作為閾值,一旦閾值確定我們就可以繪製ROC曲線上的一個點,按照這種方法依次將100個點繪製出來,再將各個點依次連接起來,就得到了我們想要的ROC曲線!

然後再回到最初的問題,AUC值其實就是ROC曲線下方所覆蓋的面積,當我們繪製出ROC曲線之後,AUC的值自然也就計算好啦。

示例

這裡引用上海交大張偉楠老師機器學習課件中的例子來說明:

AUC計算示例

如上圖所示,我們有8個測試樣本,模型的預測值(按大小排序)和樣本的真實標籤如右表所示,繪製ROC曲線的整個過程如下所示:

令閾值等於第一個預測值0.91,所有大於等於0.91的預測值都被判定為陽性,此時TPR=1/4,FPR=0/4,所有我們有了第一個點(0.0,0.25)令閾值等於第二個預測值0.85,所有大於等於0.85的預測值都被判定為陽性,這種情況下第二個樣本屬於被錯誤預測為陽性的陰性樣本,也就是FP,所以TPR=1/4,FPR=1/4,所以我們有了第二個點(0.25,0.25)按照這種方法依次取第三、四...個預測值作為閾值,就能依次得到ROC曲線上的坐標點(0.5,0.25)、(0.75,0.25)...(1.0,1.0)將各個點依次連接起來,就得到了如圖所示的ROC曲線計算ROC曲線下方的面積為0.75,即AUC=0.75代碼

在清楚了AUC值的計算原理後,我們再來看看如何在代碼中實現它。通常很多的機器學習工具都封裝了模型指標的計算,當然也包括AUC值。這裡我們來一起看下scikit-learn中AUC的計算方式,如下所示:

>>> import numpy as np>>> from sklearn.metrics import roc_auc_score>>> y_true = np.array([0, 0, 1, 1])>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])>>> roc_auc_score(y_true, y_scores)0.75可以看出,使用scikit-learn工具提供的roc_auc_score函數計算AUC值相當簡單,只需要提供樣本的實際標籤和預測值這兩個變量即可,大大方便了我們的使用,真心感謝這些開源軟體的作者們!

總結

看到這裡的小夥伴們是不是對AUC值的概念有了更好的理解呢。總的來說,AUC值就是一個用來評價二分類模型優劣的常用指標,AUC值越高通常表明模型的效果越好,在實際使用中我們可以藉助軟體包的相應函數進行快速計算。如果各位還有一些問題或者是對文章中的某些部分有疑問,歡迎在評論區討論。

參考

ROC曲線維基百科張偉楠老師課件機器學習和統計裡面的auc怎麼理解? - 知乎

相關焦點

  • 機器學習中的AUC-ROC曲線
    AUC-ROC曲線你已經建立了你的機器學習模型-那麼接下來呢?你需要對它進行評估,並驗證它有多好(或有多壞),這樣你就可以決定是否實現它。這時就可以引入AUC-ROC曲線了。這個名字可能有點誇張,但它只是說我們正在計算「Receiver Characteristic Operator」(ROC)的「Area Under the Curve」(AUC)。別擔心,我們會詳細了解這些術語的含義,一切都將是小菜一碟!現在,只需知道AUC-ROC曲線可以幫助我們可視化機器學習分類器的性能。
  • 為什麼是AUC值而不是GSEA來挑選轉錄因子呢
    首先批量計算AUC值如果是單細胞轉錄組數據裡面,每個單細胞都是有一個geneLists,那麼就是成千上萬個這樣的calcAUC分析,非常耗費計算資源和時間,就需要考慮並行處理,我們這裡暫時不需要,所以直接 nCores=1 即可。
  • AUC的一般計算和近似計算方式
    ROC曲線的橫軸是FPRate,縱軸是TPRate分類器給出預測的概率之後,我們需要設定已給閾值來把各個預測值劃分為預測為正/負。即,小於等於這個閾值的所有樣本預測為負,大於這個閾值的樣本預測為正。import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.metrics import roc_curve, auc# Calculate 'True Positive Rate' and 'False Positive Rate
  • AUC和線上點擊率指標不一致問題分析
    AUC和線上點擊率指標不一致問題分析 原標題:AUC和線上點擊率指標不一致問題分析蘑菇街搜索、推薦排序算法owner,大規模機器學習從業者
  • 機器學習:基於sklearn的AUC的計算原理
    Auc作為數值可以直觀的評價分類器的好壞,值越大越好。首先AUC值是一個概率值,當你隨機挑選一個正樣本以及負樣本,當前的分類算法根據計算得到的Score值將這個正樣本排在負樣本前面的概率就是AUC值,AUC值越大,當前分類算法越有可能將正樣本排在負樣本前面,從而能夠更好地分類。
  • AUC 的缺陷是什麼?
    目前普遍認為接收器工作特性(Receiver Operating Characteristic,ROC)曲線下的面積 ——AUC 是評估分類模型準確性的標準方法。它避免了在閾值選擇過程中假定的主觀性,當連續的概率得到的分數被轉換為二分類標籤時,通過總結整體模型表現,其衡量模型區分正負樣本的性能優於通過閾值來判斷的其他方法(比如準確率、召回率等)。在這篇手稿中,我們回顧了這一度量的一些特點,並將其作為模型結果的準確性的比較度量,對其可靠性提出了質疑。
  • 萬字乾貨 | 一文助你了解機器學習
    聽完這句介紹你是什麼感覺,如果一個完全沒接觸過機器學習的小白可能瞬間就懵逼了。原因很簡單,簡單一句話中包含了大量你無法理解的抽象概念,而事實可能並非如此。同樣的介紹我換一種說法:「我們通過一些規則給用戶打上標籤,使用一套計算規則預測用戶希望購買哪些商品,然後給他們做相應推薦」,是不是瞬間感覺沒那麼高大上了。
  • ROC和AUC介紹以及如何計算AUC
    這篇文章簡單介紹ROC和AUC的特點,以及更為深入地,討論如何作出ROC曲線圖以及計算AUC。ROC曲線需要提前說明的是,我們這裡只討論二值分類器。對於分類器,或者說分類算法,評價指標主要有precision,recall,F-score,以及我們今天要討論的ROC和AUC。下圖是一個ROC曲線的示例。
  • 分享一個Python中機器學習的特徵選擇工具
    我對臨時的特徵選擇方法感到很失望,但是在解決機器學習問題時又反覆用到了這些方法,所以就創建了一個關於特徵選擇的Python類,該類可以在GitHub上找到。FeatureSelector類包括一些最常見的特徵選擇方法:  1.高百分比的缺失值特徵選擇法  2.共線(高度相關)特徵選擇法  3.樹型結構模型中的零重要性特徵選擇法  4.低重要性特徵選擇法  5.唯一值特徵選擇法  在本文中,我將對機器學習數據集的示例使用FeatureSelector類。
  • 萬字長文總結機器學習的模型評估與調參|附代碼下載
    首列為主鍵ID,第2列為類別值(M=惡性腫瘤,B=良性腫瘤),第3-32列是實數值的特徵。本次實例,當管道pipe_lr執行fit方法時:1)StandardScaler執行fit和transform方法;2)將轉換後的數據輸入給PCA;3)PCA同樣執行fit和transform方法;4)最後數據輸入給LogisticRegression,訓練一個LR模型。
  • 簡單粗暴理解與實現機器學習之邏輯回歸:邏輯回歸介紹、應用場景...
    作者 | 汪雯琦責編 | Carol來源 | CSDN 博客學習目標知道邏輯回歸的損失函數知道邏輯回歸的優化方法知道sigmoid函數知道邏輯回歸的應用場景應用LogisticRegression實現邏輯回歸預測知道精確率、召回率指標的區別知道如何解決樣本不均衡情況下的評估了解
  • 理解用於計算SHAP值的公式
    在本文中,我們將了解SHAP(SHapley Additive exPlanations)的理論基礎,並看看SHAP值的計算方法。博弈論與機器學習SHAP值基於Shapley值,Shapley值是博弈論中的一個概念。但博弈論至少需要兩樣東西:遊戲和參與者。
  • 計算機視覺19:使用Python機器學習庫Keras進行圖像處理(下)
    本文將會介紹使用機器學習庫Keras對圖像進行常規的幾種處理,並利用處理後的圖像訓練卷積神經網絡。上兩篇文章介紹了使用Python機器學習庫Keras加載MNIST手寫數字數據集、ImageDataGenerator類進行圖像處理的一般步驟、圖像歸一化、圖像中心化。
  • 機器學習模型評估指標Python代碼示例
    我們什麼時候評估我們的機器學習模型呢?答案不是只有一次。在為任務y設置所有特徵X後,您可以準備多個機器學習模型作為候選。那麼你怎麼才能最終為你的任務選擇一個呢?是的,這是使用模型驗證度量的第一點。Scikit-learn提供了一些快捷方法來比較模型,比如cross - validation。
  • 一文讀懂AUC-ROC
    英文原文:https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5在機器學習中,性能測量是一項重要任務。當涉及到分類問題時,我們依靠AUC  -  ROC曲線來做性能評測。當我們需要檢查或可視化多類分類問題的性能時,我們使用AUC(曲線下面積)和ROC(接收器操作特性)曲線。
  • Uber 開源 AI 可視化調試工具 Manifold,2 個工作流讓計算性能提升...
    以前的機器學習可視化方法通常包括:直接可視化內部結構或模型參數和受底層算法約束的設計,但這可能導致無法擴展到可以處理更大範圍內的通用用例。該可視化原型顯示了數據空間中的模型性能,根據其性能(x 軸)和其中一個特徵的值(y 軸)定位每個數據點 來源:Uber開發者希望通過可視化原型顯示了數據空間中的模型性能,根據其性能(x 軸)和其中一個特徵的值(
  • 計算生物學中機器學習的十大攻略,從入門菜鳥到骨灰級專家的必備寶典
    來源:Biodatamining編譯:Kathy機器學習已經成為很多領域的必備工具,除了在通常的計算機領域風生水起,在生物信息學、計算生物學和健康信息學中都逐漸變得舉足輕重。同時隨著近年來數據的增加和網絡服務的拓展,生物學正在被新的技術不斷變革創新,和機器學習產生了前所未有的緊密結合。
  • 電感值的計算方法介紹
    1引言本文引用地址:http://www.eepw.com.cn/article/194153.htm在開發電子鎮流器和電子節能燈電感鎮流器及電感式節能燈中,常常遇到鎮流電感及濾波電感值的計算問題。