S SealHack

主張登錄表與 LB 教條

方法論的每條主張都附可重跑的驗證實驗。登錄 14 條主張(C1a–C12),13 條文獻+沙盒雙驗證、C11 僅沙盒待補文獻,含官方反例(C3、C12 的 M4);修訂史全保留。

本頁內容

方法論不是文件,是一組可測試的主張。每條主張標註驗證等級:L1 = 文獻收斂(SOTA 系統獨立採用同設計)、L2 = 沙盒實驗證實(可執行,見下方腳本)、L3 = 實戰驗證(真比賽)。

這頁在講什麼

這裡是「憑什麼相信本站」的答案。 方法論不是意見,是一組可以被推翻的主張——每條都標了驗證等級,每條都附一支你能下載重跑的程式。其中有 4 條在實驗後被我們自己推翻並修正,修訂史全部保留。

等級白話
L1(文獻收斂)有原始論文或業界公認實務支持
L2(沙盒實驗)我們寫了程式跑過,結果附在下方腳本索引
L3(實戰驗證)在真實 Kaggle 比賽上驗證過(共 8 場)

你可能聽過的說法,以及我們實測的結果

學 ML 最貴的不是不知道,是相信了錯的事。下面每一條都是常見說法,右邊是我們自己跑出來的數字(不是引用別人的):

你可能聽過我們實測
「特徵加越多越好」五組候選特徵裡只有一組是真的——其餘四組的絕對分數看起來都沒問題,配對檢定卻是負的(case_s6e8_stage3.py)
「集成一定比單模好」要成員實力相近才有紅利。實力懸殊時集成反而低於最佳單模(s6e8),相近時才贏(spaceship)——兩邊的證據
「先把參數調好再說」同一份特徵:LightGBM 0.9625、邏輯迴歸 0.506(≈瞎猜)。選對模型家族的影響遠大於調參(case_s6e8.py)
「public 榜分數高就是好」我們全程只用交叉驗證(CV)做決策,最後私榜揭曉:四筆提交 private≈public,完全沒跳水(s6e8,2026-08-31)
「教科書特徵(總面積、屋齡)一定有用」三組經典房價特徵全被配對檢定否決——樹自己會組合面積(case_houseprices_v2.py)
「曲線下面積(AUC)題用 rank 平均比較好」只在成員分數尺度差很多時成立;尺度相近時反而略差(rank_vs_prob_auc.py)
「時間序列要用時間序列模型」多條序列 + 有促銷之類的共變量時,把它當迴歸做的梯度提升樹(GBDT)更好;但單一序列時經典統計法才對(case_storesales.py)
「多個隨機種子平均一定有用」模型若沒有隨機成分,平均是完全的空操作(房價案第一版逐值相同)——先確認你的模型真的有隨機性

這正是本站的立場:別人的方案是線索,不是結論。任何技巧都要在你自己的資料上重跑一次才算數。

主張登錄表(v2.2)

下表由 data/claims.json 渲染;每條主張連到它的驗證腳本(可直接下載重跑)。

