C 讀程式:把論文數字和輸出對起來
每題的解答都收合在題目下方:先自己作答,再點開「看解答」核對。
先認識這些詞
這一課新出現的詞如下(前面課程已解釋過的詞不重複,完整列表見 術語表)。
- sklearn(scikit-learn):常用的 Python 機器學習套件,研究用它做獨立比對。
- 獨立比對:用另一套獨立寫的計算結果,和原本的結果對照,確認沒有算錯。
目標
讀完這課,你能選一個論文數字,找到它對應的輸出檔與程式,並用獨立方法重算一次。
前置
先讀完 01、02,以及 B 課。
方法
論文的數字不是憑空寫的,每個都來自某個輸出檔。對照步驟是:
- 在論文找到數字(例如 RQ1 中 Decentraland 的 +0.010)。
- 在
SUMMARY.md或論文附註找到來源檔(例如outputs/phase05/judge.csv)。 - 打開輸出檔,找到同一個數字。
- 用獨立方法重算(例如用 sklearn 的 AUC)。
- 確認兩者一致。
範例: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。