題目與適用情境
一個詐欺偵測模型的驗證集包含 100,000 筆交易,其中 1,000 筆是詐欺,正樣本率為 1%。模型回報 99% 的準確率。人工團隊每天最多審核 1,000 筆警示;漏掉一筆詐欺、誤擋一位正常使用者和審核一筆警示的成本不同。請判斷模型是否有效,選擇上線門檻,並說明離線評估與上線監控方案。
這道題適用於資料科學、機器學習工程和風控職缺。核心任務不是背出一個「適合不平衡資料」的指標,而是把混淆矩陣、排序品質、業務成本、處理容量和機率品質連成可執行的決策。本文把 1% 正樣本率、100,000 筆驗證資料和每天 1,000 筆審核容量當作面試計算假設;它們不是通用的產業參數。
面試官評估重點
第一項是能否識別準確率陷阱。若把所有交易都預測為正常,準確率已經是 99%,但召回率為 0。只說「改用 F1」仍然不夠,因為 F1 預設同等看待精確率和召回率,也沒有表達真負例、審核容量或兩類錯誤的不同成本。
第二項是能否區分模型排序與業務決策。AUROC 與平均精確率等指標評估多個門檻下的排序表現;線上系統最後仍要選一個操作點。強回答會在同一份混淆矩陣上報告精確率、召回率、偽陽性率、警示數量與成本,並解釋門檻為何符合目前容量。
第三項是實驗是否沒有洩漏。模型訓練、機率校準、門檻選擇和最終評估不能反覆使用同一批標籤。強回答會在交叉驗證或獨立驗證集上選門檻,把最終測試集保留到決策凍結之後,並讓驗證與測試資料維持接近正式環境的類別比例。
第四項是上線後能否發現失效。類別基準率、使用者族群、分數分布和標籤延遲都會改變已選操作點的表現。面試官希望聽到依時間與關鍵分群監控,而不是把一次離線分數當成永久結論。
回答前需要釐清的問題
- 正類代表什麼,哪一類錯誤比較昂貴? 詐欺漏判通常帶來損失,誤報還可能造成審核成本和使用者摩擦。若情境是疾病篩檢或垃圾郵件,兩類錯誤的意義與成本會改變目標指標。
- 模型輸出是排序分數還是可信的機率? 固定容量下取分數最高的 1,000 筆,主要依賴排序品質;若要用金額計算期望損失,分數還需要經過校準,才能接近可解讀的機率。
- 審核容量是硬上限還是平均預算? 硬上限適合用 top-k、precision@k 和 recall@k;可以彈性擴充時,能直接比較不同門檻的增量收益與增量成本。
- 標籤多久才會回來? 拒付可能數週後才確認。標籤延遲會使當日精確率無法取得,需要同時監控無標籤的前置信號,並依成熟標籤視窗回算指標。
- 正式環境的正樣本率是否與驗證集一致? 精確率會隨基準率變化。若驗證集經過過度取樣或低度取樣,必須在保留正式環境比例的資料上重新評估操作點。
- 錯誤成本是否隨交易金額或使用者分群變化? 一筆高額詐欺和小額詐欺的損失不同,單一全域門檻可能不如分群策略或逐筆期望成本決策。
30 秒回答架構
「99% 準確率不能證明模型有效,因為全部預測為正常也能達到 99%,卻會漏掉所有詐欺。我會先在保留正式環境基準率的獨立驗證集上,列出各候選門檻的 TP、FP、FN、TN,再報告精確率、召回率、偽陽性率和警示量。若每天只能審核 1,000 筆,我會評估 top 1,000 的 precision@k 與 recall@k;若成本可量化,就最小化漏判、誤報和審核的總期望成本。AUROC 和 PR/平均精確率用來比較排序,不能取代操作點。門檻與機率校準只在訓練外資料上完成,最終測試集只驗收一次;上線後依基準率、分群、容量和標籤成熟視窗監控。」
分步深入解析
第一步:先建立無技巧基準線和完整混淆矩陣
全部預測為正常時有 99,000 個真負例和 1,000 個偽負例,準確率為 99%,召回率為 0。這條基準線說明 99% 準確率只反映類別數量,無法證明模型找到任何詐欺。
假設兩個候選門檻在同一驗證集上產生以下結果:
| 分數門檻 | TP | FP | FN | TN | 警示數 | 精確率 | 召回率 | F1 | 準確率 | 偽陽性率 | |---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| | 0.80 | 700 | 300 | 300 | 98,700 | 1,000 | 70% | 70% | 70% | 99.4% | 0.303% | | 0.50 | 850 | 1,650 | 150 | 97,350 | 2,500 | 34% | 85% | 48.6% | 98.2% | 1.667% |
門檻 0.50 多找出 150 筆詐欺,卻多產生 1,350 個誤報和 1,500 筆總審核工作。門檻 0.80 的準確率和 F1 較高,門檻 0.50 的召回率較高;這些差異不是要讓某個指標自動勝出,而是把業務取捨明確化。
第二步:分別評估排序、操作點和機率
AUROC 衡量隨機正例排在隨機負例之前的機率,可用來比較跨門檻的排序能力。類別極度不平衡時,大量真負例可能讓很低的偽陽性率看起來不錯,但絕對誤報量仍然很大,因此還要看精確率—召回率曲線和平均精確率。PR 視角直接顯示「送出的警示有多少是真的」和「找回了多少正例」,但它會隨正樣本率變化,不能脫離資料分布比較。
最終業務決策會落在一個門檻或 top-k。固定 1,000 筆容量時,門檻 0.80 在這份驗證集上剛好產生 1,000 筆警示,對應 precision@1000 為 70%、recall@1000 為 70%。正式流量和分數分布會變化,更穩妥的容量策略是每天排序後取 top 1,000,並持續報告這兩個指標,而不是假設 0.80 永遠產生相同數量。
只有當分數被當作機率使用時,才要求校準語意。例如校準後的 0.8 應表示同類預測中約 80% 實際為正。可以用可靠度圖、Brier 分數等檢查校準,並在獨立資料或交叉驗證的 out-of-fold 預測上擬合校準器。固定 top-k 主要需要穩定排序,不要求每個分數都完美校準;按金額計算期望成本則需要可信機率。
第三步:把門檻選擇寫成成本規則
令 CFN 為漏掉一筆詐欺的平均成本,CFP 為誤報帶來的使用者摩擦成本,不含人工審核,CR 為審核一筆警示的成本。一個門檻的驗證集成本可寫成:FN × CFN + FP × CFP + 警示數 × CR。
從 0.80 降到 0.50,收益是少漏 150 筆詐欺,代價是新增 1,350 個誤報和 1,500 次審核。依本題假設,只有當 150 × CFN > 1,350 × CFP + 1,500 × CR,降低門檻才比較划算;約分後為 CFN > 9 × CFP + 10 × CR。這是依示例混淆矩陣推導的決策邊界,不是通用常數。
若 1,000 筆是不可突破的硬上限,門檻 0.50 即使期望收益較高也無法直接上線。可選方案包括只審核 top 1,000、對高信心低風險警示自動處理,或替不同金額和族群設定不同佇列;每種方案都要重新計算容量、使用者傷害與可復原性。
第四步:處理基準率變化
精確率不只由模型決定,也由正樣本率決定。給定召回率 TPR、偽陽性率 FPR 和正樣本率 p,精確率為 TPR × p ÷ [TPR × p + FPR × (1 - p)]。
門檻 0.80 在示例中的 TPR 為 70%,FPR 為 0.303%。正樣本率為 1% 時,代入公式得到約 70.0% 的精確率;若模型的 TPR 與 FPR 不變,但正樣本率降至 0.5%,精確率會降至約 53.7%。因此,離線測試集必須保留正式環境基準率,上線後也要監控基準率和分群變化。重新取樣可以幫助訓練,卻不能把重新取樣後的類別比例直接當成線上評估分布。
第五步:設計無洩漏評估與上線監控
先依時間切分訓練、驗證與最終測試資料,並在需要時增加使用者、裝置或事件的分組限制,防止關聯樣本跨集合洩漏。訓練模型後,用交叉驗證或獨立驗證資料完成超參數、校準器與門檻選擇;決策凍結後只在測試集評估一次。若門檻調整工具內部使用交叉驗證,也要確認沒有把訓練同一模型的整批資料直接拿來調門檻。
上線儀表板至少分兩層。即時層監控分數分布、警示量、top-k 截止點、審核佇列等待時間、關鍵分群和系統錯誤;成熟標籤層回算 precision@k、recall@k、FN 成本、FP 成本、校準誤差和與離線預期的差距。門檻調整應重用同一套成本與容量規則,並在時間外資料上重播,不能因單日波動追著標籤移動。
高品質示範回答
「我不會先接受 99% 準確率。驗證集中只有 1% 詐欺,全部預測為正常也有 99% 準確率,但召回率是 0。我會先確認正類定義、三類成本、每天 1,000 筆審核是否為硬上限,以及標籤延遲。
在給定結果裡,0.80 門檻產生 700 個 TP、300 個 FP、300 個 FN 和 98,700 個 TN,精確率與召回率都是 70%,警示剛好 1,000 筆。0.50 門檻把召回率提高到 85%,但警示增至 2,500 筆,超出容量;它多抓 150 筆詐欺,同時新增 1,350 個誤報和 1,500 次審核。我會用 CFN > 9 × CFP + 10 × C_R 判斷降低門檻的增量價值,但容量是硬限制時,會先依分數取 top 1,000,再報告 precision@1000 和 recall@1000。
模型比較階段我會同時看 AUROC 與 PR/平均精確率,最後用混淆矩陣和成本選操作點。若分數參與金額決策,我會在訓練外資料上校準;若只做 top-k,重點驗證排序穩定性。門檻、校準與超參數都在驗證或交叉驗證中完成,最終測試集保留正式環境類別比例並只驗收一次。
上線後我會同時監控警示容量和成熟標籤指標。因為即使 TPR 與 FPR 不變,正樣本率從 1% 降到 0.5% 也會把示例精確率從約 70.0% 拉到 53.7%,所以還要依時間與關鍵分群檢查基準率、分數分布和校準漂移。」
常見錯誤
- 只比較準確率 → 全負預測已經達到 99%,指標無法證明找到了正例 → 先給無技巧基準線,再列混淆矩陣、精確率、召回率和絕對警示量。
- 看到不平衡就固定選 F1 → F1 隱含精確率與召回率等權,也忽略容量和真負例 → 依錯誤成本選擇 F-beta、成本函數或固定容量指標。
- 宣稱 PR 一定優於 ROC → 兩者回答的問題不同,PR 還依賴正樣本率 → 用 AUROC 檢查排序,用 PR/AP 檢查正類警示品質,再單獨選操作點。
- 直接採用 0.5 預設門檻 → 統計模型的預設切點不等於業務最佳點 → 在訓練外資料上依成本與容量調整門檻。
- 在訓練資料上調門檻 → 門檻會配合訓練誤差,最終分數過度樂觀 → 使用交叉驗證的 out-of-fold 預測或獨立驗證集,並保留最終測試集。
- 在重新取樣的測試集上報精確率 → 人工類別比例改變了精確率與警示量 → 在接近正式環境基準率的資料上驗收,重新取樣只用於訓練。
- 把原始分數直接當機率 → 未校準的 0.8 不一定代表 80% 發生率 → 需要期望成本時驗證並校準機率;只排序時說清楚分數語意。
- 上線後只監控 AUROC → 整體排序穩定仍可能掩蓋容量溢出、分群失效或基準率變化 → 同時監控操作點、佇列、成本和成熟標籤指標。
追問與應對
追問一:審核容量從 1,000 筆降到 500 筆怎麼辦?
重新評估 precision@500、recall@500 和前 500 筆的期望淨收益,不要按比例猜原門檻。若高金額交易的收益較大,可以依逐筆期望損失排序,而不是只按詐欺機率排序;同時檢查這種排序是否讓某些使用者分群承受不成比例的誤擋。
追問二:標籤要 60 天才成熟,怎麼監控模型?
把監控拆成即時代理信號與延遲結果。即時看輸入缺漏、分數分布、警示量、人工處理結果和佇列等待時間;依事件發生日建立固定成熟視窗,60 天後回算同一批樣本的精確率、召回率和成本。代理信號只用於預警,不能當成最終標籤指標。
追問三:新市場的詐欺率只有 0.5%,能沿用門檻嗎?
不能只憑舊市場的 70% 精確率決定。若 TPR 70% 和 FPR 0.303% 能移轉,精確率仍會因基準率下降而變成約 53.7%;實際 TPR/FPR 也可能因族群變化而漂移。應在新市場的時間外樣本上重估混淆矩陣、校準與容量,再依同一套成本規則選操作點。
追問四:AUROC 提升了,但 top 1,000 的精確率下降,該選哪個模型?
若線上只能處理 top 1,000,局部排序品質直接決定收益,應優先滿足 precision@1000、recall@1000 和成本限制。AUROC 涵蓋所有門檻,提升可能發生在業務不會使用的區域。還要用信賴區間或重複時間切片確認 top-k 差異不是抽樣雜訊。
追問五:不同交易金額可以使用同一個門檻嗎?
統一門檻實作簡單,卻把一元誤判和萬元誤判視為相同。機率已校準且成本可估時,可依逐筆期望損失決策,或按金額分層設定門檻;接著驗證總容量、分群公平性、可解釋性和回復路徑。樣本太少的分層不應獨立調參,以免門檻追隨雜訊。