返回 López de Prado

研究回顧 · ensembles & feature importance · 研究 09

Ensembles & Feature Importance

在加密貨幣、股票與外匯共 40 種工具上,bagging 的泛化能力比 boosting 好約 4.8 倍,卻仍然產生不出可交易的優勢

López de Prado 對金融資料上的機器學習提出三項清晰且可檢驗的主張:在帶噪、序列重疊的標籤上,bagging 的泛化能力優於 boosting;樣本內的 MDI 重要度帶有替代偏誤,而樣本外的 MDA 則沒有;以及分類器應以機率型損失(而非準確率)來調參。本研究在 40 種工具上對這三項主張進行多市場、完全計入成本、控制資料洩漏的檢驗,27 個加密永續、5 檔美股 ETF 與 8 個外匯主要貨幣對,並採用 purged cross-validation 與 Deflated Sharpe 門檻。三項主張都乾淨地複現。但沒有任何一項換得可交易的優勢。

來源

Advances in Financial ML,第 6 & 8 章

López de Prado (2018) · ensembles & feature importance

程式碼與資料

lopez-de-prado-work-review / projects / 09

the claim

López de Prado 的主張

  • 在金融資料上 bagging 的泛化能力優於 boosting:標籤帶噪且序列重疊,因此 boosting 會藉由重新加權困難(常被錯誤標註)的樣本去追逐這些雜訊而過擬合,而 bagging 則對去相關的樹取平均,更為穩健。
  • MDI 特徵重要度有偏誤,它是樣本內的,且對相關特徵會機械性地被高估(替代效應);應改用樣本外、以排列為基礎的 MDA,並把相關特徵聚成 cluster、對整個 cluster 進行排列,以去除此偽影。分類器應以機率型損失(log-loss)而非準確率來調參。

our result

我們的發現

  • 三項主張在三個市場的 40 種工具上都乾淨地複現:bagging 的 IS→OOS 泛化落差比 boosting 小約 5 倍(100% 的工具,p=1.8e-12, boosting 確實把 OOS log-loss 推過了擲硬幣水準);MDA 基本上無偏誤(ρ 0.07 對 MDI 0.49);以 log-loss 調參勝過以準確率調參(p=8.3e-6)。
  • 兩點誠實的修正:在這組 10 個特徵上,clustered-MDA 換來的是選擇穩定度,而非去偏(單獨的 MDA 才是去偏工具);而所選的特徵集只比隨機略為穩定一點。
  • 誠實的結論:40 種工具中有 0 種明確超過 DSR > 0.95。更好的泛化是優勢的必要條件,但非充分條件,這是一次乾淨的方法論勝利,卻零可交易的 alpha。

三行看結果

40 種工具 · 3 個市場

bagging 的泛化能力比 boosting 好約 4.8 倍

以教科書方式構建的 RandomForest,其樣本內到樣本外的 log-loss 落差比 HistGradientBoosting 緊約 4.8 倍,並在全部 40 種工具上皆如此(Wilcoxon p = 1.8e-12)。boosting 藉由記住帶噪、重疊的標籤把樣本內 log-loss 壓到約 0.25,隨後付出代價:樣本外 log-loss 超過擲硬幣水準(ln2 ≈ 0.693)。第一項處方毫不含糊地成立。

MDI ρ 0.49 · MDA ρ 0.07

MDI 有替代偏誤;MDA 沒有

Mean-Decrease-Impurity 的重要度與一個特徵和其餘特徵的相關程度呈秩相關(ρ ≈ 0.49),即替代偽影。樣本外的排列度量、以 log-loss 計分的 MDA,幾乎完全沒有這種現象(ρ ≈ 0.07;在 88% 的工具上低於 MDI,p = 1.2e-6)。數個被 MDI 看重的特徵得到負的 MDA,把它們排列反而改善樣本外 log-loss。轉折在於:在這組 10 個特徵上,clustered-MDA 換來的是選擇穩定度,而非去偏。

0 / 40 明確超過 DSR > 0.95

更好的泛化不等於優勢

