跳到主要内容

06 梯度提升:分類器只當黑箱看

導航:← 05 字典 | 目錄 | 07 洩漏 →

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

先認識這些詞​

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

  • 超參數:模型的設定數字,例如規則的最大深度、學習速度。要在看結果之前就事先決定。
  • GADBench:一篇比較各種「圖異常偵測」方法的基準研究。研究引用它來說明「樹模型常勝過圖神經網路」的發現一致。
  • 預測:用訓練好的模型對新資料給出分數。
  • 修訂紀錄:協定的修改記錄,寫明何時改、為什麼改。
  • 提案圖:把題目當成點,時間上重疊的題目之間連一條線,形成一張圖。圖上的點叫節點,線叫邊。

目標​

讀完這課,你能說出梯度提升的輸入、輸出,以及它在研究中扮演的角色。你不需要懂它的數學。

白話​

梯度提升是一種分類器。你給它很多題的特徵和答案(是不是灌票),它學會「看特徵猜答案」。

它的工作方式可以比喻成:一群很簡單的判斷規則,一個一個依序加進來,每個新規則專門修正前面規則犯的錯。最後把所有規則的意見加總。

研究中的流程是:特徵 → 梯度提升 → 每題一個分數 → 依分數排序 → 算 AUC。研究中,你只需要知道:

  • 輸入:每題的特徵(投票型態、時間、字典誤差等)。
  • 輸出:每題一個分數,代表「像灌票的程度」。
  • 訓練:用來源域的已知答案(注入的灌票 vs 正常)學習。

超參數​

研究中梯度提升的設定是:最大深度 6、學習率 0.1、最多 500 輪。

這些數字是事先定好的,不因結果調整(論文的預先登記規定)。它們記在 outputs/phase02b/decisions.json。

為什麼用它​

研究先試了學習式的圖神經網路(GNN,第一輪)。在預先登記的規則下,它沒有勝過同樣特徵的梯度提升:

來源域GNN(第一輪)梯度提升(同樣特徵)
Decentraland0.9190.968
Polis0.9520.984
YelpNYC0.9550.989

(來源:round2_protocol.md 第 7 行。)

這與 GADBench 的觀察一致:對表格型的特徵,樹模型常比神經網路好。GADBench 是另一個研究,這裡只說明結果相符,不是本研究的證據。

第二輪的 R2 就是梯度提升加上三組特徵(時間圖、對齊、字典),見 B 課與 05 課。

看這裡​

  • src/rq1.py 的 _gbm:建立梯度提升模型的函式。
  • src/r2.py:把特徵組起來,交給模型。
  • src/novvc.py 的 train:訓練跨域模型的入口。

問自己​

1. 模型訓練時,有沒有看到檢驗題的答案?

看解答

不應該。訓練只用來源域的資料(或參照題與注入資料),檢驗題的答案不進入訓練。這要在程式中逐一確認(A、B 課)。

2. 模型在檢驗題上的預測,是用哪些特徵算出來的?

看解答

跨域版本只用目標域也有的特徵(投票型態、時間圖、對齊後的數字、字典重建誤差)。帳號歷史只在來源域內使用,跨域時不用。

3. 如果超參數調整到檢驗題上最好,會有什麼問題?(這是下一課「洩漏」的一種。)

看解答

這是洩漏:檢驗題的表現決定了模型的設定,成績會被高估。防法是超參數事先登記,並且在看到結果之前就定好。

練習​

用一句話回答:如果你不懂梯度提升的數學,你能判斷研究的結果可不可信嗎?

看解答

可以部分判斷,但要靠流程檢查,不靠數學:訓練資料有沒有混入檢驗題、超參數是不是事先定的、結果有沒有用獨立方法驗證。這三點不需要懂梯度提升的數學。

檢核​

1. 梯度提升的輸入和輸出是什麼?

看解答

輸入:每題的特徵。輸出:每題一個分數,數字越大代表越像灌票。

2. 研究的超參數是事後調的嗎?怎麼知道?

看解答

沒有事後調。超參數記在第 2 階段的 outputs/phase02b/decisions.json,第 5 階段協定也寫明「不調參」。可以在協定與修訂紀錄中查證。

3. 為什麼研究選擇梯度提升而不是 GNN?

看解答

同樣的特徵下,梯度提升比 GNN 好。論文的解釋是:提案圖上鄰居提供的額外資訊很少,樹模型能直接利用特徵之間的交互作用;這與 GADBench 的發現一致。

導航​

引用文獻​

  • Friedman, J. H. (2001). Greedy function approximation: A gradient boosting machine. The Annals of Statistics, 29(5), 1189–1232. [未收入 bib]
  • Pedregosa, F., et al. (2011). Scikit-learn: Machine learning in Python. Journal of Machine Learning Research, 12, 2825–2830. [未收入 bib] — 研究使用的 HistGradientBoosting 實作。
  • Tang, J., Hua, F., Gao, Z., et al. (2023). GADBench: Revisiting and benchmarking supervised graph anomaly detection. NeurIPS Datasets and Benchmarks. [bib: tang2023gadbench] — 論文以它說明「樹模型常勝過 GNN」的發現一致。