Data Leakage, o erro que até os grandes cometem

Para criar um modelo de machine learning, temos uma etapa crucial na qual dividimos os dados em treino e teste. Isso ocorre porque queremos avaliar nosso modelo e evitar problemas de overfitting – que você pode ler mais sobre nos posts OverfittingExplicando overfitting com uma anedota e Overfitting e Cross Validation.  Hoje, quero falar de um problema muito comum que ocorre nesta etapa, o “vazamento” de dados para o teste. Bora falar de data leakage, o erro que até os grandes cometem.

Primeiro, vamos relembrar o que é o treino e o teste. De um lado temos os dados de treino, que serão aqueles utilizados para construir o modelo. Do outro lado, temos os dados de teste que nada mais são que uma simulação do mundo real. É um grupo de dados que a gente quer guardar para testar se nosso modelo funciona bem. Sendo assim, ele é como se fosse algo novo, que nunca vimos e não podemos usar na construção do modelo.

Por conta do próprio conceito de dados de teste, nenhum pré-processamento deve ser feito antes da divisão em teste e treino. Quer preencher os missings? DEPOIS da divisão. Quer aplicar PCA? DEPOIS da divisão. Tratar variáveis categóricas? DEPOIS da divisão.

Imagine que você preencha campos missing com a média da variável. Se você fizer isso antes do split, você está construindo uma variável com informação dos dados de teste, lembra? Aquele dataset que você não pode utilizar na construção do modelo? Aquele que seria algo que você nunca viu durante a criação do modelo? Entendeu? Você estaria meio que “roubando”, pegando dados que você não conhece e usando na construção do modelo. Isso é errado.

Por fim, é provável que esse deslize não custe caro, já que teste e treino têm a mesma origem. Mas não deixa de ser errado e arriscado.

2 comentários em “Data Leakage, o erro que até os grandes cometem”

  1. Bom texto, Yukio, bem direto ao ponto! No entanto não seria “Quer preencher os missings? DEPOIS da divisão.” e assim por diante no 3º parágrafo?

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *