跳到主要内容

D 讀程式:統計函式與共形推論

導航:← C 結果對照 | 目錄 | E 外部名單與測試 →

每題的解答都收合在題目下方:先自己作答,再點開「看解答」核對。

先認識這些詞​

這一課新出現的詞如下(前面課程已解釋過的詞不重複,完整列表見 術語表)。

  • 共形推論:一種用「校準集」算出每題誤判率的方法,不需要模型一定正確。
  • 加權:給每題不同的權重(次數),讓它在計算時佔不同的份量。
  • 校準集:已知正常的一組題目,用來決定判斷的標準。
  • 可達性:規則能不能被滿足的檢查。例如某個判定規則在最理想的情況下都做不到,那就不可能用它得出結論。

目標​

讀完這課,你能說出論文中每個區間與判定是用哪個函式算的,並用手算驗證一個小例子。

前置​

先讀完 02、08。

讀的順序​

  1. AUC 與 bootstrap(src/audit.py):auc(第 65 行)、boot_ci(第 73–88 行)。
  2. 兩層與交叉區間(src/selfinj.py):WeightedAUC、boot_weights(第 142–160 行)、diff_ci(第 163–168 行)。
  3. 共形推論與 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] — 共形推論。