MO432 -Metodologia

Jacques Wainer

Metodologia

Há alguns “erros” de procedimento que tornam sua taxa de erro muito menor no laboratorio que na vida real.

Se voce usa parte do conjunto de treino como conjunto de teste, seu classificador “ja viu” aqueles dados e portanto “já sabe” parte da resposta. Na vida real os dados novos do classificador não “foram vistos antes” e o desempenho do classificador cai.

No limite, pense num classificador 1-NN. Se voce reusar o treino como teste o classificador acertará 100%

Procedimentos de preprocessamento.

No exercício 1, fizemos o preprocessamento (centralização e PCA) nos dados como um todo. Nesse caso parte da informação do conjunto de teste estava disponível para o treino.

Parte dos valores do conjunto de teste (que não tinhamos definido ainda) entram no calculo da media e desvio padrão, por exemplo.

Isso é um contaminação pequena mas é uma contaminação. O mais correto é definir e aplicar o preprocessamento usando apenas no conjunto de treino e apenas aplica-lo no conjunto de teste. Media e desvio padrão sao computados apenas para o conjunto de treino e aplicados no treino e teste.

Para isso o sklearn e outras ferramentas tem o conceito de pipes. https://scikit-learn.org/stable/modules/compose.html

Split de series temporais

Em series temporais a parte de treino não pode conter dados do futuro, so dados do passado em relação ao conjunto de teste.

Veja figura aqui

Sklearn tem uma função especial para split de series temporais https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.TimeSeriesSplit.html

Isso é uma contaminação seria

Medir e decidir no mesmo conjunto de teste

Essa é uma contaminação super séria

No exercício 2 e 3 fizemos varias rodadas com varios algoritmos e valores dos hiperparametros.

Poderíamos ter escolhido o com menor taxa de erro como o algoritmo e o valor dos seus hiperparametros. Isso é OK

Mas não se pode reportar a taxa de erro dessa combinação como a taxa de erro esperada para o futuro.

Voce não pode usar o mesmo(s) conjunto(s) de teste para tomas decisões e para reportar o erro!! O resultado (algoritmo mais as suas decisões) podem estar overfitting o conjunto de teste.

O 100% correto é separar um pedaço dos dados (A) e nunca olhar para eles. Use o restante (B) para experimentar e encontrara combinação de preprocessamento, algoritmo e hiperparametros que dá o melhor resultado.

Nested cross validation

Veja que nesse ultimo exemplo ha 2 validações cruzadas. A de dentro (no B) que é usada para tomar decisões e a de forma (separação de A e B) que é para reportar os resultados.

Isso é chamado de nested cross validation.

Se voce esta definindo um software para um cliente, voce so precisa usar nested-CV para reportar corretamente a taxa de erro do sistema que voce espera para dados do futuro.

Se voce esta escrevendo um paper, onde voce esta querendo mostrar que o seu algoritmo é melhor que outro voce provavelmente precisa usar nested CV

Comparando 2 algoritmos

Como comparar 2 algoritmos de classificação.:

Testes estatísticos são necessários para publicação.