Wenn Nachbarn ein Label teilen
Angenommen, das Label von Tag t ist die Rendite vom Schlusskurs von Tag t bis zum Schlusskurs von Tag t+h, mit h=5. Dann teilen die Labels von Tag t und Tag t+1 vier ihrer fünf Tagesrenditen: Sie sind fast dieselbe Zahl. Ein K-Fold, der Tag t ins Training und Tag t+1 in den Test legt, lässt das Modell die Antwort sehen, mit der es geprüft wird. Ein flexibles Modell wie nächste Nachbarn wirkt dann allein durch Erinnern fähig. Das Leck hat eine genaue Form: Das Label der Zeile i ist erst in Zeile i+h bekannt, also überlappt Zeile i einen Testblock [t₀,t₁], wenn i+h≥t₀ und i≤t₁.
Das Purging entfernt jede Trainingszeile, die den Testblock überlappt. Das Embargo entfernt direkt nach dem Block noch einige Zeilen, weil langsame Merkmale wie eine 20-Tage-Rendite Information nach vorn tragen. Ein Splitter für scikit-learn ist jedes Objekt mit split(X), das (train, test)-Indexarrays liefert, und get_n_splits(); er kann dann als cv= an cross_val_score oder GridSearchCV übergeben werden. Bei 5.340 SPY-Tagen mit vier langsamen Merkmalen und einem Fünf-Tage-Label hat ein Nächste-Nachbarn-Modell ein R-Quadrat von 0,039 mit gemischten Folds und -0,36 mit gepurgten Folds. Das Modell hat keine Fähigkeit, und die gemischte Zahl ist das Leck, das spricht. Ein einfaches ungemischtes K-Fold ist viel besser, hat aber an den vier Grenzen noch 120 überlappende Paare; der gepurgte Splitter hat keines.
- Überlappende Labels legen Beinahe-Kopien auf beide Seiten der Teilung; gemischtes K-Fold belohnt dann Erinnern.
- Purgen Sie Zeilen mit i+h≥t₀ und i≤t₁; Embargo für einige Zeilen nach t₁.
- Ein Splitter ist nur
splitundget_n_splits: Jedes Objekt mit beiden funktioniert alscv=.
Lab: Was bewertet wird
- Purging und Embargo25 Pkt.
- Der Splitter25 Pkt.
- Der Bewerter10 Pkt.
- Überlappungen zählen15 Pkt.
- Die Leckstudie25 Pkt.