1. 二分類問題
1.1 概念
TP FP FN TN
|
預測類別-正 |
預測類別-負 |
真實類別-正 |
真正例(True Positive,TP) |
假負例(False Negative,FN) |
真實類別-負 |
假正例(False Positive,FP) |
真負例(True Negative,TN) |
準確率 Precision
準確率,衡量分類器找對正例的能力:
Precision=TP+FPTP
召回率 Recall
召回率,衡量分類器找全正例的能力:
Recall=TP+FNTP
F值 F-score or F-measures
F值,權衡準確率和召回率兩個指標:
Fβ=β2×Precision+Recall(1+β2)×Precision×Recall
β 的選擇:
當 β<1 時,準確率更重要,當 β>1 時,召回率更重要。
當 β=1 時,準確率和召回率同樣重要,也是最常用的F1-score:
F1=Precision+Recall2×Precision×Recall
應用中不同側重的例子:
- 側重準確率:搜索
- 側重召回率:疾病監測、垃圾郵件檢測
經手過的案例:
- 側重召回率:mesh的噪聲面片檢測,檢測出噪聲面片後用傳統方法平滑。檢測噪聲面片時誤識別一些邊緣的非噪聲面片反而有利於後續的拉普拉斯平滑。
.
1.2 計算方法
Tips:
precision_score, recall_score, f1_score, fbeta_score 這4個函數內部都調用了precision_recall_fscore_support函數進行結果計算。
.
2. 多分類問題
2.1 介紹
Micro-average 微平均
不區分Class,只以預測Label和真實Label是否一致來計算準確率、召回率、F值。
Macro-average 宏平均
分別統計每個Class的準確率、召回率、F值,然後按Class取平均值。
Weighted-average 加權平均
分別統計每個Class的準確率、召回率、F值,然後按每個Class的樣本數取加權平均值。
.
2.2 計算公式
L 標籤集合
S 樣本集合
y 樣本的預測標籤集合
y 樣本的真實標籤集合
P(A,B):=∣A∣∣A∩B∣
R(A,B):=∣B∣∣A∩B∣
Fβ(A,B):=β2×P(A,B)+R(A,B)(1+β2)×P(A,B)×R(A,B)
Average |
Precision |
Recall |
F_beta |
None |
⟨P(y,y)∣l∈L⟩ |
⟨R(y,y)∣l∈L⟩ |
⟨Fβ(y,y)∣l∈L⟩ |
Micro |
P(y,y) |
R(y,y) |
Fβ(y,y) |
Macro |
∣L∣1∑l∈LP(yl,yl) |
∣L∣1∑l∈LR(yl,yl) |
∣L∣1∑l∈LFβ(yl,yl) |
Weighted |
∑l∈L∣yl∣1∑l∈L∣yl∣P(yl,yl) |
∑l∈L∣yl∣1∑l∈L∣yl∣R(yl,yl) |
∑l∈L∣yl∣1∑l∈L∣yl∣Fβ(yl,yl) |
來源:scikit-learn 文檔
.
2.3 對比
Micro vs Macro
- 當數據集每個Class的樣本量差不多時,Micro和Macro指標不會有太大差別。
- 當數據集每個Class的樣本量懸殊時(非均衡數據集):
Micro更側重表現樣本量多的Class,Macro更側重表現樣本量較少的Class。
- Micro和Macro指標出現較大差異:
當Micro平均大大低於Macro平均時,檢查樣本量多的Class;
當Macro平均大大低於Micro平均時,檢查樣本量少的Class。
.
2.4 計算方法