機器學習分類問題:九個常用的評估指標總結

語言: CN / TW / HK

本站內容均來自興趣收集,如不慎侵害的您的相關權益,請留言告知,我們將盡快刪除.謝謝.

對機器學習的評估度量是機器學習核心部分,本文總結分類問題常用的請估指標。

分類問題評估指標

在這裡,將討論可用於評估分類問題預測的各種效能指標。

1. Confusion Matrix

這是衡量分類問題效能的最簡單方法,其中輸出可以是兩種或更多型別的類。混淆矩陣只不過是一個具有兩個維度的表,即“實際”和“預測”,此外,這兩個維度都有“真陽性(TP)”、“真陰性(TN)”、“假陽性(FP)”和“假陰性(FN)”,如下所示:

與混淆矩陣相關的術語解釋如下:

真陽(TP)− 當資料點的實際類別和預測類別均為1

真實陰(TN)− 當資料點的實際類和預測類都為0

假陽(FP)− 當資料點的實際類別為0,預測的資料點類別為1

假陰(FN)− 當資料點的實際類別為1,預測的資料點類別為0

我們可以使用sklearn的混淆矩陣函式confusion_matrix,用於計算分類模型混淆矩陣的度量。

2. Accuracy

它是分類演算法最常見的效能度量。它可以被定義為正確預測的數量與所有預測的比率。我們可以通過混淆矩陣,藉助以下公式輕鬆計算:

我們可以使用sklearn的accuracy_score函式,計算分類模型準確性的指標

3. Precision

precision定義為ML模型預測結果中:預測正確的正樣本數除以所有的預測正樣本數:

4. Recall

recall定義為ML模型預測結果中:預測正確的正樣本數除以所有的實際正樣本數:

5. Specificity

specificity定義為ML模型預測結果中:預測正確的負樣本數除以所有的實際負樣本數:

6. Support

支援度可定義為每類目標值中相應的樣本數。

7. F1 Score

該分數將為我們提供precision和recall的調和平均值。從數學上講,F1分數是precision和recall的加權平均值。F1的最佳值為1,最差值為0。我們可以使用以下公式計算F1分數:

F1分數對precision和recall的相對貢獻相等。

我們可以使用sklearn的classification_report功能,用於獲取分類模型的分類報告的度量。

8. AUC (Area Under ROC curve)

AUC(曲線下面積)-ROC(接收器工作特性)是基於不同閾值的分類問題效能指標。顧名思義,ROC是一條概率曲線,AUC衡量可分離性。簡單地說,AUC-ROC度量將告訴我們模型區分類的能力,AUC越高,模型越好。

從數學上講,可以通過繪製不同閾值下的TPR(真陽性率),即specificity或recall與FPR(假陽性率),下圖顯示了ROC、AUC,y軸為TPR,x軸為FPR:

我們可以使用sklearn的roc_auc_score函式,計算AUC-ROC的指標。

9. LOGLOSS (Logarithmic Loss)

它也稱為邏輯迴歸損失或交叉熵損失。它基本上定義在概率估計上,並測量分類模型的效能,其中輸入是介於0和1之間的概率值。

通過精確區分,可以更清楚地理解它。正如我們所知,準確度是我們模型中預測的計數(預測值=實際值),而對數損失是我們預測的不確定性量,基於它與實際標籤的差異。藉助對數損失值,我們可以更準確地瞭解模型的效能。我們可以使用sklearn的log_loss函式。

例子

下面是Python中的一個簡單方法,它將讓我們瞭解如何在二進位制分類模型上使用上述效能指標。

from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))

輸出:

Confusion Matrix :
[
   [3 3]
   [1 3]
]
Accuracy Score is 0.6
Classification Report :
            precision      recall      f1-score       support
      0       0.75          0.50      0.60           6
      1       0.50          0.75      0.60           4
micro avg     0.60          0.60      0.60           10
macro avg     0.62          0.62      0.60           10
weighted avg  0.65          0.60      0.60           10
AUC-ROC:  0.625
LOGLOSS Value is 13.815750437193334