O vazamento silencioso
Vazamento significa que a informação das linhas de teste chega ao modelo antes de ser avaliada. As formas barulhentas são fáceis de evitar (uma variável construída com o preço de amanhã). A forma silenciosa se esconde no pré-processamento: escolhem-se as melhores colunas, ou escala-se, ou preenchem-se lacunas com todas as linhas, e só depois se divide para a validação cruzada. Cada dobra de teste já influenciou a escolha e a nota é lisonjeira. A seleção de variáveis é a pior culpada, porque cem colunas ruidosas sempre contêm algumas que parecem preditivas em qualquer amostra; se as escolhemos com todos os dados, as dobras de teste são em parte «previstas» por colunas escolhidas porque se ajustavam a essas mesmas dobras. A correção estrutural é um Pipeline: ao dar ao cross_val_score o pipeline inteiro, ele reajusta escala, seleção e modelo em cada janela de treino e só então avalia a janela de teste.
O laboratório usa uma pergunta deliberadamente difícil: os retornos de ontem de 60 outros ativos conseguem prever se o SPY sobe hoje? Quase não há nada a encontrar. A avaliação com vazamento (SelectKBest(f_classif, k=5) em todas as linhas e depois validação cruzada TimeSeriesSplit) dá um AUC de 0,534. A honesta (escalonador, seletor e regressão logística num pipeline, reajustados em cada janela) dá 0,512. Os 0,022 de diferença são puro vazamento. Também se pode olhar dentro: cross_validate(modelo, X, y, cv=..., return_estimator=True) devolve os pipelines ajustados, e estimator.named_steps['select'].get_support(indices=True) lista as colunas escolhidas por cada um. Nas cinco dobras só uma coluna é escolhida sempre, que é o aspecto de uma seleção sobre ruído. Uma nota calculada com um pipeline se defende; uma calculada após «um pouco de pré-processamento em tudo» não.
- Divida primeiro, aprenda depois: escala, seleção e imputação pertencem ao interior do laço de validação cruzada.
- Um Pipeline é uma proteção contra vazamento: dê ao
cross_val_scoreo pipeline inteiro e cada passo é reajustado em cada janela de treino. - Veja o que cada dobra escolheu: colunas que mudam de dobra para dobra são ruído, não sinal.
Lab: o que é avaliado
- A avaliação com vazamento15 pts
- O pipeline10 pts
- A avaliação honesta15 pts
- O que cada dobra escolheu20 pts
- O tamanho do vazamento10 pts
- A comparação com dados reais30 pts