#主張L1 文獻L2 沙盒L3 實戰證據 · 驗證腳本
C1a 時間資料隨機切比時間切虛高 ≥1.3×
修訂:門檻由絕對值改為相對比較(≥1.3×)
✓ 已驗證 ✓ 已驗證 進行中
隨機切高估 +0.1527 vs 時間切 +0.0978
C1b 持續概念漂移下,連時間切分 CV 仍樂觀,須預期上線衰減
修訂:驗證中新發現的副主張
✓ 已驗證 ✓ 已驗證 進行中
時間切仍高估 +0.0978
C2 Target encoding 不在 fold 內計算 = 洩漏,CV 虛高、實戰崩 ✓ 已驗證 ✓ 已驗證 進行中
洩漏版差 +0.0298 vs 正確版 +0.0052
C3 「實力相近 + 誤差多樣」的集成 > 最佳單模
修訂:補上『實力相近』前提;原版無前提時為官方反例
✓ 已驗證 ✓ 已驗證 進行中
+0.0024,三成員全被採用;反例:實力懸殊時 -0.0005
C4 CV 較差的模型仍可能因誤差方向不同而被集成採用 ✓ 已驗證 ✓ 已驗證 進行中
弱成員被納入最終集成
C5 消融盤點能正確排序組件的投資價值 ✓ 已驗證 ✓ 已驗證 進行中
掉分排序 A(強) > B(中) > C(噪音)
C6 Stacking 第二層必用 OOF;用 in-sample 預測 = 洩漏 ✓ 已驗證 ✓ 已驗證 進行中
in-sample 表面 1.0000 → 私榜 0.7760
C7a 小 public LB 的危險在適應性反覆使用的累積過擬合;單次判讀屬合法訊號
修訂:教條級修訂:『只信 CV』過度簡化,見 §13 四條
✓ 已驗證 ✓ 已驗證 ✓ 已驗證
public 引導採 3 次改動→私榜 0.7341;CV 引導採 1 次→0.7386;**L3 終審(s6e8 私榜 2026-08-31 揭曉)**:CV 引導的 4 筆提交 private≈public(0.96417/0.96389/0.96360/0.96332,差 ±0.00005)——無跳水
C7b CV 與私榜方向脫鉤可偵測 CV 切法錯誤
修訂:判準由絕對門檻改為 5 seeds 相對(換函式庫版本即翻盤)
✓ 已驗證 ✓ 已驗證 進行中
5 seeds:隨機切 ΔCV +0.013~+0.057、私榜 Δ -0.028~+0.005;GroupKF 更接近私榜;野外實例:watson NLI GroupKFold CV 0.400 vs LB 0.254(premise 反向記憶),去身分後 CV 0.463→LB 0.415(case_watson.py)
C8 代理實驗判定:ρ² > 成本比 是充分條件(保守下界)
修訂:由等價條件降為充分條件
✓ 已驗證 ✓ 已驗證 進行中
ρ²=0.44 代理贏;實測交叉點更低 ρ≈0.2~0.3
C9 小樣本決策:配對比較 + 平滑指標,解析度決定可見訊號,多切分決定可信度
修訂:由單次切分改為 20 切分分布陳述
✓ 已驗證 ✓ 已驗證 進行中
配對差 std ≈ 分數 std 的 1/4;票團有害 0/20、Title/family 僅 1/20
C10 填補洩漏分級:不碰目標=二階小量;碰目標=一階大量 ✓ 已驗證 ✓ 已驗證 進行中
中位數填補 |Δ|≈0.0001 vs 目標編碼 +0.030
C11 AUC 集成:rank 平均只在成員分數尺度差異大時有益;成員同為機率、尺度相近時無優勢、甚至略差
修訂:推翻框架原斷言『rank 平均通常比機率平均好』,改為條件式(2026-08-23,第 18 輪)
✓ 已驗證 進行中
尺度相近 20 seeds rank 勝 4/20、均值 −0.0005(合成 t=−4.59);尺度×50 時 10/10 勝、+0.0077(t=+9.55)
C12 多條相關序列+共變量:時序視窗化成迴歸、用全域 GBDT(lag/rolling/日曆)勝經典每序列統計;單變量少序列為反例(M4)
修訂:條件式主張,結構同 C3;L1:M5(IJF 2022)、Elsayed 2021、M4 反例(Smyl 2020)
✓ 已驗證 ✓ 已驗證 進行中
store-sales 三時間窗 3/3 勝:LGBM RMSLE 0.4007 vs 每序列 SES 0.4457 vs seasonal-naive 0.5661;真提交 LB 0.51465 vs naive 對照 0.57949
↓ 以下是示範案例(不是主張,是把方法論完整走一遍的實例)
demo 鐵達尼端到端示範:六階段全流程 + 真實 Kaggle 提交
修訂:v1 單次切分『集成降級 -0.043』被證為評估假象
✓ 已驗證 ✓ 已驗證
CV 0.8373 → public LB 單模 0.7488 / 集成 0.7727;內部驗證高估 0.06~0.09,雙提交保險兌現
multi 同一套 harness 方法論可完成不同任務型別的真實 Kaggle 競賽(二分類/迴歸/多分類/文字/時序) ✓ 已驗證 ✓ 已驗證
8 場真提交完賽(+watson 多語言 NLI code 賽),6 種型態、兩種賽制(prediction/code)、全簡單模型;同分布場次 CV→LB ≤0.002,結構性場次的偏差皆可診斷