誠實的結論。兩種 ensemble 在 40 種工具中的任何一種上,都產生不出接近可發表門檻 0.95 的 Deflated Sharpe Ratio,兩者每筆下注的中位 Sharpe 皆為負;bagging 在泛化之爭中決定性勝出,卻在 DSR 之爭中毫無勝績(配對 p = 0.74)。一次乾淨的方法論複現,得到的卻是優勢為零的結果;這個分野正是重點所在。

主張 1, bagging vs boosting,在 40 種工具上

boosting 記住訓練集,然後在樣本外付出代價

Fig. 1:bagging 在每一種工具上都勝過 boosting。左:每個點是某工具的 boosting(HGB)IS→OOS log-loss 落差對其 bagging(RF)落差;全部 40 點都在對角線之上,boosting 處處過擬合更嚴重(Wilcoxon p = 1.8e-12)。右:各市場的樣本內對樣本外 log-loss。boosting 把樣本內 log-loss 壓到約 0.25(遠低於擲硬幣上限 ln2 ≈ 0.693),但其樣本外 log-loss 卻超過該水準(加密與外匯約 0.81)。bagging 讓兩者都保持接近(約 0.57 → 約 0.68)。

第一項處方毫不含糊地成立。以教科書方式構建的 RandomForest,其樣本內到樣本外的 log-loss 落差比 HistGradientBoosting 緊約 4.8 倍,並在三個市場的全部 40 種工具上皆如此(配對 Wilcoxon p = 1.8e-12)。

其機制正是教科書所述。在兩個真正帶噪的市場,加密與外匯,boosting 的額外容量被用於擬合帶噪、序列重疊的標籤:其樣本內 log-loss 崩落到約 0.25,遠低於擲硬幣上限,但其樣本外 log-loss 卻比擲硬幣還差(約 0.81 > ln2 ≈ 0.693)。bagged forest 從不記憶,它讓樣本內維持在約 0.57、樣本外維持在約 0.68,樣本外始終處於擲硬幣水準或更低。股票對兩種模型都偏低則是另一個原因:類別不平衡的標籤(基準率約 0.17),森林在樣本內可輕易預測。

bagging IS→OOS 落差

0.114

RandomForest,以 NLL 調參

boosting IS→OOS 落差

0.539

HistGradientBoosting

落差比

4.8×

boosting 過擬合更嚴重

RF < HGB

100%

佔 40 種工具

配對 Wilcoxon

1.8e-12

p 值

DSR > 0.95

0 / 40

任一 ensemble

市場RF ISRF OOSHGB ISHGB OOS
加密貨幣27 個永續0.5690.6800.2550.809
股票5 檔 ETF0.1340.5570.1530.659
外匯8 個主要貨幣對0.5690.6770.2770.808

各市場的中位 log-loss,以 NLL 調參。boosting 的樣本外 log-loss 在加密與外匯超過擲硬幣水準(ln2 ≈ 0.693),比擲硬幣還差。bagging 的則處處維持在該水準或以下。

探索過擬合

同一效應,一次看一種工具或一個市場。每個數字都是真實的逐工具面板結果,以 NLL 調參、purged-CV、計入成本。

選一個市場以查看其面板的中位數,或深入單一工具。左圖將 bagged forest 與 boosted trees 的樣本內與樣本外 log-loss 和擲硬幣線相對照;右圖顯示三種重要度度量的替代偏誤。boosting 的樣本內長條遠低於擲硬幣,它已記住標籤,而其樣本外長條通常會超過該線。

Demo, bagging vs boosting 過擬合探索器

boosting 把樣本內 log-loss 壓到遠低於擲硬幣(它記住了訓練集),但其樣本外 log-loss 卻超過擲硬幣。bagged forest 讓樣本內與樣本外保持接近。右側面板:只有 MDA 的重要度沒有替代偏誤。

以 NLL 調參 · purged-CV · 計入成本
市場(面板中位數)
……或單一工具
RF(bagging)IS→OOS 落差
0.113
HGB(boosting)IS→OOS 落差
0.550
boosting / bagging 落差比
4.9×
HGB 樣本外 對 擲硬幣
0.808 > ln2, 比擲硬幣還差
log-loss, 樣本內 對 樣本外0.000.250.500.751.00擲硬幣 ln2 ≈ 0.6930.57RFIS0.68RFOOS0.26HGBIS0.81HGBOOSbagging (RF), 綠 · boosting (HGB), 紅
替代偏誤, ρ(重要度, |corr|)-0.50.00.51.0MDI0.49MDA0.12clust-MDA0.55接近 0 = 無偏(綠) · 接近 +0.5 = 有替代偏誤(紅)

