日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ROC与AUC的定义与使用详解

發(fā)布時(shí)間:2025/1/21 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROC与AUC的定义与使用详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原博文地址
ROC曲線 vs Precision-Recall曲線

分類模型評(píng)估:

指標(biāo)描述Scikit-learn函數(shù)
Precision 精準(zhǔn)度 from sklearn.metrics import precision_score
Recall 召回率 from sklearn.metrics import recall_score
F1 F1值 from sklearn.metrics import f1_score
Confusion Matrix 混淆矩陣 from sklearn.metrics import confusion_matrix
ROC ROC曲線 from sklearn.metrics import roc
AUC ROC曲線下的面積 from sklearn.metrics import auc

回歸模型評(píng)估:

指標(biāo)描述Scikit-learn函數(shù)
Mean Square Error (MSE, RMSE) 平均方差 from sklearn.metrics import mean_squared_error
Absolute Error (MAE, RAE) 絕對(duì)誤差 from sklearn.metrics import mean_absolute_error, median_absolute_error
R-Squared R平方值 from sklearn.metrics import r2_score


ROC和AUC定義

ROC全稱是“受試者工作特征”(Receiver Operating Characteristic)。ROC曲線的面積就是AUC(Area Under the Curve)。AUC用于衡量“二分類問題”機(jī)器學(xué)習(xí)算法性能(泛化能力)。

計(jì)算ROC需要知道的關(guān)鍵概念

首先,解釋幾個(gè)二分類問題中常用的概念:True Positive,?False Positive,?True Negative,?False Negative。它們是根據(jù)真實(shí)類別與預(yù)測(cè)類別的組合來區(qū)分的。

假設(shè)有一批test樣本,這些樣本只有兩種類別:正例和反例。機(jī)器學(xué)習(xí)算法預(yù)測(cè)類別如下圖(左半部分預(yù)測(cè)類別為正例,右半部分預(yù)測(cè)類別為反例),而樣本中真實(shí)的正例類別在上半部分,下半部分為真實(shí)的反例。

  • 預(yù)測(cè)值為正例,記為P(Positive)
  • 預(yù)測(cè)值為反例,記為N(Negative)
  • 預(yù)測(cè)值與真實(shí)值相同,記為T(True)
  • 預(yù)測(cè)值與真實(shí)值相反,記為F(False)
  • TP:預(yù)測(cè)類別是P(正例),真實(shí)類別也是P

  • FP:預(yù)測(cè)類別是P,真實(shí)類別是N(反例)
  • TN:預(yù)測(cè)類別是N,真實(shí)類別也是N
  • FN:預(yù)測(cè)類別是N,真實(shí)類別是P

樣本中的真實(shí)正例類別總數(shù)即TP+FN。TPR即True Positive Rate,TPR = TP/(TP+FN)。?
同理,樣本中的真實(shí)反例類別總數(shù)為FP+TN。FPR即False Positive Rate,FPR=FP/(TN+FP)。

還有一個(gè)概念叫”截?cái)帱c(diǎn)”。機(jī)器學(xué)習(xí)算法對(duì)test樣本進(jìn)行預(yù)測(cè)后,可以輸出各test樣本對(duì)某個(gè)類別的相似度概率。比如t1是P類別的概率為0.3,一般我們認(rèn)為概率低于0.5,t1就屬于類別N。這里的0.5,就是”截?cái)帱c(diǎn)”。?
總結(jié)一下,對(duì)于計(jì)算ROC,最重要的三個(gè)概念就是TPR,?FPR,?截?cái)帱c(diǎn)。

截?cái)帱c(diǎn)取不同的值,TPR和FPR的計(jì)算結(jié)果也不同。將截?cái)帱c(diǎn)不同取值下對(duì)應(yīng)的TPR和FPR結(jié)果畫于二維坐標(biāo)系中得到的曲線,就是ROC曲線。橫軸用FPR表示。

sklearn計(jì)算ROC

