模組 10 · Evidence and benchmarking

證據、驗證與效能評估

從 precision、recall、F1、資料來源與參考標註品質,系統性評估效能結果與適用範圍。

約 60 分鐘建議先修:Somatic variant calling建議先修:腫瘤混合體

本模組學習目標

  • 批判性解讀效能圖,而非僅依最高長條判斷
  • 解釋為什麼 precision 明顯上升時 F1 可能幾乎不動
  • 說明 truth set 之間的可靠度差異,以及 LongPhase-S 以加權方式處理它的做法
  • 指出 data leakage、distribution shift 與 label noise 各自的徵兆

為什麼重要

後續閱讀的論文通常會包含多張長條圖與折線圖。 判讀圖表未呈現的資訊,是研究與工程實務中的重要能力。

本節的目標不只是計算 F1,也包括培養批判性解讀與驗證能力。

本模組的數字來自兩項工作

下面會反覆引用兩組具體結果。它們是不同的方法、處理不同的問題,先在這裡分清楚, 後面提到時就直接用名字稱呼:

名稱它是什麼本模組用它示範什麼
indel 精修模型 接在 somatic caller 後面的一個後處理模型。它把每個候選 indel 周圍的 pileup 編碼成一張影像,再用卷積神經網路(CNN)判斷這個候選是真的還是假的。 輸入是配對 tumor–normal 的 long-read 資料。關鍵性質是:它只會刪掉候選,不會生出新的候選。 precision 上升而 F1 幾乎不動的原因、模型選擇該用什麼分數、 以及兩個長得一樣卻標記相反的候選
LongPhase-S 的腫瘤 DNA 比例估計 由樣本本身估計腫瘤比例,再依估計值調整過濾參數。方法本身在 M12 展開, 這裡只借它的評估設計 交叉驗證要以什麼為單位切分、benchmark 可靠度不同時怎麼加權

第一項的那句「只會刪掉候選」,是本模組第一個要拆解的東西 —— 它替所有後處理方法設下了一個效能上限。

概念與互動

先釐清三項指標

指標計算公式所代表的問題僅移除候選的後處理如何影響
TP ÷(TP+FP)所報變異中屬於真陽性的比例通常上升(移除 FP)
TP ÷(TP+FN)所有真陽性中被找出的比例至多維持,可能下降
precision 與 recall 的調和平均兩項指標的綜合表現依 TP、FP、FN 的變化而定
固定候選集合下,precision 上升而 F1 變化有限 上半部定義三個指標: precision 是所報變異中屬於真陽性的比例,recall 是所有真陽性中被找出的比例, F1 是兩者的調和平均。 下半部示範在固定候選集合、且後處理僅移除假陽性的情況下,FP 減少而 FN 維持不變。 當 FN 遠多於 FP 時,移除一半 FP 對 F1 的改善有限;若誤刪 TP,FN 還會增加。 三項指標的計算對象 benchmark 標註的真陽性集合 所報候選 假陰性 FN 真陽性 TP 假陽性 FP precision 所報候選中的比例: TP ÷ (TP+FP) recall 所有真陽性中的比例: TP ÷ (TP+FN) 在本示例中,後處理僅移除部分假陽性 過濾前 FN 335 TP 412 FP 88 precision 0.824 F1    0.661 過濾後 FN 335(本示例維持不變) TP 412 FP 44 precision 0.904 F1    0.685 +0.080 +0.024 本示例中 FN 維持不變 —— 僅移除候選的後處理不會恢復 caller 未產生的候選。 當 FN 遠多於 FP 時,移除 FP 對 F1 的改善有限;若誤刪 TP,FN 會增加。
上方定義三項指標;下方示範在固定候選集合、且後處理僅移除假陽性的情況下,FP 減少而 FN 維持不變。因此 precision 上升 0.080,而 F1 僅上升 0.024。

第三欄的條件限定上述結論。在固定 caller 候選集合且後處理僅移除候選時,recall 至多維持,若誤刪 TP 則可能下降。 caller 未產生的候選不會由此恢復;若後處理包含 re-calling 或 assembly,則需另行評估。

觀察 precision 與 F1 的差異

互動練習
將門檻由 0.5 調至 0.9,比較 precision 與 F1 的變化;再將模擬中的 caller 漏失數設為 0,重複操作並比較兩種情境。

並非無誤的標準

評估需要參考答案;不同資料來源的標註可靠度可能存在差異:

來源形成方式可靠度評估
SEQC2多平台、多中心的共識計畫需依變異類型與區域評估
NYGC單一機構產生需依驗證設計評估
Google(orthogonal tools)多個工具交叉比對的共識需確認工具獨立性與共識形成方式

LongPhase-S 在搜尋過濾參數時, 依不同 cell line 的 benchmark 可靠度乘上相對應的權重。 此設計可能減少 benchmark 差異的影響,但比較不同論文的數字時,仍應確認 truth set 與加權方式是否一致。

評估邊界:benchmark 只涵蓋高信心區域

benchmark 通常附一個 BED 檔,標示「我們有把握的區間」。 區間外的標註信心通常較低,結果不宜直接解讀,除非有其他獨立驗證。