加密貨幣:27 種工具的中位數。boosting 的樣本內 log-loss 為 0.255(遠低於擲硬幣 ln2 ≈ 0.693, 它已記住標籤),但其樣本外 log-loss 為 0.808, 超過擲硬幣。bagged forest 讓樣本內維持在 0.569、樣本外維持在 0.680,落差小了 4.9×。替代偏誤 ρ(重要度, |corr|):MDI 0.491、MDA 0.115、clustered-MDA 0.552, 只有 MDA 接近零。

此面板在多次執行間以位元相同的方式複現(全程 random_state = 0,BLAS/OMP 鎖定為每個行程一條執行緒)。非 sklearn 的熱迴圈,sequential-bootstrap 抽樣與共事件計數/平均標籤唯一度,皆經 JIT 編譯,並對純 Python 參考實作驗證為位元相同。

Fig. 2:逐特徵的 MDI(樣本內、有偏)對 MDA(樣本外排列),每市場一種工具。MDA 轉為負值之處,例如股票與外匯中的 mom6/mom12/vol,排列該特徵會改善樣本外 log-loss:模型過度倚賴它。MDI 卻把這些相同的特徵列為高分。

主張 2, MDI 有偏誤,MDA 沒有

Mean-Decrease-Impurity 是在樣本內計算的,且對相關特徵會被機械性地高估:一個方法的重要度最終與每個特徵和其餘特徵的相關程度呈秩相關(ρ ≈ 0.49,在外匯最高,達 0.67)。momentum 區塊與波動度區塊瓜分了不純度的功勞並互相抬高。樣本外的排列度量,以 log-loss 計分的 MDA,幾乎完全沒有這種現象(ρ ≈ 0.07;在 88% 的工具上低於 MDI,p = 1.2e-6)。引人注目的是,數個被 MDI 列為高分的特徵得到的 MDA:把它們排列反而改善樣本外 log-loss,可見模型過度倚賴雜訊。MDI 留下它們;MDA 則把它們標記為有害。

誠實的轉折在於,在這組特徵上 clustered-MDA 並未去除偏誤。僅 10 個特徵收斂成約 5 個 cluster,相關特徵落入同一 cluster,因此整個 cluster 的排列仍把大量重要度歸給該相關 cluster,而把它展開回各特徵時又重新引入了與 |corr| 的關聯(ρ ≈ 0.52,在統計上與 MDI 無法區分,p = 0.22)。clustering確實換來的是選擇的穩定度:收斂替代特徵使各 CPCV 路徑間 top-3 的 Jaccard 從 MDA 的 0.26 升到 0.46(p = 1.8e-12)。MDA 本身的選擇在 98% 的工具上確實高於隨機基準(0.20),但僅勉強穩定,在此任務上不應過度詮釋「頂部特徵」。

Fig. 3:左:各工具的替代偏誤 ρ(重要度, |corr|), MDI 與 clustered-MDA 集中在約 +0.5,只有 MDA 跨越零。右:top-3 選擇穩定度(15 條 CPCV 路徑的平均 Jaccard)。MDI 的 0.58 正是被那個使它不可信的偏誤抬高的;clustering 把 MDA 從 0.26 升到 0.46;MDA 本身只比 0.20 的隨機基準略高。
方法偏誤 ρ穩定度備註
MDI0.4850.582樣本內基準,有偏
MDA0.0730.263樣本外排列,無偏
clustered-MDA0.5170.463穩定度,而非去偏
random baseline, 0.20110 個特徵中隨機取 3 個

在 40 種工具的面板上取中位數。偏誤 ρ 是一個方法的重要度與每個特徵平均 |相關| 之間的 Spearman 相關;穩定度是 15 條 CPCV 路徑間 top-3 的平均 Jaccard。教訓:在小而中度相關的特徵集上,MDA,而非 clustered-MDA,才是去偏工具;當有許多高度相關的特徵需要吸收時,clustering 才更重要。

用正確方式衡量這項修正

按 cluster 而非按特徵計算重要度