sklearn給出了一個(gè)計(jì)算ROC的例子[1]。

  • 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)
      • 1
      • 2
      • 3

      通過計(jì)算,得到的結(jié)果(TPR,?FPR,?截?cái)帱c(diǎn))為

    • fpr = array([ 0. , 0.5, 0.5, 1. ])
    • tpr = array([ 0.5, 0.5, 1. , 1. ])
    • thresholds = array([ 0.8 , 0.4 , 0.35, 0.1 ])#截?cái)帱c(diǎn)
      • 1
      • 2
      • 3
      • 1
      • 2
      • 3


    將結(jié)果中的FPR與TPR畫到二維坐標(biāo)中,得到的ROC曲線如下(藍(lán)色線條表示),ROC曲線的面積用AUC表示(淡黃色陰影部分)。

    詳細(xì)計(jì)算過程

    上例給出的數(shù)據(jù)如下

  • y = np.array([1, 1, 2, 2])
  • scores = np.array([0.1, 0.4, 0.35, 0.8])
    • 1
    • 2
    • 1
    • 2

    用這個(gè)數(shù)據(jù),計(jì)算TPR,FPR的過程是怎么樣的呢?

    1. 分析數(shù)據(jù)

    y是一個(gè)一維數(shù)組(樣本的真實(shí)分類)。數(shù)組值表示類別(一共有兩類,1和2)。我們假設(shè)y中的1表示反例,2表示正例。即將y重寫為:

    y_true = [0, 0, 1, 1]
    • 1
    • 1

    score即各個(gè)樣本屬于正例的概率。

    2. 針對(duì)score,將數(shù)據(jù)排序

    樣本 預(yù)測(cè)屬于P的概率(score) 真實(shí)類別
    y[0] 0.1 N
    y[2] 0.35 P
    y[1] 0.4 N
    y[3] 0.8 P

    3. 將截?cái)帱c(diǎn)依次取為score值

    將截?cái)帱c(diǎn)依次取值為0.1,0.35,0.4,0.8時(shí),計(jì)算TPR和FPR的結(jié)果。

    3.1?截?cái)帱c(diǎn)為0.1

    說明只要score>=0.1,它的預(yù)測(cè)類別就是正例。?
    此時(shí),因?yàn)?個(gè)樣本的score都大于等于0.1,所以,所有樣本的預(yù)測(cè)類別都為P。

  • scores = [0.1, 0.4, 0.35, 0.8]
  • y_true = [0, 0, 1, 1]
  • y_pred = [1, 1, 1, 1]
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    TPR = TP/(TP+FN) = 1?
    FPR = FP/(TN+FP) = 1

    3.2?截?cái)帱c(diǎn)為0.35

    說明只要score>=0.35,它的預(yù)測(cè)類別就是P。?
    此時(shí),因?yàn)?個(gè)樣本的score有3個(gè)大于等于0.35。所以,所有樣本的預(yù)測(cè)類有3個(gè)為P(2個(gè)預(yù)測(cè)正確,1一個(gè)預(yù)測(cè)錯(cuò)誤);1個(gè)樣本被預(yù)測(cè)為N(預(yù)測(cè)正確)。

  • scores = [0.1, 0.4, 0.35, 0.8]
  • y_true = [0, 0, 1, 1]
  • y_pred = [0, 1, 1, 1]
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    TPR = TP/(TP+FN) = 1?
    FPR = FP/(TN+FP) = 0.5

    3.3?截?cái)帱c(diǎn)為0.4

    說明只要score>=0.4,它的預(yù)測(cè)類別就是P。?
    此時(shí),因?yàn)?個(gè)樣本的score有2個(gè)大于等于0.4。所以,所有樣本的預(yù)測(cè)類有2個(gè)為P(1個(gè)預(yù)測(cè)正確,1一個(gè)預(yù)測(cè)錯(cuò)誤);2個(gè)樣本被預(yù)測(cè)為N(1個(gè)預(yù)測(cè)正確,1一個(gè)預(yù)測(cè)錯(cuò)誤)。

  • scores = [0.1, 0.4, 0.35, 0.8]
  • y_true = [0, 0, 1, 1]
  • y_pred = [0, 1, 0, 1]
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    TPR = TP/(TP+FN) = 0.5?
    FPR = FP/(TN+FP) = 0.5

    3.4?截?cái)帱c(diǎn)為0.8

    說明只要score>=0.8,它的預(yù)測(cè)類別就是P。所以,所有樣本的預(yù)測(cè)類有1個(gè)為P(1個(gè)預(yù)測(cè)正確);3個(gè)樣本被預(yù)測(cè)為N(2個(gè)預(yù)測(cè)正確,1一個(gè)預(yù)測(cè)錯(cuò)誤)。

  • scores = [0.1, 0.4, 0.35, 0.8]
  • y_true = [0, 0, 1, 1]
  • y_pred = [0, 0, 0, 1]
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    TPR = TP/(TP+FN) = 0.5?
    FPR = FP/(TN+FP) = 0

    心得

    用下面描述表示TPR和FPR的計(jì)算過程,更容易記住

    • TPR:真實(shí)的正例中,被預(yù)測(cè)正確的比例
    • FPR:真實(shí)的反例中,被預(yù)測(cè)正確的比例

    最理想的分類器,就是對(duì)樣本分類完全正確,即FP=0,FN=0。所以理想分類器TPR=1,FPR=0。

    參考:

  • http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html
  • ROC計(jì)算公式,http://blog.yhat.com/posts/roc-curves.html
  • 《機(jī)器學(xué)習(xí)》,周志華
  • 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的ROC与AUC的定义与使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。