Precision 0.8、Recall 0.6,F1 分數是多少?
在二元分類問題中,若精確率(Precision)為 0.8,召回率(Recall)為 0.6,則 F1 分數(F1 Score)為何?
F1 分數是把精確率(Precision)和召回率(Recall)合併成一個數字的評估指標,計算方式是這兩個數的「調和平均數」,公式是 2PR÷(P+R)。
題目給了 P = 0.8、R = 0.6,要你代入公式算出 F1 的值。
問你:Precision = 0.8、Recall = 0.6 時,F1 分數的計算結果是多少?
一句話總結
F1 = 2 × 0.8 × 0.6 ÷ (0.8 + 0.6) = 0.96 ÷ 1.4 ≈ 0.686。F1 分數是調和平均數,比算術平均數(0.7)更低,因為調和平均對兩個值中較低的那個更敏感。
先感受問題:Precision 高、Recall 低,怎麼算一個公平的綜合分?
「健診科技」的 AI 疾病篩檢系統每天處理 1000 人的血液報告,把每份報告分類成「有風險(正例)」或「無風險(負例)」。
工程師小明評估模型:
- Precision = 0.8:AI 說「有風險」時,真的有 80% 是真正有風險的人。
- Recall = 0.6:所有真正有風險的人裡,AI 找到了 60%(漏掉了 40%)。
主管問:「這個模型的綜合表現怎麼打一個分數?」
直接取算術平均:(0.8 + 0.6) / 2 = 0.7,但這樣對「漏掉 40% 的病患」這個嚴重問題不夠敏感。F1 的調和平均設計就是為了解決這個問題。
為什麼不直接用算術平均?
- 算術平均掩蓋極端值:Precision = 1.0、Recall = 0.1 的模型,算術平均 = 0.55,和 Precision = 0.8、Recall = 0.6(算術平均 0.7)比看起來沒差多少,但前者漏掉 90% 的病患,是嚴重缺陷。
- 調和平均對低值更嚴格:F1 = 2PR/(P+R),任一數值越低,F1 就越低。Recall = 0.1 的模型,F1 ≈ 0.18,遠低於算術平均 0.55,更忠實反映模型的弱點。
- 直接相加不考慮兩者的互制性:Precision 和 Recall 存在此消彼長關係,調和平均確保兩者都必須夠好,F1 才能高。
- 無法在不同模型之間進行有意義的比較:只有一個綜合指標,才能系統性地排序不同配置的模型,用兩個數字(P 和 R)比較多個模型很繁瑣。
- 誤差對稱假設不合理:漏掉病患(Recall 低)的代價,通常遠大於誤報(Precision 低),但即使以 F1 為基準,也要注意 F1 預設 P 和 R 等權重,高風險場景應考慮 Fβ(如 F2)。
F1 公式計算:一步一步來
小明代入公式:
F1 = 2 × P × R ÷ (P + R)
F1 = 2 × 0.8 × 0.6 ÷ (0.8 + 0.6)
F1 = 2 × 0.48 ÷ 1.4
F1 = 0.96 ÷ 1.4
F1 ≈ 0.6857 ≈ 0.686
注意:選項 B「0.700」是算術平均 (0.8 + 0.6) / 2,是計算陷阱。選項 C「0.720」是 0.8 × 0.9(瞎猜),選項 D「0.750」是 0.8 × 0.6 / (0.8 × 0.6) 的某種變形(也是錯的)。只有帶入正確公式 2PR/(P+R) 才能得到 0.686。
這就是選項 A 講的:0.686。
技術版:F1 公式的推導與調和平均的數學意義
中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。
調和平均的直覺:假設你的車去程用 60 公里/小時,回程用 120 公里/小時,「平均速度」是多少?
算術平均 = (60 + 120) / 2 = 90,但這是錯的。正確答案是 80——因為去程花了更多時間,低速的影響更大。
調和平均 = 2 × 60 × 120 / (60 + 120) = 14400 / 180 = 80,這才對。
F1 用同樣的邏輯:Recall 低的模型「花更多代價(漏掉更多病患)」,調和平均讓低值的影響被放大,不讓高 Precision 掩蓋低 Recall。
| 白話說法 | 公式 |
|---|---|
| 精確率(預測為正中真正為正的比例) | P = TP / (TP + FP) |
| 召回率(真正正例中被找到的比例) | R = TP / (TP + FN) |
| F1 分數(P 和 R 的調和平均) | F1 = 2PR / (P + R) |
| F1 的等價形式(以 TP/FP/FN 表示) | F1 = 2TP / (2TP + FP + FN) |
| 算術平均(錯的計算方式) | (P + R) / 2 = (0.8+0.6)/2 = 0.700 |
- TP(True Positive)
- 真陽性:模型預測「有風險」,實際真的有風險
- FP(False Positive)
- 假陽性:模型預測「有風險」,但實際無風險(誤報)
- FN(False Negative)
- 假陰性:模型預測「無風險」,但實際有風險(漏報)
- P(Precision)
- 精確率:預測為正例中,真正為正例的比例
- R(Recall)
- 召回率:所有真正正例中,被正確預測的比例
題目給定:P = 0.8,R = 0.6 F1 = 2 × P × R ÷ (P + R) = 2 × 0.8 × 0.6 ÷ (0.8 + 0.6) = 2 × 0.48 ÷ 1.4 = 0.96 ÷ 1.4 = 0.68571... ≈ 0.686(取三位小數) 錯誤計算(算術平均,選項 B 的陷阱): 算術平均 = (0.8 + 0.6) / 2 = 0.700 ← 不是調和平均,不是 F1 驗證:F1 < 算術平均? 0.686 < 0.700 ✓ 調和平均永遠 ≤ 算術平均
- F1 公式是什麼?為什麼不用算術平均?
- Precision = 0.9、Recall = 0.1,F1 是多少?(提示:F1 = 2 × 0.9 × 0.1 / 1.0 = 0.18)
- 調和平均為什麼總是小於或等於算術平均?
- F1 = 0.686 代表什麼直覺意義?(模型在「不誤報」和「不漏報」之間達到了約 68.6% 的綜合表現)
- 什麼情況下應該用 F2(β=2)而非 F1?
為什麼其他選項是錯的
B0.700
0.700 = (0.8 + 0.6) / 2,這是 Precision 和 Recall 的算術平均數。
F1 分數的定義是調和平均數(Harmonic Mean),不是算術平均數。調和平均的公式是 2PR/(P+R),計算結果是 0.686,比算術平均 0.700 更低。設計成調和平均的原因:對兩個值中較低的那個更敏感,避免高 Precision 掩蓋低 Recall 的問題。
背了「F1 是 P 和 R 的平均」但沒記住是「調和平均」的人。這是最常見的計算陷阱:(0.8 + 0.6) / 2 = 0.7,感覺合理,但公式錯了。
C0.720
0.720 看起來介於 0.686 和 0.750 之間,像是某種「折中」的結果。
代入任何正確的 F1 公式都不會得到 0.720。這個選項可能是用 0.8 × 0.9 或某種非標準計算方式湊出來的干擾值,對應到沒有任何標準統計意義的計算路徑。
對公式不確定、覺得答案應該在幾個候選值中間的人。考試上應付計算題的關鍵是記住正確公式,而不是從選項反推哪個「比較合理」。
D0.750
0.750 = 0.6 / 0.8,或者也可能是某種混合計算的結果。
0.750 = 0.6 / 0.8 是 Recall / Precision 的比值,這個比值本身沒有標準的 F1 意義。代入正確公式 F1 = 2 × 0.8 × 0.6 / (0.8 + 0.6) = 0.686,不是 0.750。
把分子分母弄混,或者用 0.8 × (0.6 + 0.6) / (0.8 + ... ) 等錯誤公式計算的人。計算類題目一定要從公式出發,逐步代入,不能憑感覺選。
同個考點下次怎麼變形
Precision = 0.9、Recall = 0.5,F1 是多少?
Precision 很高但 Recall 很低,F1 應該會被 Recall 拖低。
F1 = 2 × 0.9 × 0.5 / (0.9 + 0.5) = 0.9 / 1.4 ≈ 0.643。算術平均是 0.7,F1 比算術平均低 0.057,因為 Recall = 0.5 這個低值被調和平均放大了影響。
Precision = Recall = 0.7,F1 是多少?
兩個值相等時,調和平均應該和算術平均一樣吧?
是的。F1 = 2 × 0.7 × 0.7 / (0.7 + 0.7) = 0.98 / 1.4 = 0.7。當 P = R 時,調和平均 = 算術平均 = 幾何平均,三者相等。這是唯一一種 F1 不會低於算術平均的情況(其實是相等)。
為什麼 F1 永遠 ≤ 算術平均?
是數學規律還是設計選擇?
這是數學定理:對任意兩個正數,調和平均 ≤ 幾何平均 ≤ 算術平均(HM ≤ GM ≤ AM 不等式)。等號成立的條件是兩個數相等。F1 是調和平均,因此永遠 ≤ (P+R)/2,也就是說 F1 對低值的懲罰比算術平均更嚴格,是刻意的設計選擇。
F2 分數的公式是什麼?什麼時候用?
疾病篩檢漏掉病患的代價遠大於誤報,這時候應該更重視 Recall?
Fβ = (1+β²) × P × R / (β²P + R)。F2(β=2)讓 Recall 的權重是 Precision 的 4 倍。代入:F2 = 5 × 0.8 × 0.6 / (4×0.8 + 0.6) = 2.4 / (3.2+0.6) = 2.4/3.8 ≈ 0.632。比 F1 = 0.686 更低,反映了對 Recall = 0.6 這個弱點的更強懲罰。疾病篩檢、詐欺偵測場景常用 F2。
F1 分數和 AUC-ROC 的差別是什麼?各自的適用場景是?
兩者都是分類模型的評估指標,用途有什麼不同?
F1 分數是在某個固定閾值(通常 0.5)下計算,適合需要一個明確「是/否」決策的場景。AUC-ROC 評估的是模型在所有可能閾值下的整體辨別能力(不依賴閾值選擇),適合比較不同模型的整體排序能力。類別嚴重不平衡時,AUC-ROC 可能過於樂觀,F1 或 AUC-PRC(Precision-Recall Curve 下面積)更適合。
想再往下看,這 5 個
- F1 Score(F1 分數)本題核心,Precision 和 Recall 的調和平均數,公式 2PR/(P+R),任一指標低都會拉低 F1。
- 精確率(Precision)F1 的組成分之一,衡量預測為正例中真正為正例的比例,與 Recall 之間存在此消彼長的關係。
- 召回率(Recall)F1 的另一組成分,衡量所有真實正例中被模型正確找到的比例,本題中 Recall = 0.6 拉低了 F1。
- ROC 曲線(Receiver Operating Characteristic)和 F1 並列的分類評估工具,評估所有閾值下的整體辨別力,適合比較多個模型的排序能力。
- ROC 曲線下面積(AUC)ROC 曲線的量化指標,0.5 代表隨機猜測,1.0 代表完美分類,常與 F1 搭配評估不同場景下的模型效能。