機(jī)器學(xué)習(xí)分類問題:九個(gè)常用的評估指標(biāo)總結(jié)
對機(jī)器學(xué)習(xí)的評估度量是機(jī)器學(xué)習(xí)核心部分,本文總結(jié)分類問題常用的請估指標(biāo)。
分類問題評估指標(biāo)
在這里,將討論可用于評估分類問題預(yù)測的各種性能指標(biāo)。
1. Confusion Matrix
這是衡量分類問題性能的最簡單方法,其中輸出可以是兩種或更多類型的類?;煜仃囍徊贿^是一個(gè)具有兩個(gè)維度的表,即“實(shí)際”和“預(yù)測”,此外,這兩個(gè)維度都有“真陽性(TP)”、“真陰性(TN)”、“假陽性(FP)”和“假陰性(FN)”,如下所示:
與混淆矩陣相關(guān)的術(shù)語解釋如下:
- 真陽(TP)? 當(dāng)數(shù)據(jù)點(diǎn)的實(shí)際類別和預(yù)測類別均為1
- 真實(shí)陰(TN)? 當(dāng)數(shù)據(jù)點(diǎn)的實(shí)際類和預(yù)測類都為0
- 假陽(FP)? 當(dāng)數(shù)據(jù)點(diǎn)的實(shí)際類別為0,預(yù)測的數(shù)據(jù)點(diǎn)類別為1
- 假陰(FN)? 當(dāng)數(shù)據(jù)點(diǎn)的實(shí)際類別為1,預(yù)測的數(shù)據(jù)點(diǎn)類別為0
我們可以使用sklearn的混淆矩陣函數(shù)confusion_matrix,用于計(jì)算分類模型混淆矩陣的度量。
2. Accuracy
它是分類算法最常見的性能度量。它可以被定義為正確預(yù)測的數(shù)量與所有預(yù)測的比率。我們可以通過混淆矩陣,借助以下公式輕松計(jì)算:
我們可以使用sklearn的accuracy_score函數(shù),計(jì)算分類模型準(zhǔn)確性的指標(biāo)
3. Precision
precision定義為ML模型預(yù)測結(jié)果中:預(yù)測正確的正樣本數(shù)除以所有的預(yù)測正樣本數(shù):
4. Recall
recall定義為ML模型預(yù)測結(jié)果中:預(yù)測正確的正樣本數(shù)除以所有的實(shí)際正樣本數(shù):
5. Specificity
specificity定義為ML模型預(yù)測結(jié)果中:預(yù)測正確的負(fù)樣本數(shù)除以所有的實(shí)際負(fù)樣本數(shù):
6. Support
支持度可定義為每類目標(biāo)值中相應(yīng)的樣本數(shù)。
7. F1 Score
該分?jǐn)?shù)將為我們提供precision和recall的調(diào)和平均值。從數(shù)學(xué)上講,F(xiàn)1分?jǐn)?shù)是precision和recall的加權(quán)平均值。F1的最佳值為1,最差值為0。我們可以使用以下公式計(jì)算F1分?jǐn)?shù):
F1分?jǐn)?shù)對precision和recall的相對貢獻(xiàn)相等。
我們可以使用sklearn的classification_report功能,用于獲取分類模型的分類報(bào)告的度量。
8. AUC (Area Under ROC curve)
AUC(曲線下面積)-ROC(接收器工作特性)是基于不同閾值的分類問題性能指標(biāo)。顧名思義,ROC是一條概率曲線,AUC衡量可分離性。簡單地說,AUC-ROC度量將告訴我們模型區(qū)分類的能力,AUC越高,模型越好。
從數(shù)學(xué)上講,可以通過繪制不同閾值下的TPR(真陽性率),即specificity或recall與FPR(假陽性率),下圖顯示了ROC、AUC,y軸為TPR,x軸為FPR:
我們可以使用sklearn的roc_auc_score函數(shù),計(jì)算AUC-ROC的指標(biāo)。
9. LOGLOSS (Logarithmic Loss)
它也稱為邏輯回歸損失或交叉熵?fù)p失。它基本上定義在概率估計(jì)上,并測量分類模型的性能,其中輸入是介于0和1之間的概率值。
通過精確區(qū)分,可以更清楚地理解它。正如我們所知,準(zhǔn)確度是我們模型中預(yù)測的計(jì)數(shù)(預(yù)測值=實(shí)際值),而對數(shù)損失是我們預(yù)測的不確定性量,基于它與實(shí)際標(biāo)簽的差異。借助對數(shù)損失值,我們可以更準(zhǔn)確地了解模型的性能。我們可以使用sklearn的log_loss函數(shù)。
例子
下面是Python中的一個(gè)簡單方法,它將讓我們了解如何在二進(jìn)制分類模型上使用上述性能指標(biāo)。
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