在二分類問題中,已知預測概率(如邏輯回歸、神經網絡輸出的概率值)時,閾值的選擇直接影響分類結果(正/負樣本判定)。
一、實踐中的閾值選擇方法
1. 基于業務目標的調整
- 最大化準確率:適用于樣本均衡且無特殊代價偏好,通常選閾值0.5(默認設置),但需驗證是否最優。
- 最大化召回率(靈敏度):如欺詐檢測、疾病篩查,需降低閾值(如0.3),允許更多誤報以減少漏報。
- 最大化精確率:如推薦系統,需提高閾值(如0.7),確保高置信度預測。
2. F1分數最大化
F1分數是精確率和召回率的調和平均,公式為:
F 1 = 2 ? 精確率 ? 召回率 精確率 + 召回率 F1 = 2 \cdot \frac{\text{精確率} \cdot \text{召回率}}{\text{精確率} + \text{召回率}} F1=2?精確率+召回率精確率?召回率?
遍歷閾值,找到使F1最大的點,尤其適用于樣本不平衡場景。
3. 可視化工具輔助
- Precision-Recall曲線:觀察不同閾值下精確率和召回率的權衡,選擇符合業務目標的交點。
二、理論上的最優閾值點
但有時,到甲方做POC時,作為外部的技術人員并不懂它的業務,這時需要先從理論上給出閾值。
1. 貝葉斯決策理論:最小錯誤率閾值
當誤分類代價相等時,根據貝葉斯決策理論,最優閾值應使整體分類錯誤率最小,對應公式為:
閾值 = P ( 負類 ) P ( 正類 ) = 負類先驗概率 正類先驗概率 \text{閾值} = \frac{P(\text{負類})}{P(\text{正類})} = \frac{\text{負類先驗概率}}{\text{正類先驗概率}} 閾值=P(正類)P(負類)?=正類先驗概率負類先驗概率?
- 原理:若預測概率 p ≥ 閾值 p \geq \text{閾值} p≥閾值,判為正類;否則判為負類。
- 適用場景:樣本均衡(正負類先驗概率接近)且誤分類成本相同。
2. 約登指數(Youden’s Index)最大化
約登指數定義為 靈敏度(真陽率) + 特異度(真陰率) - 1,其最大值對應的閾值是理論上平衡靈敏度和特異度的最優解:
閾值 = arg ? max ? τ ( TPR ( τ ) + TNR ( τ ) ? 1 ) \text{閾值} = \arg\max_{\tau} \left( \text{TPR}(\tau) + \text{TNR}(\tau) - 1 \right) 閾值=argτmax?(TPR(τ)+TNR(τ)?1)
- 優勢:無需考慮誤分類成本,僅基于數據本身的分布,是ROC曲線中離左上角(完美分類點)最近的點。
- 計算:遍歷所有可能的閾值(通常取預測概率的唯一值),計算對應的約登指數并取最大值。
3. 最小化預期誤分類成本(Cost-Sensitive)
當正負樣本誤分類代價不同(如漏診代價高于誤診),閾值需根據代價矩陣調整:
閾值 = C ( 正類→負類 ) ? P ( 負類 ) C ( 負類→正類 ) ? P ( 正類 ) \text{閾值} = \frac{C(\text{正類→負類}) \cdot P(\text{負類})}{C(\text{負類→正類}) \cdot P(\text{正類})} 閾值=C(負類→正類)?P(正類)C(正類→負類)?P(負類)?
- C ( 正→負 ) C(\text{正→負}) C(正→負):正類誤判為負類的代價(如漏判疾病);
- C ( 負→正 ) C(\text{負→正}) C(負→正):負類誤判為正類的代價(如誤報疾病)。
- 示例:若漏判代價是誤報的10倍,閾值應降低以減少漏判。
3. 可視化工具輔助
- ROC曲線:雖然AUC不直接給出閾值,但ROC曲線上的“拐點”(曲率最大點)常被經驗性選為閾值。
三、一個數學推導與幾何意義
理論上的“最優點”本質是目標函數的最優解,需根據問題特性(成本、均衡性、業務需求)選擇合適的標準,而非單一固定值。
ROC曲線上的“拐點”(曲率最大點)可作為理論上的閾值,有很強的幾何意義:它既是約登指數最大的點,又是平行于對角線(過(0,0)和(1,1)的直線與ROC的切點,即:ROC曲線上切線與對角線(斜率1)平行的點,是約登指數最大的點,也是幾何上離對角線最遠的“拐點”(切點)。
如下從數學角度證明:
1. 對角線的斜率與切線條件
對角線方程為 TPR = FPR \text{TPR} = \text{FPR} TPR=FPR,斜率為1。
設ROC曲線為 TPR = f ( FPR ) \text{TPR} = f(\text{FPR}) TPR=f(FPR),曲線上某點的切線斜率為 f ′ ( FPR ) f'(\text{FPR}) f′(FPR)。
當切線與對角線平行時,有:
f ′ ( FPR ) = 1 f'(\text{FPR}) = 1 f′(FPR)=1
2. 約登指數最大化與切線條件
約登指數 J = f ( FPR ) ? FPR J = f(\text{FPR}) - \text{FPR} J=f(FPR)?FPR,對 FPR \text{FPR} FPR求導并令導數為0:
d J d FPR = f ′ ( FPR ) ? 1 = 0 ? f ′ ( FPR ) = 1 \frac{dJ}{d\text{FPR}} = f'(\text{FPR}) - 1 = 0 \quad \Rightarrow \quad f'(\text{FPR}) = 1 dFPRdJ?=f′(FPR)?1=0?f′(FPR)=1
這表明約登指數最大的點恰好滿足切線斜率為1,即切線與對角線平行。
3. 幾何意義:離對角線最遠的點
對角線代表“隨機分類器”(無區分能力),ROC曲線上任意點 ( FPR , TPR ) (\text{FPR}, \text{TPR}) (FPR,TPR)到對角線的垂直距離為:
d = ∣ TPR ? FPR ∣ 2 d = \frac{|\text{TPR} - \text{FPR}|}{\sqrt{2}} d=2?∣TPR?FPR∣?
最大化 d d d等價于最大化 ∣ TPR ? FPR ∣ |\text{TPR} - \text{FPR}| ∣TPR?FPR∣。由于ROC曲線中 TPR ≥ FPR \text{TPR} \geq \text{FPR} TPR≥FPR(模型至少不劣于隨機分類器),故等價于最大化 TPR ? FPR \text{TPR} - \text{FPR} TPR?FPR,即約登指數 J J J。
因此,切線平行于對角線的點,正是ROC曲線離對角線最遠的點,幾何上表現為曲線的“拐點”(曲率較大的切點)。
注:
- 數學拐點:嚴格定義為二階導數變號的點(曲線凹凸性改變的點),與切線斜率無關。
- 此處“拐點”:實際指約登指數最大的切點,強調幾何上離對角線最遠、切線斜率為1,而非嚴格數學拐點。
- 曲率最大點:通過曲率公式 κ = ∣ f ′ ′ ∣ ( 1 + f ′ 2 ) 3 / 2 \kappa = \frac{|f''|}{(1 + f'^2)^{3/2}} κ=(1+f′2)3/2∣f′′∣?計算,可能與切線斜率為1的點重合(當二階導數在此處達到極值時),但二者定義不同。
- 實際應用中,約登指數最大的點更關注業務意義(平衡TPR和FPR),而非純數學曲率。
實例驗證
假設某模型的ROC曲線方程為 TPR = FPR \text{TPR} = \sqrt{\text{FPR}} TPR=FPR?(凸曲線),求切線斜率為1的點:
- 導數 f ′ ( FPR ) = 1 2 FPR = 1 f'(\text{FPR}) = \frac{1}{2\sqrt{\text{FPR}}} = 1 f′(FPR)=2FPR?1?=1,解得 FPR = 0.25 \text{FPR} = 0.25 FPR=0.25,對應 TPR = 0.5 \text{TPR} = 0.5 TPR=0.5。
- 該點切線方程為 TPR = FPR + 0.25 \text{TPR} = \text{FPR} + 0.25 TPR=FPR+0.25,確實平行于對角線,且約登指數 J = 0.5 ? 0.25 = 0.25 J = 0.5 - 0.25 = 0.25 J=0.5?0.25=0.25為最大值。
- 幾何上,該點到對角線的距離為 0.25 2 \frac{0.25}{\sqrt{2}} 2?0.25?,是曲線上的最大距離點。