Fig. 5:BTCUSDT 上的 clustered feature importance。左:依 1−|相關| 的 Ward 樹狀圖,side/mom6/mom12/rsi block 與 vol/range_atr block 緊密合併。中:clustered MDI(cluster 內求和)與 clustered MDA(置換整個 block);圓點標出最佳單一成員的 flat MDI, C1 從 0.148(最佳成員)躍升至 0.385(cluster)。右:purged folds 間的排名穩定度,clustering 把 MDI 從 0.89 提到 0.97、把 MDA 從 0.12 提到 0.30。

上一個面板衡量 clustered-MDA 的方式,正是它常被誤用的方式,把相關特徵 聚成 cluster,再把分數展開回個別特徵。這樣做,它仍然會追蹤 |相關|。但這並非 López de Prado 的 clustered feature importance 的用途。正確的修正是在 cluster 層級讀取分數:把相關特徵分組,對整個 block 做置換 或求和,且絕不重新分配回成員。在同一個 BTCUSDT triple-barrier 任務上,351 個 事件、10 個特徵,依 1−|ρ| 的 Ward linkage 聚成 6 個 cluster,這正是治癒替代效應 之道。

相關的動量/side block(C1:side、mom6、mom12、rsi)逐特徵來看只算中等,其最佳 單一成員的 flat MDI 為 0.148。作為單一 cluster 計分時,它是唯一 的主導驅動因子,達 0.385,約為其最佳成員的 2.6 倍:替代效應原本拆成四份的不純度信用被重新合併。去稀釋是 具體可見的,重要度向量的 Gini 從 0.205(flat)升到 0.337(clustered)。而且 cluster 層級的排名在 purged folds 間穩定得多:clustered-MDA 的 fold 穩定度約為 ~0.30,相對於 flat 的 ~0.12,約 2.5 倍,因此 clustering 在它被設計的軸上確實奏效。

clusterclustered MDI最佳成員 MDIclustered MDA
C10.3850.1480.074
C50.2130.1130.032
C20.1530.1530.024
C30.0940.0940.004
C40.0860.0860.009
C60.0690.069-0.000

cluster 層級重要度,BTCUSDT(以 neg-log-loss 調參的 RF、purged CV)。clustered MDI 為 cluster 內不純度之和;clustered MDA 置換整個 block。對單一成員的 cluster(C2–C4、C6),cluster 分數等於其唯一成員。替代效應只在某個 cluster 含有多個相關特徵時可見(C1、C5):此時 cluster 分數超過其最佳成員,重新合併被拆分的信用。C1 是唯一的主導驅動因子,達 0.385,約為其最佳單一特徵的 2.6 倍。

Fig. 4:以 log-loss(y)對以準確率(x)調參時的過擬合落差,逐工具。多數點落在對角線之下,以 log-loss 調參過擬合較少(AFML 9.4)。此效應在兩個目標對所選設定意見分歧之處最強。

主張 3, 以 log-loss 而非準確率調參

方法論上的對照貫穿全程:每個模型都同時以負 log-loss 與準確率調參。以 log-loss 調參會得到顯著更小的過擬合落差(合併平均 0.331 對 0.421,Wilcoxon p = 8.3e-6),且此效應在兩個模型族內逐模型成立(RF p = 4.4e-4,HGB p = 1.3e-4)。兩個目標只有約 60%(RF)與約 52%(HGB)的時候選出相同的設定,也就是說,在約半數工具上,度量的選擇會改變所選模型,而一旦改變,log-loss 的選擇泛化得更好。

……卻仍無優勢(誠實的部分)

這是處方未涵蓋的細微之處: 更好的泛化是優勢的必要條件,而非充分條件。在這個 EMA 交叉的 meta-labeling 任務上,兩種 ensemble 都產生不出接近 0.95 門檻的 Deflated Sharpe Ratio,兩者每筆下注的中位 Sharpe 皆為負,而一旦把 Sharpe 對合併網格搜尋進行 deflate,DSR 便崩落到約 0。bagging 在泛化之爭中決定性勝出,在 DSR 之爭中卻毫無勝績(配對 p = 0.74)。在全部 40 種工具中,0 種明確超過 DSR > 0.95;唯一接近的是 USDJPY(HGB DSR 0.92),其次是 EURUSD(RF DSR 0.56),兩者皆為外匯,是計入成本後最不具對抗性的任務。一次乾淨的方法論複現,得到的卻是優勢為零的結果,而這個分野正是其貢獻所在。

