D 讀程式:統計函式與共形推論
導航:← C 結果對照 | 目錄 | E 外部名單與測試 →
每題的解答都收合在題目下方:先自己作答,再點開「看解答」核對。
先認識這些詞
這一課新出現的詞如下(前面課程已解釋過的詞不重複,完整列表見 術語表)。
- 共形推論:一種用「校準集」算出每題誤判率的方法,不需要模型一定正確。
- 加權:給每題不同的權重(次數),讓它在計算時佔不同的份量。
- 校準集:已知正常的一組題目,用來決定判斷的標準。
- 可達性:規則能不能被滿足的檢查。例如某個判定規則在最理想的情況下都做不到,那就不可能用它得出結論。
目標
讀完這課,你能說出論文中每個區間與判定是用哪個函式算的,並用手算驗證一個小例子。
前置
先讀完 02、08。
讀的順序
- AUC 與 bootstrap(
src/audit.py):auc(第 65 行)、boot_ci(第 73–88 行)。 - 兩層與交叉區間(
src/selfinj.py):WeightedAUC、boot_weights(第 142–160 行)、diff_ci(第 163–168 行)。 - 共形推論與 BH(
src/rq3.py、src/cad2.py):_bh(第 21–28 行)、_simes(第 31–34 行)、conformal_p、collective_p。
第一步:boot_ci
白話:兩組各自重抽,算 AUC 很多次,取 2.5% 與 97.5% 分位。
問自己
1. 重抽時,正例和負例是各自抽嗎?
看解答
是的。boot_ci 分別對正例與負例做有放回抽樣(rng.integers),兩組互不影響。
2. 程式註解說它和逐次重算 auc() 的結果相同,但速度快數百倍。這個說法需要驗證。
看解答
這是程式註解的說法,本資料夾尚未驗證。要驗證,需用相同的隨機種子,比較兩種算法的結果(見下方練習)。
練習:取一個小資料集,分別用 boot_ci 和「逐次重算 auc」算區間(用相同的隨機種子),比較結果。
看解答
取一個小資料集,用相同種子分別呼叫 boot_ci 與逐次重算的 auc,比較兩組區間。若完全相同(或只差浮點誤差),代表速度優化沒有改變結果。練習需要在本機執行程式,不需要修改任何檔案。
第二步:_bh 與 _simes
白話:BH 決定標記哪幾題;Simes 判斷整批有沒有可疑的題。
練習:用 08 課的例子,手算 BH 與 Simes,並和程式結果比對。
看解答
用 08 課的例子,BH 標記第 1、2 題,Simes 整批 p 值為 0.005,與程式結果一致(見 08 課的解答)。
第三步:WeightedAUC 與兩層區間
白話:兩層區間同時重抽「實驗次數」和「題目」。WeightedAUC 讓每題有不同權重,不用重新排序,所以快。
問自己
1. 權重為 0 的題,會不會影響 AUC?(應該不會。)
看解答
正確。權重為 0 的題在計算中佔 0 的份量,等於不存在。
2. 兩層區間為什麼比抽樣層級寬?
看解答
因為它同時重抽了「實驗次數」與「題目」,多了一層題目的變異,所以區間通常比抽樣層級寬。
練習:用 d_minus_e_check.py 的第 3 節,確認加權 AUC 與 sklearn 的 sample_weight 版本一致。
看解答
用 d_minus_e_check.py 的第 3 節:加權 AUC 與 sklearn 的 sample_weight 版本的最大差應接近 0(我們執行時約 2×10⁻¹⁶)。
第四步:共形推論(src/cad2.py、src/rq3.py)
白話:共形推論是一種給每題「誤判率」的方法。它不需要模型是對的,只需要校準資料與目標題的交換性。
問自己
1. 校準集和要判斷的題目,是不是同一批?如果是,結果會偏樂觀。
看解答
會偏樂觀。同一批題目既拿來定標準、又拿來判斷,等於用答案來決定標準,誤判率的保證就失效了。
2. 可達性條件 π·α·(n+1) ≥ 1 是什麼意思?(代表校準集太小時,連一題都標不出來。)
看解答
π·α·(n+1) ≥ 1 的意思是:校準集太小時,即使最極端的分數,也無法達到 α 的門檻,所以連一題都標不出來。
檢核
1. 兩層的區間用哪個函式算?
看解答
selfinj.diff_ci(兩層,two_level=True)。
2. 兩層與抽樣層級的差別在哪一行程式體現?
看解答
在 selfinj.boot_weights(約第 142–160 行)中:two_level 為 False 時只重抽抽樣;為 True 時,還要在每個抽樣內重抽題目。
3. 為什麼共形推論的校準集不能和判斷的題目重疊?
看解答
否則同一批題目既定標準又被判斷,誤判率的保證失效。校準集與判斷的題目應該分開。
導航
引用文獻
- Efron & Tibshirani (1993) [未收入 bib] — bootstrap。
- Hanley & McNeil (1982) [bib: hanley1982auc] — AUC。
- Benjamini & Hochberg (1995) [未收入 bib] — BH。
- Simes (1986) [未收入 bib] — 整批檢定。
- Bates et al. (2023) [bib: bates2023conformal];Hennhöfer & Preisach (2024) [bib: hennhofer2024conformal];Vovk et al. (2005) [bib: vovk2005algorithmic] — 共形推論。