三項可能造成評估偏差的因素

因素可能徵兆本例的處理
測試效能異常偏高indel 精修模型按染色體切分:chr2 與 chr8 僅用於驗證;仍需檢查樣本與位點是否跨 split
訓練與測試的類別或特徵分布不同indel 精修模型的訓練集 FP 佔 4%、測試集佔 19%,因此不能只看 loss
特定類別的表現持續受限特徵相近的兩個位點被賦予相反標籤,提示可能存在標註不確定性

最後一項可由具體案例說明。下面並列 indel 精修模型送進 CNN 的兩張影像 —— 也就是兩個 deletion 候選各自的 pileup 編碼:一個是 true positive(模型給 0.997), 一個是 false positive(0.994)。 兩者的 tumor reads 都顯示集中一致的 deletion,normal reads 未見相應支持。 就這種影像編碼呈現的特徵而言,兩個候選近似。

兩個 deletion 候選點的影像編碼並列比較:左邊是 true positive 分數 0.997,右邊是 false positive 分數 0.994;在此影像中兩者外觀相近
兩個 deletion 候選點的模型分數相近:左側 true positive(0.997),右側 false positive(0.994)。兩者在此影像中都有集中對齊的 deletion,normal 均未呈現明顯異常。就此影像可見的訊息而言,兩個候選點難以區分;需要其他證據補充判讀。

該工作的結論是:在這種影像輸入下,這兩類候選沒有可辨識的差異。這類位點常落在 homopolymer 或 tandem repeat 區域, benchmark 標註的不確定性可能較高;若要判定 label noise,仍需獨立 truth 或重複實驗支持。

合成 DNA fraction 混合樣本及其適用範圍

常用流程假設來源 tumor BAM 接近純腫瘤,再依指定比例與 normal BAM 混合。 此流程可產生預先設定的 DNA/read fraction,作為近似真值;但來源樣本的純度、輸入深度、每細胞 DNA 量與拷貝數仍需校正, 實際細胞株也可能包含少量正常或異質細胞。

因此「在標示為 purity 0.2(或 DNA fraction 0.2,依研究定義)的樣本上誤差小於 10%」應完整表述為「在以此方式合成的樣本上」; 結果僅適用於該合成方式與來源樣本前提。

真實證據

用對的指標選模型

indel 精修模型有一項值得注意的模型選擇設計:它不取 validation loss 最低的那個 epoch 當最佳模型。

理由是 loss 反映所選損失函數(例如 cross-entropy)的平均目標,不必然等同於分類錯誤率; 若任務目標是「在盡量保留真 indel 的前提下,篩掉更多假的」, 兩者不是同一件事。

因此它改用以下任務導向分數挑 epoch:

score=(成功移除的 FPλ×誤刪的 TP)÷FP 總數

λ 由 benchmark 與驗證集的正負比例估計,而非人工指定(該資料約為 1.45); 應同時說明估計資料、FP 總數為零時的處理,以及權重敏感度。

validation loss 最低的 epoch 不等於任務目標最好的 epoch 兩個上下並排、共用同一條 epoch 橫軸的曲線。 上面那條是 validation loss,越低越好:它一路下降,在第 22 個 epoch 附近才到最低點。 下面那條是任務導向分數,越高越好:它在第 12 個 epoch 就到最高點,之後就開始下滑。 兩個最高/最低點落在不同的 epoch,中間相差十個 epoch。 右側說明那個分數怎麼算:成功移除的假陽性,減去 λ 倍的誤刪真陽性,再除以假陽性總數, λ 約為 1.45,由驗證集的正負比例估出,λ 越大表示越不容忍誤刪真陽性。 因此模型選的是第 12 個 epoch:那時 loss 還在下降,但任務目標已經開始變差。 同一次訓練,兩個指標的最佳點不在同一個 epoch ① validation loss —— 越低越好 最低點在這裡 ② 任務分數 —— 越高越好 最高點在這裡 0 10 20 30 epoch ↑ epoch 12:任務分數最高 ↑ epoch 22:loss 最低 它改用什麼分數挑 epoch 成功移除的 FP − λ × 誤刪的 TP FP 總數 λ ≈ 1.45,由正負比例算出 λ 越大 → 越不容忍誤刪 TP 結果選 epoch 12 loss 還在降,目標已經變差 loss 衡量的是平均分類誤差;任務要的是「少刪真的、多刪假的」。兩者不是同一件事。 所以模型選擇的標準要跟任務目標對齊,不是跟 loss 對齊。
兩條曲線共用同一條 epoch 橫軸。上面的 validation loss 一路降到第 22 個 epoch 才最低;下面的任務分數第 12 個 epoch 就到頂,之後開始下滑。兩個最佳點相差十個 epoch —— 取 loss 最低的那一個,拿到的是一個任務目標已經變差的模型。

核心原則

模型選擇的標準應與任務目標對齊,而不必與 loss 最小化完全相同。 此原則適用於 variant calling 以外的應用 ML 任務。

本例交叉驗證以樣本為分割單位