方法

  • 一項固定的結構性任務,主要的 EMA(20/60) 交叉決定方向;在完整的逐 bar 內 OHLC 上掃描三重障礙(止盈 1.5σ、止損 1.0σ、最長持有 50 根 bar,σ = 因果的 EWMA 波動度)給出結果;meta-label 為 y = 1[計入往返成本後淨 P&L > 0]。十個因果特徵(side、vol、ma_gap、mom3/6/12、rsi、vol_ratio、ofi、range_atr)。這是模型/重要度研究,而非標籤掃描。
  • 兩種 ensemble,皆忠實構建:bagging 是按 AFML 方式構建的 RandomForest,以低 max_features 去相關各樹、在加權下對葉節點正則化、以標籤唯一度作為 sample-weights、並將 max_samples 設為平均標籤唯一度(sequential-bootstrap 的類比)。boosting 是 HistGradientBoosting,在迭代次數、學習率、葉節點數與 L2 的小網格上搜尋。
  • 所有交叉驗證皆為帶 embargo 的 purged k-fold,並把每個標籤的跨度由 bar 空間映射到事件空間,使與測試 fold 重疊的訓練列被丟棄。重要度的穩定度跨 CPCV(C(6,2) = 15 條路徑)衡量。
  • 每個模型被超參調整兩次,以負 log-loss(主結果,AFML 9.4)與以準確率(對照),以比較所得的過擬合落差。purged out-of-fold 的 P(獲利) 決定每筆下注的規模;計入成本的 P&L 餵入一條逐 bar 的報酬序列,其 Sharpe 對合併 RF+HGB 網格的離散度進行 deflate。
  • 重要度三種算法:來自單次全樣本擬合的 MDI(有偏的樣本內基準)、作為以 log-loss 計分的 purged out-of-fold 排列的 MDA,以及對整個相關 cluster 進行排列的 clustered-MDA。替代偏誤是一個方法的重要度與每個特徵平均 |相關| 之間的 Spearman ρ;選擇穩定度是各 CPCV 路徑間 top-3 的平均配對 Jaccard,並對照一個隨機選擇基準。
  • 全程採用資訊驅動的 bar,加密與股票用 dollar bars,外匯用 count bars,每筆下注皆有非零成本(加密:固定 7 bp/邊;股票與外匯:因果的日內時段半價差加佣金/swap,約 1–2 bp/邊)。兩檔 ETF(XLF、XLV)因資料驅動的最低類別下限被剔除,而非人工剔除。

說明與限制

本研究刻意把「泛化更好/偏誤更小」(都複現了)與「優勢」(並未出現)區分開來,而誠實的結論,40 種中 0 種超過 0.95 門檻,正是這項工作的誠信所在。股票是最弱的一環:其 EMA 交叉的下注只有約 17–23% 的時候越過成本與障礙門檻,因此其偏低的樣本內 log-loss 有一部分是類別不平衡的偽影,且有兩檔 ETF 直接未過最低類別下限。RandomForest 的 max_samples 被設為平均標籤唯一度,作為真正 sequential bootstrap 的一階類比(忠於其意圖,而非確切程序)。Deflated Sharpe 的試驗數僅 14 個設定,因此這個 deflation 充其量是寬鬆的,而 DSR 仍為約 0。

可複現性

每個特徵與標籤都只用到當前 bar 為止的資料;每筆下注都已扣除每邊的真實成本;每個 fold 都經 purged 與 embargo。整個 harness、其自我測試與完整的多市場面板都收錄於 lopez-de-prado-work-review project 09。本頁的探索器是自足的:逐工具的面板數字已編碼於元件中,因此它所示範的機制在每次載入時都精確地複現。

引用

參考文獻

此處所回顧處方的主要來源:

另見

本研究的 Deflated Sharpe 門檻所倚賴的多重檢定機制,於 Backtest Overfitting & the Deflated Sharpe Ratio 中回顧;選擇紀律的主題在 優勢在於流程 中展開;更廣泛的工作集則見於 研究