Como avaliar o overfitting de um modelo machine learning

Luis Guilherme Ribeiro
4 min readMay 24, 2021

Primeiramente, precisamos compreender o que é o tão falado overfitting, ou em português “sobre-ajuste”.

O termo Overfitting se trata de quando um modelo se ajusta muito bem em um conjunto já observado (treino), mas quando é aplicado em um conjunto ainda não visto (teste) se demonstra ineficaz.

Exemplo modelo "decorando" o padrão dos dados

Em outras palavras, é como se o modelo decorasse os padrões da base de treinamento. Assim ele terá um desempenho muito alto com amostras da base de treino, mas ao se deparar com amostras que ainda não viu, seu desempenho tende a piorar drasticamente.

Métricas

Na literatura temos algumas possíveis métricas para avaliar overfitting de modelos. Todas são baseadas no desempenho dos modelos na base de treino e teste.

Umas delas é baseada na diferença entre a performance de treino e teste. Neste caso quanto mais próximo de 0 melhor será o modelo em termos de overfitting.

Equação baseada na diferença entre treino e teste

Outra métrica de overfitting que vem sendo utilizada na literatura, é a baseada na razão entre o teste e o treino. Neste caso quanto mais próximo de 1 melhor será o modelo em termos de overfitting.

Equação baseada na razão entre teste e treino

Mão na massa

Para avaliar o overfitting vamos utilizar a segunda equação apresentada anteriormente, baseado na razão entre teste e treino. Pois esta abordagem facilita a visualização, quando pensamos em maximizar o valor de uma métrica.

No primeiro experimento, estamos gerando uma base de dados sintética, com 1000 amostras, 20 atributos e separando o conjunto em 30% teste e 70% treino. Conforme é mostrado no código abaixo

Para visualizarmos a métrica do overfitting vamos fazer um experimento bem simples usando dois algoritmos de classificação: kNN e Árvore de decisão.

Para o algoritmo kNN vamos variar o k (número de vizinhos) de 1 à 30, e avaliar o desempenho na base de treino e teste. Conforme é mostrado no código abaixo:

Já para o algoritmo da árvore de decisão, vamos variar a profundidade da árvore de 1 à 20, e avaliar os desempenhos. Conforme é mostrado no código abaixo:

Os resultados do algoritmo KNN mostram que quanto maior é K menor é o desempenho em termos de acurácia, tanto na base de treino quanto de teste. Mas em termos de overfitting o modelo tende a melhorar. Portanto, neste caso o K ideal seria igual a 3, onde o modelo performa melhor em termos de acurácia (teste) e overfitting.

No algoritmo de árvore de decisão, é possível notar que quanto maior a profundidade da árvore melhor é o desempenho em termos de acurácia tanto na base de treino como de teste. Mas em termos de overfitting o modelo tende a piorar. Neste caso, a profundidade ideal está entre 5 e 9, onde os desempenho de acurácia e overfitting são balanceados.

Avaliando diferentes modelos

Agora vamos avaliar o overfitting de diferentes modelos em termos de acurácia. Os modelos avaliados são: K-Nearest Neighborhood (KNN), Support Vector Machine (SVM), Random Forest (RF), Multi-Layer Perceptron (MLP) e Naive Bayes (NB).

Neste segundo experimento, vamos gerar um conjunto de dados com 5000 amostrar e 30 atributos. Conforme mostrado no código a seguir:

Geralmente se estivéssemos avaliando apenas o desempenho na base de teste, os melhores modelos seriam SVM e RF, (ambos com acurácia de 0,96). No entanto, ao comparar o desempenho em termos de overfitting é possível notar que o SVM obteve melhor desempenho (1), já o RF tende a ter mais overfitting em comparação ao SVM.

Projeto no GitHub: https://github.com/luisguicomp/overfitting_evaluation

Conclusões

A análise de desempenho do overfitting é umas das métricas mais importantes para avaliar modelos, pois modelos com alto desempenho que tende a ter overfitting geralmente não são opções confiáveis.

O desempenho de overfitting pode ser aplicado em qualquer métrica, tais como: sensibilidade, precisão, f1-score, etc.

O ideal é avaliar o overfitting em conjunto com outras métricas durante a escolha do melhor modelo. Para isso, pode-se utilizar a análise multi-objetivo de pareto.

Referências

[1]: Jason Brownlee (2020). How to Identify Overfitting Machine Learning Models in Scikit-Learn. https://machinelearningmastery.com/overfitting-machine-learning-models

[2]: Will Koehrsen (2018). Overfitting vs. Underfitting: A Complete Example. https://towardsdatascience.com/overfitting-vs-underfitting-a-complete-example-d05dd7e19765

--

--