LongPhase-S 用 leave-k-out 交叉驗證評估腫瘤 DNA 比例的迴歸模型, 每次留下 1 或 2 個 cell line 當測試集。結果 MAE 約 4%、R2 約 0.95。

這種做法叫 。此處保留 cell line 作測試,有助於評估跨樣本的泛化能力。 若同一 cell line 的高度相關位點同時出現在訓練與測試中,可能造成 或效能高估。

先提出預測,再查看解答

一篇論文說:「我們的方法把 precision 從 0.72 提升到 0.89。」

請列出解讀此結果時應先確認的三項資訊。

展開答案

依重要性排序:

  1. recall 如何變化?若只報 precision 而不報 recall,可能遺漏門檻調整造成的取捨。 提高門檻通常會提高 precision,但可能只保留少量 calls。
  2. 在哪個資料集、用哪一份 truth set?Google 的 orthogonal-tools 共識與 SEQC2 的標註範圍與難度可能不同;是否限制在 內,也可能造成明顯差異。
  3. 測試資料是否參與閾值選擇或調參?若門檻在同一批測試資料上挑選,0.89 可能是 test-set overfitting 的樂觀估計,不代表泛化效能。

若資料可得,另應確認絕對數量是多少? precision 從 0.72 到 0.89,如果 TP 只有 20 個,那可能只是移除了少數幾個 FP, 統計不確定性可能較高;若未提供分母,比例的精確度難以評估。

實作練習

以標準化流程評估效能

除非已處理 variant normalization,否則不建議自行實作比對; 同一個 indel 可能有多種等價表示,多等位與複雜變異也需要額外處理。可使用專門工具:

# SNV / indel 的常用評估工具(hap.py)
docker run -v $(pwd):/data pkrusche/hap.py /opt/hap.py/bin/hap.py \
  /data/truth.vcf.gz \
  /data/query.vcf.gz \
  -f /data/high_confidence_region.bed \
  -r /data/reference.fasta \
  -o /data/result

-f關鍵參數之一:它限制在 benchmark 信心較高的區間內評估。 未限制區域時,應分層報告並說明標註信心,否則結果難以直接解讀。

解讀效能數字時的四項檢核

解讀效能數字時,可依序確認:

  1. 另一個指標呢?若只報 precision,應同時檢視 recall 的變化。
  2. 在哪個資料集、用哪一份標準答案、有沒有限制在高信心區間內?
  3. 測試資料是否參與過調參?若門檻在同一批測試資料上挑選,結果可能是對該資料集過度擬合的估計。
  4. 絕對數量是多少?precision 從 0.72 到 0.89,如果 TP 只有 20 個,統計上不穩定。

檢查訓練/測試資料是否存在洩漏

# 檢查訓練與測試的染色體名稱是否重疊(僅為初步檢查)
cut -f1 train_sites.tsv | sort -u > /tmp/train_chr
cut -f1 test_sites.tsv  | sort -u > /tmp/test_chr
comm -12 /tmp/train_chr /tmp/test_chr    # 有輸出表示染色體名稱重疊,仍需檢查座標與樣本

# 比較訓練與測試的類別比例
awk '{c[$NF]++} END {for (k in c) print k, c[k]}' train_sites.tsv
awk '{c[$NF]++} END {for (k in c) print k, c[k]}' test_sites.tsv

類別比例差異會影響評估:若訓練集的假陽性佔 4%、測試集佔 19%, 兩組資料的類別分布不同,不宜僅以 loss 判定模型優劣;仍應檢查其他特徵與品質分布。

學習檢核

本模組術語

F1
precision 與 recall 的調和平均。當資料裡 FN 遠多於 FP 時,precision 的改善對 F1 的影響有限 —— 見 M10。
cross-validation(交叉驗證)
輪流保留資料子集作為驗證折,用來估計模型的泛化能力與選擇設定;這些折是 validation,不是最終 test。最終測試集應在模型與設定確定後才使用,並另行保留。
data leakage(資料洩漏)
訓練或模型選擇階段取得了評估資料的資訊,讓效能被高估。實驗室的做法是按染色體切分,確保同一個位點不會同時出現在訓練、驗證與最終測試中。
distribution shift(分布偏移)
測試資料的組成與訓練資料存在顯著差異(例如正負樣本比例不同),使得模型表現不如預期。
high-confidence region
benchmark 建立者指定的高可信度區間,通常以 BED 檔表示;區間外不宜視為具有相同標註可靠度。
label noise(標籤雜訊)
訓練或評估標籤與真實狀態不一致的情況。在 homopolymer 與重複區域可能較常見;特徵相近的位點也可能得到相反標籤。
precision(精確率)
所有 calls 中實際為真陽性的比例:TP / (TP + FP)。後處理常以提升此指標為目標。
recall(召回率)
在指定評估範圍內,所有真陽性中被找出的比例:TP / (TP + FN)。若只對固定的 caller 候選集做後處理,recall 只能維持或下降,不能恢復 caller 從未輸出的真陽性;報告時應說清楚這個候選集範圍。
truth set(標準答案集)
評估用的參考標註。可靠度依資料來源與建立方法而異,困難區域可能包含標註錯誤。