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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMDg4MDIsIm5iZiI6MTcxOTEwODUwMiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTYyNTYtNDllMWI2ZDQtNzM4OC00MGVmLWJjM2ItMWI3NTk5ZGRhODBmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDAyMDgyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVkNTE3Y2Q3NzU0ZDYxNmJmYWYzODIyZmQxYWY1MzNjYTZhZmE4ZTg1N2M1OGViMzU5OGUzNGQxNmE4M2QxNDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.3CU34BEdpzJ59CaXUB3GLpghz56uYIxlPT3huIQWeP4)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMDg4MDIsIm5iZiI6MTcxOTEwODUwMiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTY1MjYtYThhMjVlMzAtY2M5Ny00YTdiLWFjMzQtOTZhM2RlY2YzYWRlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDAyMDgyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZjOTA1ZDRkNDg3YzBjYjNiODUzYWQ5ODIxMjdiY2U3MTM4ZWZhMjVkNjgwMmI3MDVlYjQ3MTA4ZmYzZGMwOTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.TrF2BqLXPK3rDTuvCyoDKDVe0sXXNM7FyqfqNzVAXBE)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMDg4MDIsIm5iZiI6MTcxOTEwODUwMiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTYzNDYtMzc2YTkwZmQtNzNkNy00MGVlLTg4NDMtNjA1MDdjNjE5MWE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDAyMDgyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUwYzU0ODdkNTE2ZDA1ZTkwM2EwZGQzOGY5NDhhNmMwNzM1OTQwN2Y2YTI3YTAxMTVkMWE0MTdmMmFjOWIyZGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.I8s5--RHWEXk9RG033C9lHnjExKG59KYlPrvQVnwAaY)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMDg4MDIsIm5iZiI6MTcxOTEwODUwMiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTY0MjYtMjA5ZjRmYTAtMDU1Yi00YTkwLWI3YzYtYTgxNGM1ZjgwMzEyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDAyMDgyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRjMjFjY2FmNGJlOWMwNzNjNDk2Mzg5ZmQ0OWM5MjllNTM4MDZjMTRhMjE0YmY4YzhiMTQ0MTk0MTdkY2NmNjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tzPgX10VRWYVnZ1MLrChV6_yk-vkq6vvmHituwra5a8)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMDg4MDIsIm5iZiI6MTcxOTEwODUwMiwicGF0aCI6Ii81NjI4MDYyNC8zMzE4OTY0NTctN2Q5NGE1ODQtNTUyZS00Yjc5LThjZmQtM2I0ZDI2YjA1YjcxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDAyMDgyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTViOWZmZTUzZWRkOGRkN2UzMWM3N2ZkZWM4MDNlYWVjYmFkYzc4YzBkMTllODEzZTFmZmQ4YjBjMGFkMjYxMmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.7BoblE3kWh0_qOrTM7pQr6zaoZd-qbBn9O-RFx1p4H0)
- 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.