主張登錄表與 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(沙盒實驗) 驗證中被證明過度簡化。修訂為四條:
- 迭代決策(幾十次適應性選擇)一律用 CV。 實驗:連續 30 次特徵開關,public(n=800) 引導接受 3 次噪音改動、私榜 0.7341;CV 引導只接受 1 次、私榜 0.7386。小樣本排行榜(LB)的危險在「反覆使用」的累積過擬合。
- 單次提交選擇、且 public 與 private 同分布時,public 是合法訊號。 實驗:一次性從 12 個候選中選擇,public 後悔值 0.00098 < CV 的 0.00184。此時 public 評的是「同一份預測、同一分布」,可與 CV 併用。
- 懷疑分布漂移時(adversarial 曲線下面積(AUC)高、時間切分、public 佔比極小)→ 回到只用 CV。
- 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), 1992 | doi:10.1016/S0893-6080(05)80023-1 |
| 集成選擇 / 爬山(集成) | Caruana, Niculescu-Mizil, Crew & Ksikes, Ensemble Selection from Libraries of Models, ICML 2004 | doi:10.1145/1015330.1015432 |
| 目標編碼(特徵迭代) | Micci-Barreca, A Preprocessing Scheme for High-Cardinality Categorical Attributes, SIGKDD Explorations 3(1), 2001 | doi: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 Workshop | arXiv:1503.02531 |
| 偽標籤(集成) | Lee, Pseudo-Label: The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks, ICML 2013 Workshop | ICML 2013 WREPL |
| TabPFN(多樣化基線) | Prior Labs & Univ. Freiburg, TabPFN-2.5: Advancing the State of the Art in Tabular Foundation Models, 2025 | arXiv:2511.08667 |
| 消融驅動選題(特徵迭代) | Google, MLE-STAR: Machine Learning Engineering Agent via Search and Targeted Refinement, 2025 | arXiv:2506.15692 |
實務指南與知名專案
- NVIDIA / Kaggle Grandmasters(Titericz、Deotte),The Kaggle Grandmasters Playbook: 7 Battle-Tested Modeling Techniques for Tabular Data(2025)—— 本框架六階段流程的主要藍本。
- MLWave,Kaggle Ensembling Guide(原站已下線,連 Wayback 存檔;程式碼仍在)—— 集成實務的經典入門。
- Abhishek Thakur,Approaching (Almost) Any Machine Learning Problem—— 端到端解題流程的免費書(含 PDF)。
- Chris Deotte,《Winning a Kaggle Competition with Generative AI–Assisted Coding》(2026)——「先診斷再讓 AI 動手」的實戰印證。
- Carlens, H.,《State of Machine Learning Competitions in 2025》,ML Contests—— 解題地圖三軸與軌道分類的實證基礎。
冠軍解法彙整(學別人怎麼贏)
- faridrashidi/kaggle-solutions —— 上百場競賽的冠軍方案、討論串、notebook 彙整,持續更新(也有網站版 farid.one/kaggle-solutions)。最推薦的起點。
- EliotAndres/kaggle-past-solutions —— 可搜尋/排序的歷屆解法索引,用來按題型找靈感。
- kyaiooiayk/Kaggle-Competitions-Analysis —— 除了解法連結,還附「takeaway」重點整理,適合快速看方法。
- lmassaron/Machine-Learning-on-Tabular-Data —— Manning 表格資料 ML 書的程式碼(XGBoost / LightGBM / 深度學習)。
怎麼配本站用
- 跟著快速版或完整 workflow 打一場真賽。
- 卡在某階段 → 去 faridrashidi/kaggle-solutions 找同題型的冠軍怎麼做那一步。
- 回本站對照方法論的原理(為什麼這樣做),不是只抄程式碼。
- 自己重跑驗證——用上方驗證腳本的協議(共用 fold、折外預測(OOF)落盤、配對比較),確認那招在你的資料上真的有效。
差異化不在「知道更多技巧」,在「知道怎麼問對、怎麼驗證」。技巧會過時,診斷與驗證的能力不會。