混淆矩陣、准確率、精確率/查准率、召回率/查全率、F1值、ROC曲線的AUC值


  准確率、精確率(查准率)、召回率(查全率)、F1值、ROC曲線的AUC值,都可以作為評價一個機器學習模型好壞的指標(evaluation metrics),而這些評價指標直接或間接都與混淆矩陣有關,前四者可以從混淆矩陣中直接計算得到,AUC值則要通過ROC曲線進行計算,而ROC曲線的橫縱坐標又和混淆矩陣聯系密切,所以在了解這些評價指標之前,先知道什么是混淆矩陣很有必要,也方便記憶。

 

1.混淆矩陣

  對於一個二分類問題,我們可以得到如表 1所示的的混淆矩陣(confusion matrix):

表 1:混淆矩陣

  Actual class
positive class negative class
Predicted class positive class True Positive(TP) False Positive(FP)
negative class False Negative(FN) True Negative(TN)


表 1 所示的混淆矩陣中,行表示數據在模型上的預測類別(predicted class/predicted condition),列表示數據的真實類別(actual class/true condition)。在看混淆矩陣時,要分清樣本的真實類別和預測類別,有些地方的行列表示可能和這里不一致。在sklearn中,二分類問題下的混淆矩陣需要分別將表 1 中的predicted class和Actual class對調,將橫縱坐標的positive class和negative class都分別對調,再重新計算混淆矩陣。

  通過混淆矩陣,我們可以很直觀地看清一個模型在各個類別(positive和negative)上分類的情況。

表 2:TP、FP、FN、TN

TP 真實類別為positive,模型預測的類別也為positive
FP 預測為positive,但真實類別為negative,真實類別和預測類別不一致
FN 預測為negative,但真實類別為positive,真實類別和預測類別不一致
TN 真實類別為negative,模型預測的類別也為negative


  
TP、FP、TN、FN,第二個字母表示樣本被預測的類別,第一個字母表示樣本的預測類別與真實類別是否一致。

 

2.准確率

   准確率(accuracy)計算公式如下所示:

\begin{equation}\label{equ:accuracy}
\mbox{accuracy} = \frac{TP+TN}{TP+TN+FP+FN} = \frac{TP+TN }{\mbox{all data}}
\end{equation}

准確率表示預測正確的樣本(TP和TN)在所有樣本(all data)中占的比例。

  在數據集不平衡時,准確率將不能很好地表示模型的性能。可能會存在准確率很高,而少數類樣本全分錯的情況,此時應選擇其它模型評價指標。

 

3.精確率(查准率)和召回率(查全率)

  positive class的精確率(precision)計算公式如下:

\begin{equation}\label{equ:precision}
\mbox{precision} = \frac{TP}{TP+FP} = \frac{TP}{\mbox{預測為positive的樣本}}
\end{equation}

  positive class的召回率(recall)計算公式如下:

\begin{equation}\label{equ:recall}
\mbox{recall} = \frac{TP}{TP+FN} = \frac{TP}{\mbox{真實為positive的樣本}}
\end{equation}

  positive class的精確率表示在預測為positive的樣本中真實類別為positive的樣本所占比例;positive class的召回率表在真實為positive的樣本中模型成功預測出的樣本所占比例。    

  positive class的召回率只和真實為positive的樣本相關,與真實為negative的樣本無關;而精確率則受到兩類樣本的影響。

 

4.$F_1$值和$F_\beta$值

  $F_1$值的計算公式如下:
\begin{equation}\label{equ:f1}
F_1 = \frac{2}{\frac{1}{\mbox{precision}}+\frac{1}{\mbox{recall}}} = \frac{2 \cdot \mbox{precision} \cdot \mbox{recall}}{\mbox{precision}+\mbox{recall}}
\end{equation}
$F_1$值就是精確率和召回率的調和平均值,$F_1$值認為精確率和召回率一樣重要。

  $F_\beta$值的計算公式如下:
\begin{equation}\label{equ:fbeta}
F_\beta = \frac{1+\beta^2}{\frac{1}{\mbox{precision}}+\frac{\beta^2}{\mbox{recall}}} = \frac{(1+\beta^2)\cdot\mbox{precision}\cdot\mbox{recall}}{\beta^2\cdot\mbox{precision}+\mbox{recall}}
\end{equation}
在$\beta = 1$時,$F_\beta$就是$F_1$值,此時$F_\beta$認為精確率和召回率一樣重要;當$\beta > 1$時,$F_\beta$認為召回率更重要;當$0< \beta < 1$時,$F_\beta$認為精確率更重要。除了$F_1$值之外,常用的還有$F_2$和$F_{0.5}$。

 

5.ROC曲線及其AUC值

  AUC全稱為Area Under Curve,表示一條曲線下面的面積,ROC曲線的AUC值可以用來對模型進行評價。ROC曲線如圖 1 所示:

 

 圖 1:ROC曲線

(注:圖片摘自https://en.wikipedia.org/wiki/Receiver_operating_characteristic

  ROC曲線的縱坐標True Positive Rate(TPR)在數值上就等於positive class的recall,記作recall$_{positive}$,橫坐標False Positive Rate(FPR)在數值上等於(1 - negative class的recall),記作(1 - recall$_{negative}$)如下所示:
\begin{equation}\label{equ:tpr}
\begin{split}
\mbox{TPR} &= \frac{TP}{TP + FN} \\ &= \mbox{recall$_{positive}$}
\end{split}
\end{equation}
\begin{equation}\label{equ:fpr}
\begin{split}
\mbox{FPR} &= \frac{FP}{FP + TN} = \frac{FP + TN -TN}{FP + TN} \\ &= 1 - \frac{TN}{FP + TN} \\ &= 1 - \mbox{recall$_{negative}$}
\end{split}
\end{equation}
  通過對分類閾值$\theta$(默認0.5)從大到小或者從小到大依次取值,我們可以得到很多組TPR和FPR的值,將其在圖像中依次畫出就可以得到一條ROC曲線,閾值$\theta$取值范圍為$[0, 1]$。

  ROC曲線在圖像上越接近左上角$(0, 1)$模型越好,即ROC曲線下面與橫軸和直線FPR = 1圍成的面積(AUC值)越大越好。直觀上理解,縱坐標TPR就是recall$_{positive}$值,橫坐標FPR就是(1 - recall$_{negative}$),前者越大越好,后者整體越小越好,在圖像上表示就是曲線越接近左上角$(0, 1)$坐標越好。

  圖 1展示了3個模型的ROC曲線,要知道哪個模型更好,則需要計算每條曲線的AUC值,一般認為AUC值越大越好。AUC值由定義通過計算ROC曲線、橫軸和直線FPR = 1三者圍成的面積即可得到。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM