題幹與適用場景
一個詐欺模型為每筆交易輸出 0 到 1 的風險機率。業務想把 0.8 作為人工審核門檻。請說明如何判斷這些機率是否校準,如何區分排序能力與機率可信度,如何選擇校準方法,並處理類別不平衡、資料漂移與審核容量限制。
PracHub 在 2026 年公開的機器學習面試題中直接詢問 model calibration、reliability diagram、ECE、Brier score 與門檻選擇;scikit-learn 文件提供機率校準、分箱可靠性圖與獨立校準資料的實作邊界。本文不綁定特定公司。
面試官考察點
普通回答會說「看準確率或 AUC」。強回答先定義機率含義:在預測約為 0.8 的樣本中,長期實際正例比例應接近 0.8。接著把可靠性、區分度、基準率與業務門檻分開,說明為何高 AUC 仍可能機率過度自信。
面試官還會檢查資料切分是否洩漏、校準集是否代表線上分布、分箱樣本量是否足夠,以及校準後是否重新驗證決策成本。校準不是讓模型變「更聰明」,而是讓分數具備可解釋的機率尺度。
回答前需要釐清的問題
- 機率用於什麼決策? 如果只排序,AUC 和 top-k 可能足夠;若按機率分配審核容量或計算預期損失,必須重視校準。
- 標籤何時可得? 詐欺確認可能延遲,評估窗口必須等待標籤成熟,否則把未確認當負例會扭曲校準。
- 線上正例率與訓練集相同嗎? 採樣、加權或時間變化會改變先驗,需在目標分布評估或做先驗修正。
- 每個分群都要可信機率嗎? 高風險業務通常需要按地區、渠道或產品分群檢查,整體校準可能掩蓋局部失真。
- 審核容量和錯誤成本是什麼? 門檻是業務決策,不是由校準曲線自動產生;需要容量、誤報與漏報代價。
30 秒回答框架
「我先確認機率是否直接用於審核決策,並等待標籤成熟。校準的含義是預測 0.8 的樣本實際正例率約為 0.8。我在與訓練獨立且代表線上分布的校準集上畫 reliability diagram,同時報告分箱樣本量、ECE 與 log loss;Brier 作為綜合評分,不能單獨解釋校準。再按業務成本選門檻,檢查 AUC 是否保持、各分群是否失真,並在時間窗口上監控先驗與校準漂移。若失真,先嘗試 sigmoid;資料足夠且形狀非線性時用 isotonic,所有校準器都不能用訓練預測擬合。」
分步驟深入解答
第一步:把校準和排序拆成兩個問題
| 維度 | 機率校準 | 排序或區分度 |
|---|---|---|
| 問題 | 預測機率是否匹配實際發生率 | 正例是否整體排在負例之前 |
| 典型工具 | Reliability diagram、ECE、log loss、Brier 分解 | ROC-AUC、PR-AUC、top-k lift |
| 業務用途 | 預期損失、審核容量、風險分層 | 找出優先處理的樣本 |
| 典型失敗 | 機率普遍偏高但排序仍好 | 排序好卻無法解釋 0.8 的真實含義 |
二分類校準要求:對預測機率接近 p 的樣本,實際正例頻率也接近 p。AUC 只依賴排序,單調的機率轉換可以保持 AUC 不變,因此不能用 AUC 取代校準檢查。
第二步:畫可靠性圖並報告不確定性
把預測機率劃分為若干區間,每個區間計算平均預測機率和實際正例比例,橫軸畫平均預測值,縱軸畫正例比例;理想情況接近對角線。每個分箱同時顯示樣本數或直方圖,避免少量樣本的高分箱造成過度解讀。
from sklearn.calibration import CalibrationDisplay
from sklearn.metrics import log_loss
display = CalibrationDisplay.from_predictions(
y_true=y_cal,
y_prob=p_cal,
n_bins=10,
strategy="quantile",
)
loss = log_loss(y_cal, p_cal)分箱邊界不是客觀真理:等寬分箱在極不平衡資料上可能大部分為空,分位數分箱則改變每箱機率範圍。樣本少時應顯示信賴區間、合併稀疏箱或使用可重現的最佳化分箱方法,而不是只看一條折線。
第三步:理解 ECE、Brier 與 log loss 的邊界
ECE 通常按分箱計算預測均值與實際頻率的加權絕對差,容易溝通但依賴分箱數量和規則。Brier score 是機率預測的均方誤差,log loss 強調自信且錯誤的預測;兩者同時受可靠性、區分度與標籤不確定性影響。
因此不能說「Brier 更低就一定校準更好」。應結合可靠性圖、分箱樣本量、分解後的可靠性項,以及同一時間窗口上的 log loss。論文也指出可靠性圖的樸素分箱會受實作選擇影響,需要報告方法和不確定性。
第四步:在不洩漏的切分上校準
模型訓練集上的預測已被模型看過,用它擬合校準器會產生過度樂觀的映射。正確順序是:訓練基礎模型;在獨立校準集或交叉驗證的折外預測上擬合校準器;最後在未參與任何擬合的測試集評估。
train: fit base model
calibration: fit calibrator on out-of-fold or held-out probabilities
test: evaluate calibration, ranking, and business threshold once時間序列或延遲標籤場景要按時間切分,不能隨機打亂未來資訊。校準集必須與線上流量的正例率、特徵分布和標籤成熟窗口相近;否則測到的是訓練採樣分布,而非業務要使用的機率。
第五步:選擇校準方法和門檻
sigmoid/Platt scaling 用一維邏輯回歸把原始分數映射到機率,資料較少、失真大致呈 S 形時更穩。isotonic regression 更靈活,但參數更多,校準樣本不足時容易過擬合。溫度縮放常用於多分類 logits,但同樣需要獨立驗證。
校準方法決定機率尺度,門檻仍由業務成本決定。假設人工審核每天只能處理 2,000 筆,就按容量、誤報成本、漏報成本和延遲損失選擇門檻;不要因為「0.8 看起來合理」就直接上線。門檻變更需在代表性回放和線上護欄中驗證。
第六步:處理類別不平衡與線上漂移
過採樣、類別權重與 focal loss 可能改變模型分數的機率含義。若訓練正例率是 10%,線上只有 2%,即使排序穩定,直接使用訓練分布的機率也可能失準;應在目標先驗上重新評估,必要時做先驗修正或重新校準。
上線後按時間滾動計算可靠性圖、ECE、log loss 和實際正例率,按渠道、地區與客戶層級切片。季節性、策略改變與標籤延遲都會造成漂移。觸發條件可以是校準誤差超過業務容忍度、關鍵分群失真或先驗變化超過門檻;觸發後用新鮮且標籤成熟的資料重訓校準器。
高品質示範回答
「我會先問這組機率是否直接驅動審核、標籤何時成熟,以及線上正例率是否與訓練採樣一致。校準的定義是:所有預測約為 0.8 的交易,長期實際詐欺率應約為 0.8。評估集必須與訓練獨立、按時間等待標籤成熟,並代表線上分布。
「我先畫 reliability diagram,顯示每箱樣本量和信賴區間,再報告 ECE、log loss 和 Brier;Brier 不能單獨當校準證明,因為它也包含區分度。AUC 用來回答排序,不回答機率是否可信。失真較小或近似 S 形時用 sigmoid,資料量足夠且需要非線性映射時嘗試 isotonic,不能用訓練集預測擬合校準器。
「最後按審核容量和錯誤成本選門檻,按渠道和地區檢查局部校準。線上滾動監控先驗、標籤成熟後的可靠性和 log loss,出現漂移再用代表性新資料重新校準。高 AUC 但高估風險的模型仍不能直接把 0.8 當成真實風險。」
常見錯誤
- 錯誤表現 → 用準確率或 AUC 證明機率可信 → 失敗原因 → 這些指標不回答預測值是否匹配實際頻率 → 修正方法 → 使用可靠性圖、分箱樣本量和校準指標。
- 錯誤表現 → 用訓練集預測擬合校準器 → 失敗原因 → 過擬合映射會在新樣本上失準 → 修正方法 → 使用折外預測或獨立校準集。
- 錯誤表現 → 只報一個 ECE 數字 → 失敗原因 → ECE 受分箱規則和稀疏樣本影響 → 修正方法 → 同時報分箱策略、圖、樣本量和不確定性。
- 錯誤表現 → 看到 AUC 高就把 0.8 當審核門檻 → 失敗原因 → 排序好不代表機率尺度正確 → 修正方法 → 以審核容量和錯誤成本選擇門檻。
- 錯誤表現 → 忽略採樣和基準率變化 → 失敗原因 → 校準對象變成訓練分布而非線上人群 → 修正方法 → 在目標分布評估並監控先驗漂移。
追問及應對
如果 AUC 很高但 reliability diagram 呈 S 形,怎麼辦?
保留基礎模型的排序能力,先在獨立資料上嘗試 sigmoid 或 isotonic 校準,再重新評估校準、AUC 和業務成本。單調校準通常不會改變排序,但仍需實測切分是否正確。
如果正例標籤要 30 天後才確定呢?
建立標籤成熟窗口,只用已經過 30 天的樣本評估和擬合校準器。近期樣本可監控預測分布和延遲,但不能把未確認事件當作負例計算可靠性。
如果不同地區的校準曲線差異很大呢?
先檢查樣本量、標籤定義和基準率,再決定全局校準器、分群校準器或分群門檻。若分群器資料不足,寧願使用更穩的全局映射並加區間監控,也不要為雜訊擬合獨立曲線。