LB 使用教條(v2.1 修訂——被 L2 實驗打臉後的誠實版)

原教條「只信交叉驗證(CV)」在 L2(沙盒實驗) 驗證中被證明過度簡化。修訂為四條:

  1. 迭代決策(幾十次適應性選擇)一律用 CV。 實驗:連續 30 次特徵開關,public(n=800) 引導接受 3 次噪音改動、私榜 0.7341;CV 引導只接受 1 次、私榜 0.7386。小樣本排行榜(LB)的危險在「反覆使用」的累積過擬合。
  2. 單次提交選擇、且 public 與 private 同分布時,public 是合法訊號。 實驗:一次性從 12 個候選中選擇,public 後悔值 0.00098 < CV 的 0.00184。此時 public 評的是「同一份預測、同一分布」,可與 CV 併用。
  3. 懷疑分布漂移時(adversarial 曲線下面積(AUC)高、時間切分、public 佔比極小)→ 回到只用 CV。
  4. CV 與 LB 方向脫鉤 = 切法錯誤警訊,立即回頭檢查。 實驗(5 seeds):group 資料加 group_id 特徵,隨機切 ΔCV +0.013~+0.057、私榜 Δ 卻是 -0.028~+0.005(脫鉤);GroupKFold 的 ΔCV 在 5/5 seeds 都比隨機切更接近私榜。

收斂聲明

登錄 14 條主張(C1a–C12):13 條達 L1(文獻收斂) + L2(沙盒實驗) 雙驗證,C11 目前僅 L2(rank 平均校準,文獻待補)。C12(時序迴歸框架)為條件式主張:L1 引 M5/Elsayed、以 M4 為官方反例,L2 用 store-sales 三時間窗 3/3 證實。驗證過程共推翻並修訂了四處原始表述(C1 門檻、C3 前提、C7a 教條、C8 條件強度),修訂史全數保留於登錄表;其中 C3 保留 1 個官方反例(集成無「實力相近」前提時反而有害)。L3(實戰驗證) 已從單點升級為七場實戰掃描(6 種任務型態、15 筆真提交、全簡單模型):同分布場次交叉驗證(CV)→排行榜(LB)落差 ≤0.002,異分布與時序場次如 C1a/C1b 預測地衰減。方法論層面就此收斂,後續修改須引新文獻或新增 L2 實驗,否則不動。

框架校準:我們測過的民間智慧(展開)

方法論不只收錄「大家都這麼說」的技巧——我們逐一實測了常見斷言。沒有一條校準是一開始就知道的,都是跑完實驗才修正措辭。結果分三類(全部可重跑,見下方腳本索引):

一、現代 GBDT 比民間智慧穩健(別過度操心)

  • rank 平均不是普遍較優:成員同為 [0,1] 機率、尺度相近時沒優勢甚至略差,只在尺度差異大時才有益(rank_vs_prob_auc.py)。
  • 「gain 高估高基數」是隨機森林 MDI 的毛病,LightGBM 相當穩健:histogram binning 抵消了「分裂點多」的優勢(importance_gain_vs_perm.py;原始偏誤出處 Strobl et al. 2007)。
  • 群組聚合的大頭是「加聚合本身」(+0.16):差值/比值相對原始聚合的額外增益很小(不到 0.004),模型多半能自行組合(group_aggregation_features.py)。
  • 多 seed 平均是保險:永遠不虧,但增益隨模型 seed 方差而定——穩定的 LightGBM 上很小(seed_averaging.py)。
  • frequency encoding 對樹的邊際小:給 LightGBM 已有的類別欄再加頻率,幾乎不加分(+0.0001;樹已學到每類別效果),對線性模型才明顯(frequency_encoding.py)。

