跳到主要内容

C 讀程式:把論文數字和輸出對起來

導航:← B 特徵與模型 | 目錄 | D 統計與推論 →

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

先認識這些詞​

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

  • sklearn(scikit-learn):常用的 Python 機器學習套件,研究用它做獨立比對。
  • 獨立比對:用另一套獨立寫的計算結果,和原本的結果對照,確認沒有算錯。

目標​

讀完這課,你能選一個論文數字,找到它對應的輸出檔與程式,並用獨立方法重算一次。

前置​

先讀完 01、02,以及 B 課。

方法​

論文的數字不是憑空寫的,每個都來自某個輸出檔。對照步驟是:

  1. 在論文找到數字(例如 RQ1 中 Decentraland 的 +0.010)。
  2. 在 SUMMARY.md 或論文附註找到來源檔(例如 outputs/phase05/judge.csv)。
  3. 打開輸出檔,找到同一個數字。
  4. 用獨立方法重算(例如用 sklearn 的 AUC)。
  5. 確認兩者一致。

範例:RQ1 的 Decentraland 數字​

下面的練習以 RQ1 的 Decentraland 數字為例(R2 減最佳對照,+0.010)。

練習​

選一個數字自己做一遍。建議從 RQ1 的 R2 − 最佳對照(Decentraland,+0.010)開始。

1. 找到論文中的數字與來源檔。

看解答

論文中:R2 減最佳對照,Decentraland,+0.010 [0.007, 0.013](第 4 章 RQ1)。來源檔:outputs/phase04/decisions.json 的 rq1 欄位(Decentraland 的 diff)。

2. 找到來源檔中的同一數字。

看解答

在 decisions.json 中,Decentraland 的 diff 為 0.0103,區間為 [0.0073, 0.0128],與論文的 +0.010 [0.007, 0.013] 一致。

3. 寫一小段程式用獨立方法重算(可以只算點估計,不需要區間)。

看解答

用獨立方法:例如用同一批預測重新算 AUC 之差。若只有點估計,可以用 sklearn 的 roc_auc_score 比對 AUC;區間要用相同的重抽方法(本資料夾的 d_minus_e_check.py 就是示範)。

4. 記錄是否一致。

看解答

若一致,記下即可。若不一致,先不要改數字,把兩邊的數字與計算方法都記下來,再找原因(見下一題)。

注意​

  • 如果找不到對應的來源檔,記在 questions.md,不要自己猜。
  • 如果數字一致但你不懂它的意義,回頭讀對應的概念課。

檢核​

1. 一個論文數字需要哪三樣東西才能被驗證?

看解答

論文數字、可追溯的來源檔(含輸出與計算方式),以及一個獨立的重算方法。

2. 為什麼要用獨立方法重算,而不是只看程式自己的輸出?

看解答

因為程式不能檢查自己。如果用同一套程式重算,程式的錯誤會一起出現。獨立方法(例如 sklearn,或手算)能找出實作上的錯誤。

3. 如果重算結果和輸出差很多,你下一步會做什麼?

看解答

先檢查單位與版本是否一致(資料版本、種子、題數、區間方法)。如果原因仍不明,記入 questions.md 並告知作者;不要直接改論文數字。

導航​

引用文獻​

  • AUC 的定義:Hanley & McNeil (1982) [bib: hanley1982auc]。
  • 獨立比對使用 scikit-learn:Pedregosa et al. (2011) [未收入 bib]。
  • 可重現性的做法(預先登記、固定種子)是本研究的設計,見 doc/runbook/v13/SUMMARY.md §3。