CrossValidation de maneira didática

Arthur Lamblet Vaz
Data Hackers
Published in
3 min readNov 21, 2017

Quando estudei Cross-Validation encontrei muito material complexo que acabei levando um tempo para entender a lógica dessa técnica. Esse post tem como objetivo tentar mostrar de maneira mais didática possível essa técnica.

Introdução a um problema preditivo

Supondo que devemos construir um modelo para prever se o passageiro de um avião é um traficante de drogas ou não, classificação binária (1=Sim, 0=Não).

Vamos utilizar um conjunto de dados histórico de um aeroporto que tem um histórico de rota de traficante de drogas. Primeiramente, devemos treinar nosso conjunto de dados com algum modelo de previsão (regressão linear, logística (já que é binário), multivariada, exponencial, polinomial, SVM, Naive Bayes, kernel..).

Depois de escolhido o modelo, devemos nos atentar para testar o resultado do seu modelo. Para isso devemos separar uma amostra do seu conjunto de dados, a fim de verificar qual será seu erro e assim escolher o modelo com menor resultado.

É nessa parte que entra o crossvalidation, em particular eu normalmente costumo usar dos métodos: Hold-Out e K-Fold.

O K-Fold

No K-Fold, você divide normalmente entre 5–10 grupos o seu conjunto de dados, em seguida você escolhe de maneira aleatória um dos grupos para ser o grupo de validação ou teste. O restante dos grupos se juntam, para treinar seu modelo e aplicar do grupo de validação para comparar o resultado e ver qual foi a taxa de erro. Esse método se repete até que todos os grupos tenham passado no grupo de validação e todos tenham um percentual de erro, no fim se calcula o erro médio do seu modelo. É aconselhado fazer o crossvalidation usando K-Fold com diversas divisões de grupo, por exemplo: fazer 5 K-Fold onde a divisão dos grupos variam entre 3, 5, 6, 7. Aplica-se o modelo seguido pela técnica K-Fold e compara o resultado do erro médio de cada divisão do grupo:

  • K-Fold 3 grupos: Erro Médio = 16,5%
  • K-Fold 5 grupos: Erro Médio = 12,4%
  • K-Fold 6 grupos: Erro Médio = 13,9%
  • K-Fold 7 grupos:Erro Médio = 20,1%

Portanto o modelo que teve o menor erro, K-Fold 5 é o modelo para ser testado nos futuros passageiros.

Agora, se por acaso queremos testar se esse modelo escolhido em um outro grupo para analisar a sua performance, famosa prova final do modelo, é possível? SIM!

O Hold-Out

Vamos aplicar um outro método chamado Hold-Out, que divide o seu conjunto de dados em 70–30 de maneira aleatória. Onde o 70 representa 70% do seu conjunto de dados, que por sua vez será usado para treinar seu modelo e 30 os 30% restantes para testar sua performance.

Logo, podemos aplicar inúmeros K-Fold, como mostrado acima, no grupo de treino!

Supondo que os 5 grupos de K-Fold, visto anteriormente, foram aplicados em 70% do nosso conjunto de dados. Sobrando assim, 30% de dados que seriam desconhecido pelo modelo.

Aplicando então o modelo que foi representado por K-Fold de 5 grupos nos 30% do conjunto de dados resultará numa nova taxa de erro.

Assim, teremos um valor mais conservador, já que não usamos todo o conjunto de dados.

Para deixar seu modelo de machine learning mais glamoroso, pode fazer um loop de n vezes já que o Hold-Out, divide aleatoriamente seu conjunto de dados em 70–30 e analisar o erro final.

Fácil não?!

--

--

Arthur Lamblet Vaz
Data Hackers

Surfista, natureba e engenheiro de produção com ênfase em Data Science🌱🌍♻️