二、根本限制:手動特徵真的補得上

  • 比值/除法:軸對齊的樹學不好,手動給 x/z 有效(線性 +0.007、樹 +0.003;ratio_feature.py)。
  • log1p 只在偏斜時有益:近對稱反而略差,target 的 skew 越重效益越大(log1p_regression.py)。

三、診斷工具:偵測強,行動需判斷

  • 對抗驗證:偵測分布漂移(adversarial 曲線下面積(AUC)0.5↔1.0)、定位漂移源特徵(8/8)是強項;但「丟棄」是條件式——純 ID/洩漏才丟,同時帶真訊號的別急著丟(adversarial_validation_test.py)。

一句話:很多表格建議源自舊模型(隨機森林、線性),現代梯度提升樹(GBDT)常已內建防護;真正該手動補的,是模型結構上學不好的形狀(比值、偏斜)與小樣本的統計工具(配對比較)。

驗證腳本索引

任何人可重跑。安裝依賴後,python validation/fetch_data.py 取得資料,再跑任一腳本(腳本已強制 UTF-8 輸出,Windows 也可)。

重跑全套:pip install -r validation/requirements.txt && python validation/fetch_data.py && python validation/run_all.py

腳本類型驗證什麼
claims_test.py 主張 C1/C2/C3/C4/C5(第一批;含被修訂的原始結論) 82.9
claims_v2.py 主張 C1 修訂 + C3 修訂(實力相近前提) 147.9
claims_v3.py 主張 C6/C7/C8(第二批;含被修訂的原始結論) 235.2
claims_v4.py 主張 C7a/C7b/C8 修訂(後悔值/洩漏特徵/充分條件) 68.4
claims_v5.py 主張 C7a 終版(適應性過擬合)+ C7b 終版(5 seeds) 192
small_n_paired.py 主張 C9/C10(20 切分,配對比較 + 填補洩漏分級) 251.9
case_titanic_v2.py 案例 鐵達尼六階段示範(20 切分分布) 492
submit_titanic.py 案例 鐵達尼真提交(產兩份 submission)
multi_case_real.py 案例 多案例真實資料(二分類/迴歸/多分類) 13
hill_climb_weights.py 模板 §6.1 hill_climb 權重記帳正確性 2.4
run_experiment_demo.py 模板 §3.3 run_experiment 協議可執行 4.3
harness_selftest.py 基礎 harness 三任務路徑(二分類/迴歸/多分類) 34.3
harness.py 基礎 通用實驗管線(被 import)
fetch_data.py 基礎 取得 Titanic 資料(sha256 校驗)
run_all.py 基礎 一鍵重跑全套 + 判決彙整
rank_vs_prob_auc.py 主張 C11 AUC rank 平均 vs 機率平均(尺度相近 vs 尺度差異大)
group_aggregation_features.py 主張 群組聚合:加聚合本身是大頭(+0.16),差值/比值額外增益小(<0.004)
seed_averaging.py 主張 多 seed 平均:更穩、不低於單 seed;增益隨模型方差而定(穩定模型小)
log1p_regression.py 主張 log1p(target):效益隨 target 偏斜度而定(近對稱略差、重偏斜大益)
adversarial_validation_test.py 主張 對抗驗證:偵測漂移 AUC 0.5↔1.0、定位源特徵 8/8;丟棄是條件式(純洩漏才丟)
importance_gain_vs_perm.py 主張 gain vs permutation 重要度:LightGBM gain 對高基數噪音穩健(9% 排 6/7);permutation 正確≈0
ratio_feature.py 主張 §5.2F 手動比值:x/z 訊號下,加比值特徵線性 +0.007、樹 +0.003(確認樹難自學除法)
frequency_encoding.py 主張 frequency encoding:對已有類別欄的 LightGBM 邊際小(+0.0001);對線性/類別難用時才有效
pseudo_labeling.py 主張 §6.3 偽標籤:標籤稀少 +0.0042(勝 6/8)、充足 −0.0026(勝 0/8)——資料不多時才值得
case_storesales.py 案例 C12 時序迴歸框架:三時間窗 LGBM 0.4007 < SES 0.4457 < naive 0.5661;LB 0.51465 vs 0.57949 306
case_watson.py 案例 多語言 NLI(code 賽):v1 隨機切 OOF 0.287<隨機→抓出 premise 群組;v2 GroupKFold CV 0.400 但 LB 0.254(C7b 野外脫鉤)→診斷 premise 反向記憶;v3 去 premise 身分 CV 0.463→LB 0.41520 204
naive_vs_method.py 主張 同模型裸版對照(方法論貢獻):watson +0.161、spaceship +0.019、house log1p −0.0033 RMSE、s6e8 +0.0002、nlp −0.003(怪 test,噪音內;OOF 端 +0.018) 600
case_spaceship_v2.py 案例 spaceship 階段3深化:cab_num t+10.37 留、group t+0.86 棄、log消費 t=nan(樹單調不變性實證) 78
case_spaceship_v3.py 案例 GroupKFold(團體) 重裁:cab_num t+20.77 真訊號;LB 0.80617 前 22.9%;v2 LB −.0007 為單讀噪音(自我糾錯) 42
case_houseprices_v2.py 案例 三組教科書特徵(TotalSF/屋齡/Qual×SF)配對檢定全否決;subsample+真5-seed平均 → LB 0.12574 前 29.6% 234
學術來源與延伸閱讀(展開)

