閾值調整 是什麼?
Threshold Adjustment:閾值調整 的完整解釋
改變分類模型的決策閾值來權衡精確率和召回率的技術,預設閾值通常為 0.5,調整閾值可適應不同業務需求
核心概念
閾值調整解決的是「模型訓練」和「業務需求」之間的鴻溝。模型訓練通常優化整體準確度或 F1-score,用固定的 0.5 閾值。但業務中,精確率和召回率的重要性往往不對等。例如,醫療診斷應用中,漏診一個患者的代價遠大於誤診一個健康人,應優先提升召回率。銀行貸款審批中,批准一個高風險客戶的代價遠大於拒絕一個低風險客戶,應優先提升精確率。
閾值調整的核心思想是:模型輸出的概率本身是正確的,只是決策的邊界需要移動。降低閾值會增加正例預測,提升召回率但降低精確率;提高閾值會減少正例預測,提升精確率但降低召回率。
閾值調整與重新訓練的關鍵差異:重新訓練改變模型參數,代價大;閾值調整只改變預測規則,代價極低。
運作原理
概率到預測的轉換
標準的邏輯迴歸模型輸出概率 p(樣本屬於正例的概率)。決策規則為:
- 如果 p >= threshold,預測為正(1)
- 如果 p < threshold,預測為負(0)
預設 threshold = 0.5。調整意味著改變這個邊界值。
精確率-召回率的權衡
給定模型的概率輸出,降低 threshold:
- 更多樣本被預測為正
- 真正例數量增加(發現更多正例)
- 假正例數量也增加(誤報增加)
- 結果:召回率上升,精確率下降
提高 threshold:
- 更少樣本被預測為正
- 真正例數量減少(漏掉一些正例)
- 假正例數量減少(減少誤報)
- 結果:精確率上升,召回率下降
選擇最優閾值的方法
基於 F1-score 的選擇
F1 = 2 * (精確率 * 召回率) / (精確率 + 召回率)
在驗證集上,遍歷多個 threshold 值(如 0.1, 0.2, ..., 0.9),計算各 threshold 下的 F1-score,選擇 F1 最高的 threshold。這種方法假設精確率和召回率的代價相同。
基於成本函數的選擇
定義成本函數: Cost = FP_cost * FP + FN_cost * FN
其中 FP_cost 是假正例的成本,FN_cost 是假負例的成本。遍歷 threshold,選擇使成本最小的 threshold。這種方法更靈活,適應不同業務成本。
例如,醫療診斷中 FN_cost >> FP_cost(漏診代價大),優化後的 threshold 會很低,導致高召回率。
基於精確率-召回率曲線的選擇
PR 曲線繪製不同 threshold 下的(召回率,精確率)點。根據業務目標在曲線上選擇點。例如,目標是 95% 精確率,找曲線上對應的點,讀出對應的 threshold 和召回率。
基於 ROC 曲線的選擇
ROC 曲線繪製不同 threshold 下的(假正例率,真正例率)點。根據業務需求選擇點。例如,可容忍 5% 假正例率,在曲線上找對應點。
實際應用
醫療診斷:降低閾值到 0.3,提升患病樣本的召回率,寧可誤診也不要漏掉患者。
垃圾郵件檢測:提高閾值到 0.8,確保被標記為垃圾郵件的郵件確實是垃圾,避免誤殺正常郵件。
信用卡欺詐檢測:降低閾值到 0.4,優先發現欺詐交易,可在用戶確認後解除誤判。
貸款審批:提高閾值到 0.7,確保批准的客戶確實低風險,寧可拒絕邊界客戶。
推薦系統:調整閾值控制推薦的「激進程度」。低閾值推薦更多內容,高閾值只推薦高確信的內容。
廣告投放:降低閾值提升廣告觸及面,提高閾值提升點擊率。
常見誤區
誤區 1:0.5 是最優閾值。0.5 只是約定俗成的預設值,對大多數應用都不是最優。應該根據業務需求調整。
誤區 2:調整閾值可以改進模型本身的質量。閾值調整不改變模型的決策邊界形狀,只改變邊界位置。如果模型本身性能差,調閾值幫助不大。
誤區 3:只需調整一次閾值,永遠使用。隨著數據分布變化(data drift),最優閾值也會變化。應定期重新評估和調整。
誤區 4:閾值調整會改變 AUC。AUC 是閾值無關的指標,與特定閾值無關。調整閾值不影響 AUC,只影響精確率、召回率等點性指標。
與相關技術的比較
閾值調整 vs. 成本敏感學習:成本敏感學習在訓練階段就融入成本信息,通過加權損失等方式優化模型。閾值調整在推理階段改變決策。成本敏感學習適合成本信息已知且穩定,閾值調整適合成本經常變化或訓練時未知。
閾值調整 vs. 類別權衡:類別權衡在訓練時改變類別的重要性,閾值調整在推理時改變決策邊界。兩者都影響精確率-召回率權衡,但時機和實施方式不同。
閾值調整 vs. 模型重訓練:重訓練需要重新優化模型參數,代價大但效果可能更好。閾值調整無須重訓,快速低成本。應優先嘗試閾值調整,只有在無法滿足需求時才考慮重訓練。