Este projeto visa otimizar modelos de machine learning supervisionados (Decision Tree Classifier e Logistic Regression) para prever a probabilidade de inadimplência em empréstimos. O processo envolve diversas técnicas de otimização, como validação cruzada aninhada e não aninhada, busca em grid, busca aleatória e busca bayesiana.
- Linguagem: Python
- Bibliotecas:
- Scikit-learn: Para modelagem, validação cruzada e otimização de hiperparâmetros.
- Pandas: Para manipulação e análise de dados.
- NumPy: Para operações numéricas.
- Plotly: Para visualização de dados.
- Scikit-optimize: Para busca bayesiana de hiperparâmetros.
- Preparação dos Dados:
- Os dados foram fornecidos já pré-processados, prontos para modelagem.
- As features incluem informações financeiras do cliente, histórico de crédito, dados demográficos e informações de contato.
- O target é a variável binária 'inadimplente', indicando se o cliente deixou de pagar o empréstimo.
![image](https://private-user-images.githubusercontent.com/56280624/331896256-49e1b6d4-7388-40ef-bc3b-1b7599dda80f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU0NjA2NTYsIm5iZiI6MTcyNTQ2MDM1NiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTYyNTYtNDllMWI2ZDQtNzM4OC00MGVmLWJjM2ItMWI3NTk5ZGRhODBmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA0VDE0MzIzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkzZWQ5Y2U4ZDNkYjhjYThhMzJiMmNjNDllZGM5ODc4NjllNDliMmM4NWMzOGEyMjU2MDhiY2FlYjE0MDUzOTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.jhp-N6psrdF-wdWvTmLxndE44D339IXKOrfIhIFy7V8)
- Modelagem Inicial (Baseline):
- Dois modelos foram treinados com hiperparâmetros padrão:
- Decision Tree Classifier
- Logistic Regression
- O desempenho dos modelos foi avaliado para estabelecer um baseline.
- Dois modelos foram treinados com hiperparâmetros padrão:
![image](https://private-user-images.githubusercontent.com/56280624/331896526-a8a25e30-cc97-4a7b-ac34-96a3decf3ade.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU0NjA2NTYsIm5iZiI6MTcyNTQ2MDM1NiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTY1MjYtYThhMjVlMzAtY2M5Ny00YTdiLWFjMzQtOTZhM2RlY2YzYWRlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA0VDE0MzIzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI1MDJjZGY2NjE4N2YwNDE1ZmQ4NTY0YTQxODIwNGE3YzRjYWRjZjg4YTVmZDE0MTUwNTQ2MTQwYjYyNjFlMjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.hRMlMiAx0ytR_4jTIIKAWHpE7_4iQehQOdcVLhAnycE)
- Validação Cruzada Não Aninhada:
- GridSearchCV: Uma busca exaustiva em uma grade de hiperparâmetros foi realizada para cada modelo, usando validação cruzada com StratifiedKFold para garantir a representatividade das classes.
- RandomizedSearchCV: Uma busca aleatória em um espaço de hiperparâmetros foi realizada para cada modelo, também com validação cruzada estratificada.
![image](https://private-user-images.githubusercontent.com/56280624/331896346-376a90fd-73d7-40ee-8843-60507c6191a5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU0NjA2NTYsIm5iZiI6MTcyNTQ2MDM1NiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTYzNDYtMzc2YTkwZmQtNzNkNy00MGVlLTg4NDMtNjA1MDdjNjE5MWE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA0VDE0MzIzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIwZWVmYjdkNWQxYmY0ZjBjMDVjNTY3ODY5OGEyMzNhZDM4MWE1Y2ZiZGVhZTFjOWY2NzYzN2I5N2U3NDg1YzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.L-JiQgmgGzf-H8qPvauuWbf0Us0pDknjflwR_Lw8cDQ)
- Validação Cruzada Aninhada:
- O processo de busca de hiperparâmetros (GridSearchCV ou RandomizedSearchCV) foi repetido dentro de um loop externo de validação cruzada. Isso ajuda a estimar o desempenho do modelo de forma mais robusta e a evitar o overfitting.
![image](https://private-user-images.githubusercontent.com/56280624/331896426-209f4fa0-055b-4a90-b7c6-a814c5f80312.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU0NjA2NTYsIm5iZiI6MTcyNTQ2MDM1NiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTY0MjYtMjA5ZjRmYTAtMDU1Yi00YTkwLWI3YzYtYTgxNGM1ZjgwMzEyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA0VDE0MzIzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI5ZTI0MzQyMmFmZDkzMjNhYTIxNWQ0NzNmYTNmOTc4NzVkYTY1ZWJjNGI3ZDU3NzAxYmI5ZTA2YmQ3ZjdhZWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.VKMM7_8FfDHSTqjvKvm9an6U-GiS5iHpW0FvS9tqnZo)
- BayesSearchCV Aninhado:
- Uma busca bayesiana de hiperparâmetros foi realizada, aproveitando informações de iterações anteriores para otimizar a busca de forma mais eficiente.
![image](https://private-user-images.githubusercontent.com/56280624/331896457-7d94a584-552e-4b79-8cfd-3b4d26b05b71.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU0NjA2NTYsIm5iZiI6MTcyNTQ2MDM1NiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTY0NTctN2Q5NGE1ODQtNTUyZS00Yjc5LThjZmQtM2I0ZDI2YjA1YjcxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA0VDE0MzIzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTViZWEyYTgyYWNhYzM3YzhiYTA1MTFhZWVkMTA5ZDgxYjQ2MmM2ZGJiNzllYTdkZjM1MzYxYjE4OTYyOWYzMWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.hutzKJISkQ86ZHNGgg26Mg8X4uUPtwDjJWEKTZ64REs)
- Avaliação e Comparação dos Modelos:
- Os melhores modelos de cada etapa foram avaliados em termos da métrica mais relevante: recall.
- Os resultados foram comparados para identificar as melhores estratégias de otimização e o modelo com o melhor desempenho generalizado.