本站的流程不是憑空主張——每個核心技術都對得上原始論文或業界公認的實務指南。以下引用皆經查證(附可驗證連結)。

核心技術的原始論文

技術(對應章節)來源連結
Stacking 堆疊(集成)Wolpert, Stacked Generalization, Neural Networks 5(2), 1992doi:10.1016/S0893-6080(05)80023-1
集成選擇 / 爬山(集成)Caruana, Niculescu-Mizil, Crew & Ksikes, Ensemble Selection from Libraries of Models, ICML 2004doi:10.1145/1015330.1015432
目標編碼(特徵迭代)Micci-Barreca, A Preprocessing Scheme for High-Cardinality Categorical Attributes, SIGKDD Explorations 3(1), 2001doi:10.1145/507533.507538
配對比較 / 交叉驗證(CV)推論(特徵迭代、小樣本)Nadeau & Bengio, Inference for the Generalization Error, Machine Learning 52, 2003 —— 重複 k 折配對 t 值膨脹、corrected resampled t-test 的依據doi:10.1023/A:1024068626366
知識蒸餾(集成)Hinton, Vinyals & Dean, Distilling the Knowledge in a Neural Network, NIPS 2014 WorkshoparXiv:1503.02531
偽標籤(集成)Lee, Pseudo-Label: The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks, ICML 2013 WorkshopICML 2013 WREPL
TabPFN(多樣化基線)Prior Labs & Univ. Freiburg, TabPFN-2.5: Advancing the State of the Art in Tabular Foundation Models, 2025arXiv:2511.08667
消融驅動選題(特徵迭代)Google, MLE-STAR: Machine Learning Engineering Agent via Search and Targeted Refinement, 2025arXiv:2506.15692

實務指南與知名專案

冠軍解法彙整(學別人怎麼贏)

怎麼配本站用

  1. 跟著快速版或完整 workflow 打一場真賽。
  2. 卡在某階段 → 去 faridrashidi/kaggle-solutions同題型的冠軍怎麼做那一步。
  3. 回本站對照方法論的原理(為什麼這樣做),不是只抄程式碼。
  4. 自己重跑驗證——用上方驗證腳本的協議(共用 fold、折外預測(OOF)落盤、配對比較),確認那招在你的資料上真的有效。

差異化不在「知道更多技巧」,在「知道怎麼問對、怎麼驗證」。技巧會過時,診斷與驗證的能力不會。