Estudo de Machine Learning com algoritmos de Classificação, Regularização e Clusterização, com o objetivo de entender como diferentes hiperparâmetros, e a separação entre dados de treino, validação e teste, impactam a performance e podem leva ao overfitting ou underfitting em modelos de machine learning.
Para esse estudo foram utilizados conjunto de dados préviamente preparados e separados, prontos para aplicação nos algoritmos.
Os algoritmos e os parâmetros utilizados no estudo foram:
- Algoritmos: K-Nearest Neighbors, Decision Tree, Logistic Regression e Random Forest;
- Métricas de Performance: Accuracy, Precision, Recall, F1 Score.
- Algoritmos: Decision Tree Regressor, Random Forest Regressor, Linear Regression, Linear Regression Lasso, Linear Regression Ridge, Linear Regression Elastic Net, Polynomial Regression, Polynomial Regression Lasso, Polynomial Regression Ridge e Polynomial Regression Elastic Net;
- Métricas de Performance: R-Quadrado, MSE, RMSE, MAE, MAPE.
- Algoritmos: K-Means, Affinity Propagation;
- Métricas de Performance: Silhouette Score.
Os valores resultantes desse ensaio foram obtidos a partir da aplicação dos seguintes passos:
- Treinar o modelo com dados de treino utilizando os parâmetros padrão;
- Medir a performance do modelo nos dados de treino;
- Medir a performance do modelo nos dados de validação;
- Modificar valores dos parâmetros escolhidos para esse ensaio e treinar novo modelo com dados de treino;
- Medir performance nos dados de validação;
- Repetir passos 4 e 5 até encontrar o melhor valor dos parâmetros escolhidos;
- Unir os dados de treino e validação;
- Treinar o modelo final com os dados unidos e os melhores valores dos parâmetros;
- Medir performance do modelo final nos dados de teste.
💡 Clusterização
Para modelos de clusterização foram utilizadas técnicas como Elbow Method para escolher os melhores parâmetros.
Os resultados de performance obtidos para cada modelo foram:
É possível perceber que para a maioria dos modelos de classificação, a performance dos dados de validação ficaram bem próximas a performance dos dados de teste.
Model | Accuracy | Precision | Recall | F1 Score |
---|---|---|---|---|
KNN | 0.782 | 0.756 | 0.733 | 0.744 |
Decision Tree | 1.0 | 1.0 | 1.0 | 1.0 |
Random Forest | 1.0 | 1.0 | 1.0 | 1.0 |
Logistic Regression | 0.567 | 0.0 | 0.0 | 0.0 |
Model | Accuracy | Precision | Recall | F1 Score |
---|---|---|---|---|
KNN | 0.676 | 0.632 | 0.603 | 0.617 |
Decision Tree | 0.945 | 0.935 | 0.938 | 0.936 |
Random Forest | 0.965 | 0.974 | 0.945 | 0.959 |
Logistic Regression | 0.567 | 0.0 | 0.0 | 0.0 |
Model | Accuracy | Precision | Recall | F1 Score |
---|---|---|---|---|
KNN | 0.688 | 0.648 | 0.635 | 0.642 |
Decision Tree | 0.948 | 0.940 | 0.941 | 0.940 |
Random Forest | 0.965 | 0.974 | 0.946 | 0.960 |
Logistic Regression | 0.871 | 0.867 | 0.834 | 0.851 |
Vemos que nenhum modelo de regressão estudado teve uma performance satisfatória nos dados de teste, porém em alguns casos é possível observer claramente o overfitting do modelo.
Model | R-Squared | MSE | RMSE | MAE | MAPE |
---|---|---|---|---|---|
Decision Tree - Regressor | 0.992 | 3.940 | 1.985 | 0.214 | 0.083 |
Random Forest Regressor | 0.903 | 46.271 | 6.802 | 4.856 | 2.539 |
Linear Regression | 0.046 | 455.996 | 21.354 | 16.998 | 8.653 |
Linear Regression - Lasso | 0.007 | 474.475 | 21.782 | 17.305 | 8.737 |
Linear Regression - Ridge | 0.046 | 455.996 | 21.354 | 16.998 | 8.653 |
Linear Regression - ElasticNet | 0.008 | 474.269 | 21.778 | 17.300 | 8.732 |
Polynomial Regression | 0.094 | 432.986 | 20.808 | 16.458 | 8.351 |
Polynomial Regression - Lasso | 0.009 | 473.639 | 21.763 | 17.285 | 8.700 |
Polynomial Regression - Ridge | 0.093 | 433.475 | 20.820 | 16.472 | 8.373 |
Polynomial Regression - ElasticNet | 0.013 | 471.878 | 21.723 | 17.244 | 8.679 |
Model | R-Squared | MSE | RMSE | MAE | MAPE |
---|---|---|---|---|---|
Decision Tree - Regressor | -0.304 | 622.636 | 24.953 | 17.167 | 6.942 |
Random Forest Regressor | 0.332 | 319.078 | 17.863 | 13.029 | 7.077 |
Linear Regression | 0.040 | 458.447 | 21.411 | 17.040 | 8.683 |
Linear Regression - Lasso | 0.008 | 473.747 | 21.766 | 17.265 | 8.696 |
Linear Regression - Ridge | 0.040 | 458.445 | 21.411 | 17.039 | 8.682 |
Linear Regression - ElasticNet | 0.008 | 473.636 | 21.763 | 17.263 | 8.694 |
Polynomial Regression | 0.066 | 445.768 | 21.113 | 16.750 | 8.548 |
Polynomial Regression - Lasso | 0.010 | 472.913 | 21.747 | 17.238 | 8.682 |
Polynomial Regression - Ridge | 0.068 | 445.184 | 21.099 | 16.739 | 8.569 |
Polynomial Regression - ElasticNet | 0.013 | 471.408 | 21.712 | 17.200 | 8.675 |
Model | R-Squared | MSE | RMSE | MAE | MAPE |
---|---|---|---|---|---|
Decision Tree - Regressor | 0.090 | 442.848 | 21.044 | 16.83 | 7.883 |
Random Forest Regressor | 0.404 | 290.205 | 17.035 | 12.243 | 6.288 |
Linear Regression | 0,051 | 461.988 | 21.494 | 17.144 | 8.531 |
Linear Regression - Lasso | 0.051 | 461.988 | 21.494 | 17.144 | 8.531 |
Linear Regression - Ridge | 0.051 | 461.999 | 21.494 | 17.143 | 8.537 |
Linear Regression - ElasticNet | 0.051 | 461.988 | 21.494 | 17.144 | 8.531 |
Polynomial Regression | 0.091 | 442.641 | 21.039 | 16.736 | 8.277 |
Polynomial Regression - Lasso | 0.056 | 459.514 | 21.436 | 17.017 | 8.576 |
Polynomial Regression - Ridge | 0.090 | 443.041 | 21.049 | 16.744 | 8.312 |
Polynomial Regression - ElasticNet | 0.059 | 457.963 | 21.400 | 16.871 | 8.451 |
Apesar da performance baixa, o que pode indicar necessidade de seleção de atributos, os dois algoritmos de clusterização encontraram o mesmo número de clusters.
Model | N Clusters | Average Silhouette Score |
---|---|---|
K-Means | 3 | 0.233 |
Affinity Propagation | 3 | 0.205 |
Para esses modelos é possível observar a divisão dos clusters utilizando a técnica de Principal Component Analysis (PCA).
Com a observação do comportamento dos modelos para diferentes valores de hyperparâmetros nesse estudo, foi possível comprovar que esses hyperparâmetros, apesar de não causarem saltos de performance dos modelos, podem ser responsáveis diretos pela ocorrência de overfitting ou underfitting. Além disso a estratégia de separação dos dados em conjuntos de treino, validação e teste é o que possibilita a observação desses fenômenos.
Também podemos concluir que algoritmos não paramétricos tiveram melhor performancee que algoritmos paramétricos, isso pode ter acontecido por sua melhor adaptação a diferentes distribuições de dados.
Feito com ❤️ por Elias Batista 👋🏽 Entre em contato!