{"id":19711693,"url":"https://github.com/andremenezesds/machine_learning_test","last_synced_at":"2025-10-30T17:31:42.475Z","repository":{"id":203845274,"uuid":"706986976","full_name":"AndreMenezesDS/machine_learning_test","owner":"AndreMenezesDS","description":"Testing among various Machine Learning models and parameters, in order to further study their behaviour for Classification, Regression and Clustering analysis.","archived":false,"fork":false,"pushed_at":"2023-11-07T03:46:11.000Z","size":5297,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T14:29:16.552Z","etag":null,"topics":["classification-models","clustering-models","machine-learning","numpy","pandas","regression-models","sklearn"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndreMenezesDS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-19T02:05:25.000Z","updated_at":"2023-11-02T20:34:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"2247c98c-9349-4354-9dc7-33efe1acc521","html_url":"https://github.com/AndreMenezesDS/machine_learning_test","commit_stats":null,"previous_names":["andremenezesds/machine_learning_test"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreMenezesDS%2Fmachine_learning_test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreMenezesDS%2Fmachine_learning_test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreMenezesDS%2Fmachine_learning_test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreMenezesDS%2Fmachine_learning_test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndreMenezesDS","download_url":"https://codeload.github.com/AndreMenezesDS/machine_learning_test/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241029929,"owners_count":19896992,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classification-models","clustering-models","machine-learning","numpy","pandas","regression-models","sklearn"],"created_at":"2024-11-11T22:13:20.273Z","updated_at":"2025-10-30T17:31:42.392Z","avatar_url":"https://github.com/AndreMenezesDS.png","language":"Jupyter Notebook","readme":"# DATA MONEY COMPANY - MACHINE LEARNING INSIGHTS PROJECT\n\n___\n\n![Project Cover](img/project_cover.jpg \"Project Cover\")\n\n_A demonstração detalhada do código pode ser conferida [neste link.](https://github.com/AndreMenezesDS/machine_learning_test/blob/main/ml_trials.ipynb)_\n\n# 1.0 RESUMO\n\n___\n\nData Money é uma empresa que oferece consultoria em análise e ciência de dados, com orientação a otimizar resultados de empresas parceiras ao redor do mundo.\nA metodologia de trabalho da empresa consiste na realização de ensaios para treino e configuração de modelos de machine learning, obtendo insights acionáveis através da interpretação dos resultados obtidos.\n\n_*Este é um projeto fictício. A empresa, o contexto e as perguntas de negócio não são reais, e prestam apenas como simulação de um projeto real._\n\n# 2.0 PROBLEMA DE NEGÓCIO\n\n___\n\n## 2.1 Descrição do Problema\n\nEm vias de manter o ganho de performance do time de dados da empresa, a Data Money \nexigiu a execução de um número maior de testes dos modelos em treino de machine learning, com o objetivo de melhor esclarecer o funcionamento e cenários adequados da aplicação de cada um.\nPara tornar essa tarefa possível, fui contratado como cientista de dados com o objetivo de entregar um **ensaio**, explicitando o funcionamento de cada modelo com o uso comparativo de métricas de performance entre os algoritmos.\nComo forma de guiar o desenvolvimento do projeto, foram propostas as perguntas de negócio:\n\n-   Através dos resultados obtidos, quais os insights podem ser considerados acionáveis para entender o comportamento de cada modelo de Machine Learning?\n-   Em caso de discrepância nos resultados observados de um mesmo modelo para diferentes bases de dados, é possível inferir alguma característica de funcionamento do modelo de Machine Learning?\n\n\u003cdiv align=\"center\"\u003e\n\n![ml_diagram](img/ml_diagram.jpeg \"Machine Learning Diagram\")\n    \n\u003c/div\u003e\n\n## 2.2 Proposta de Solução\n\nPara organizar a entrega do resultado, separei os resultados dos ensaios em 3 categorias: Ensaios de Classificação, Regressão e Clusterização.\nPara os modelos de **aprendizagem supervisionada (Classificação e Regressão)**, foram feitas validações de resultados a partir de uma base de dados pré selecionada de treino:\n\n*   No próprio dataset de **treino**;\n*   Em uma base de dados exclusivamente voltada à **validação**;\n*   Em um base de dados exclusivamente voltada à **testes**\n    *   Totaliza-se então 6 tabelas com os resultados obtidos em aprendizagem supervisionada (3 para modelos de classificação; 3 para modelos de regressão)\n\nOs modelos de aprendizagem supervisionada treinados, seus hiperparâmetros testados e suas respectivas métricas de avaliação serão:\n\n\n| Modelos de Classificação                      |Hiperparâmetros|\n| ---------------------                         | ------------------------------------------------- |\n| KNN                                           | Número de Vizinhos (n_neighbors)  |\n| Árvore de Decisão                             | Profundidade de Árvore (max_depth)  |\n| Random Forest                                 | Número de estimadores (n_estimators), Profundidade de Árvore(max_depth)  |\n| Classificação via Regressão Logística         | Força de Regularização ( C ), algoritmo para otimização da função custo (solver), Máximo de iterações p/ convergência(max_iter)  |\n\n*   _Métricas para Classificação_: Accuracy, Precision, Recall e F1_score.\n\n| Modelos de Regressão             | Hiperparâmetros|\n| --------------------- | ------------------------------------------------- |\n| Regressão Linear                    | (sem parâmetros iteráveis)  |\n| Regressão Linear Regularizada Lasso (L1)                | termo multiplicador da penalidade L1(alpha), Número máximo de iterações(max_iter)  |\n| Regressão Linear Regularizada Ridge (L2)                   | termo multiplicador da penalidade L1(alpha), Número máximo de iterações(max_iter)  |\n| Regressão Linear Regularizada Elastic Net (L1 \u0026 L2)       | termo multiplicador da penalidade L1(alpha), Número máximo de iterações(max_iter), Proporção entre as penalidades L1 e L2(l1_ratio)  |\n| Regressão Polinomial           | Grau do Polinômio(degree)  |\n| Regressão Polinomial Regularizada Lasso (L1)    | termo multiplicador da penalidade L1(alpha), Número máximo de iterações(max_iter), grau do polinômio(degree)  |\n| Regressão Polinomial Regularizada Ridge (L2)          | termo multiplicador da penalidade L1(alpha), Número máximo de iterações(max_iter), grau do polinômio(degree) |\n| Regressão Polinomial Regularizada Elastic Net (L1 \u0026 L2)       | termo multiplicador da penalidade L1(alpha), Número máximo de iterações(max_iter), grau do polinômio(degree), Proporção entre as penalidades L1 e L2(l1_ratio)  |\n| Árvore de Regressão        | Profundidade da árvore(max_depth) |\n| Random Forest Regressor  | Número de estimadores(n_estimators), Profundidade da Árvore(max_depth) |\n\n*   _Métricas para Regressão_: R² score, Mean Squared Error(MSE), Rooted Mean Squared Error(RMSE), Mean Absolute Error(MAE), Mean Absolute Percentual Error(MAPE)\n\nPara os modelos de **aprendizagem não-supervisionada (Clusterização)**, será apenas 1 tabela com o resultado final contendo os valores da métrica de avaliação obtida para cada modelo. Os modelos treinados, os hiperparâmetros testados e suas respectivas métricas de avaliação serão:\n\n| Modelos de Clusterização                      |Hiperparâmetros|\n| ---------------------                         | ------------------------------------------------- |\n| KMeans                                        | Número de Clusters(k)  |\n| Affinity Propagation                          | Preference  |\n\n*   _Métrica para Clusterização_: Silhouette Score\n\n# 3.0 ANÁLISE DE PERFORMANCE\n\n___\n## 3.1 Análise dos Resultados\n_O Detalhamento da setagem dos hiperparâmetros que contextualizam os resultados aqui mostrados podem ser conferidos [neste link.](https://github.com/AndreMenezesDS/machine_learning_test/blob/main/ml_trials.ipynb)_\n\n### 3.1.1 Classificação\n\n*   Training Dataset\n\n\u003cdiv align=\"center\"\u003e\n\n![training_classification_results](img/training_class_results.png \"Classification Results - Training Dataset\")\n    \n\u003c/div\u003e\n\n*   Validation Dataset\n\n\u003cdiv align=\"center\"\u003e\n\n![validation_classification_results](img/validation_class_results.png \"Classification Results - Validation Dataset\")\n    \n\u003c/div\u003e\n\n*   Test Dataset\n\n\u003cdiv align=\"center\"\u003e\n\n![test_classification_results](img/test_class_results.png \"Classification Results - Test Dataset\")\n    \n\u003c/div\u003e\n\n### 3.1.2 Regressão\n\n*   Training Dataset\n\n\u003cdiv align=\"center\"\u003e\n\n![training_regression_results](img/training_regression_results.png \"Regression Results - Training Dataset\")\n    \n\u003c/div\u003e\n\n*   Validation Dataset\n\n\u003cdiv align=\"center\"\u003e\n\n![validation_regression_results](img/validation_regression_results.png \"Regression Results - Validation Dataset\")\n    \n\u003c/div\u003e\n\n*   Test Dataset\n\n\u003cdiv align=\"center\"\u003e\n\n![test_regression_results](img/test_regression_results.png \"Regression Results - Test Dataset\")\n    \n\u003c/div\u003e\n\n### 3.1.3 Clusterização\n\n\u003cdiv align=\"center\"\u003e\n\n![clustering_results](img/clustering_results.png \"Clustering Results\")\n    \n\u003c/div\u003e\n\n## 3.2 Principais Insights Obtidos\n*   Foram identificadas situações de underfitting em:\n    *   Algoritmos simples(base) que não conseguem representar o comportamento dos dados: KNN(Classificação), Regressões Lineares, Regressões Polinomiais de baixo grau.\n    *   Modelos de Regressões Regularizadas com altos valores de penalidade L1 e L2.\n*   Foram identificadas situações de overfitting em:\n    *   Algoritmos baseados em árvores com grandes profundidades;\n    *   Regressões polinomiais de alto grau\n        *   NOTA: Expansões polinomiais de grau elevado são processos custosos computacionalmente.\n*   Insights referentes à Generalização da aplicação dos modelos treinados:\n    *   Na Classificação via regressão Logística, otimizadores da função de custo com adição da penalidade L1 não foram capazes de convergir a função de custo para a otimização dos scores, uma vez que há uma tendência em não performar bem para datasets pequenos (validação e teste)\n    *   Regressores Regularizados, em geral, conferem maior capacidade de generalização aos modelos de machine learning.\n    *   O aumento no número de estimadores em algoritmos de Random Forest conferem maior capacidade de generalização quando em comparação ao modelo de uma árvore singular.\n*   Clusterização:\n    *   A escolha inapropriada de parametros (como nº de clusters em KMeans), geram resultados muito abaixo do esperado, fazendo-se necessário o monitoramento da setagem do modelo.\n    *   Ambos os algoritmos não lidam bem com outliers, uma vez que deslocam o cálculo da média dos centroídes de cada cluster(KMeans)/não se saia bem com dados em formatos complexos em clusters não esféricos(Affinity Propagation)\n\n# 4.0 FERRAMENTAS E TÉCNICAS UTILIZADAS\n\n___\n\n-   Backend \u0026 Data Science: [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54)](https://www.python.org/downloads/release/python-380/) \n-    Apresentação \u0026 Frontend : ![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge\u0026logo=html5\u0026logoColor=white) ,  [![Markdown](https://img.shields.io/badge/markdown-%23000000.svg?style=for-the-badge\u0026logo=markdown\u0026logoColor=white)](https://www.markdownguide.org/) \n -  Machine Learning \u0026 Análise de Dados: [![Pandas](https://img.shields.io/badge/pandas-%23150458.svg?style=for-the-badge\u0026logo=pandas\u0026logoColor=white)](https://pandas.pydata.org/) , [![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge\u0026logo=numpy\u0026logoColor=white)](https://numpy.org/) , [![Matplotlib](https://img.shields.io/badge/Matplotlib-%23ffffff.svg?style=for-the-badge\u0026logo=Matplotlib\u0026logoColor=black)](https://matplotlib.org/), [![scikit-learn](https://img.shields.io/badge/scikit--learn-%23F7931E.svg?style=for-the-badge\u0026logo=scikit-learn\u0026logoColor=white)](https://scikit-learn.org/stable/) \n -   Editores \u0026 IDEs : [![Jupyter Notebook](https://img.shields.io/badge/jupyter-%23FA0F00.svg?style=for-the-badge\u0026logo=jupyter\u0026logoColor=white)](!https://jupyter.org/) , [![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge\u0026logo=visual-studio-code\u0026logoColor=white)](!https://code.visualstudio.com/)\n- Versionamento de Código: [![Git](https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge\u0026logo=git\u0026logoColor=white)](!https://git-scm.com/) , [\t![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge\u0026logo=github\u0026logoColor=white)](!https://github.com/)\n\n# 5.0 CONTATOS\n\n___\n\n- [![Gmail](https://img.shields.io/badge/-Gmail-EA4335?logo=Gmail\u0026logoColor=white\u0026style=for-the-badge)](andre.menezes@unesp.br) ou [![Gmail](https://img.shields.io/badge/-Gmail-EA4335?logo=Gmail\u0026logoColor=white\u0026style=for-the-badge)](andalves994@gmail.com)\n- [![LinkedIn](https://img.shields.io/badge/linkedin-0A66C2?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/andremenezesds/)\n- [![Telegram](https://img.shields.io/badge/-Telegram-26A5E4?logo=Telegram\u0026logoColor=white\u0026style=for-the-badge)](https://t.me/andre_menezes_94)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandremenezesds%2Fmachine_learning_test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandremenezesds%2Fmachine_learning_test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandremenezesds%2Fmachine_learning_test/lists"}