Cuando los vecinos comparten una etiqueta
Supongamos que la etiqueta del día t es el rendimiento desde el cierre del día t hasta el cierre del día t+h, con h=5. Entonces las etiquetas del día t y del día t+1 comparten cuatro de sus cinco rendimientos diarios: son casi el mismo número. Un K-fold que pone el día t en entrenamiento y el día t+1 en prueba deja que el modelo vea la respuesta con la que se le evalúa. Un modelo flexible, como los vecinos más cercanos, parece entonces hábil solo por recordar. La fuga tiene una forma precisa: la etiqueta de la fila i solo se conoce en la fila i+h, así que la fila i se solapa con un bloque de prueba [t₀,t₁] cuando i+h≥t₀ y i≤t₁.
La purga elimina toda fila de entrenamiento que se solape con el bloque de prueba. El embargo elimina algunas filas más justo después del bloque, porque variables lentas como un rendimiento a 20 días siguen llevando información hacia delante. Un particionador para scikit-learn es cualquier objeto con split(X), que produce arreglos de índices (train, test), y get_n_splits(); se puede pasar como cv= a cross_val_score o GridSearchCV. Con 5.340 días de SPY, cuatro variables lentas y una etiqueta a cinco días, un modelo de vecinos más cercanos tiene un R cuadrado de 0,039 con pliegues mezclados y de -0,36 con pliegues purgados. El modelo no tiene habilidad y la cifra mezclada es la fuga hablando. Un K-fold simple sin mezclar es mucho mejor, pero aún tiene 120 pares solapados en las cuatro fronteras; el particionador purgado no tiene ninguno.
- Las etiquetas solapadas ponen casi copias a ambos lados de la partición; el K-fold mezclado premia entonces la memoria.
- Purgue las filas con i+h≥t₀ y i≤t₁; embargo de algunas filas tras t₁.
- Un particionador es solo
splityget_n_splits: cualquier objeto con ambos sirve comocv=.
Lab: qué se califica
- Purga y embargo25 pts
- El particionador25 pts
- El evaluador10 pts
- Contar solapes15 pts
- El estudio de la fuga25 pts