Skip to content

felmateos/income-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

Predição de Renda por Atributos Demográficos

Pipeline de predição de renda construído usando o framework Kedro

Report Bug · Request Feature


📌 Contexto Geral

Este projeto tem como objetivo desenvolver um pipeline de ciência de dados para predição de renda anual de indivíduos, a partir de atributos demográficos, educacionais e ocupacionais. O problema é formulado como uma classificação binária, em que o modelo estima se a renda anual de uma pessoa é superior ou inferior a US$ 50.000.

Além do desempenho preditivo, o foco central do estudo está na análise dos fatores associados à renda, buscando identificar padrões socioeconômicos relevantes e compreender como diferentes variáveis influenciam a probabilidade de um indivíduo pertencer à classe de maior renda. Todo o fluxo foi estruturado utilizando o Kedro e testes unitários usando pytest, garantindo organização, reprodutibilidade e separação clara entre dados, experimentos e resultados.

Logo

🗃️ Hierarquia do Projeto

income-analysis/
├── conf/
│   ├── base/
│   │   ├── catalog.yml
│   │   └── parameters.yml
│   │
│   └── local/
│
├── data/
│   ├── 01_raw/
│   ├── 02_intermediate/
│   ├── 03_split/
│   ├── 04_preprocessor/
│   ├── 05_model_input/
│   ├── 06_models/
│   └── 07_model_output/
│
├── images/
│   ├── confusion_matrix.png
│   ├── income_logo.png
│   ├── money_angel.png
│   └── pr_curve.png
│
├── notebooks/
│   └── income_analysis.ipynb
│
├── src/
│   ├── pipeline_registry.py
│   ├── settings.py
│   ├── income_kedro/
│   │   └── pipelines/
│   │       └── income/
│   │            ├── nodes.py
│   │            └── pipeline.py
│   │
│   └── tests/
│       └── pipelines/
│           └── income/
│                └── test_nodes.py
│
├── LICENSE
├── pyproject.toml
├── README.md
└── requirements.txt

⚡ Conjunto de Dados

O experimento utiliza o Adult Income Dataset, disponibilizado originalmente pelo UCI Machine Learning Repository. O conjunto de dados contém informações demográficas e socioeconômicas de indivíduos, como idade, nível educacional, ocupação, estado civil, país de origem e ganhos de capital.

A variável alvo indica se a renda anual do indivíduo é maior que US$ 50.000 ou não, sendo amplamente utilizada como benchmark em problemas de classificação supervisionada. O dataset apresenta desafios comuns do mundo real, como desbalanceamento de classes, variáveis categóricas de alta cardinalidade e possíveis vieses socioeconômicos.


⚙️ Projeto do Experimento

Pré-processamento

A etapa de pré-processamento envolve a limpeza e padronização dos dados, incluindo o tratamento de valores ausentes, normalização de categorias textuais (como países de origem) e codificação de variáveis categóricas. Também é realizada a separação entre conjuntos de treino e teste, garantindo uma avaliação adequada do desempenho do modelo.

Modelagem

O problema é tratado como uma tarefa de classificação binária, com experimentos envolvendo modelos de Machine Learning supervisionado. O foco está em encontrar um bom equilíbrio entre desempenho preditivo e interpretabilidade, permitindo analisar a importância das variáveis e compreender os fatores que influenciam as decisões do modelo.

(back to top)


📊 Resultados e Avaliação

Os modelos foram avaliados utilizando métricas adequadas para cenários com desbalanceamento de classes, com destaque para Precision, Recall e F1-score, além da análise da curva Precision-Recall. Essas métricas permitem avaliar melhor o desempenho na classe positiva, que é a de maior interesse no contexto do problema.


📊 Matriz de Confusão

A matriz de confusão permite visualizar a distribuição de acertos e erros do modelo, evidenciando a relação entre previsões corretas e incorretas para cada classe. Essa análise auxilia na compreensão dos trade-offs entre falsos positivos e falsos negativos.

Confusion Matrix

📉 PR-Curve

A curva Precision-Recall é utilizada como principal ferramenta de avaliação, pois fornece uma visão mais informativa do desempenho do modelo em cenários com classes desbalanceadas. Ela destaca como a precisão varia em função do recall para diferentes limiares de decisão.

Loss vs Epochs

🔎 Análise dos Resultados

A análise dos resultados indica que variáveis como ganho de capital declarado, nível educacional elevado (Bachelor, Master, Doctorate ou Professional School) e estado civil casado estão associadas a uma maior probabilidade de o indivíduo pertencer à classe de renda acima de US$ 50.000.

Por outro lado, indivíduos com menor grau de escolaridade, ocupações ligadas a serviços domésticos e origem em determinados países latino-americanos apresentam maior associação com a classe de menor renda. Esses resultados levantam discussões relevantes sobre desigualdade socioeconômica, perfil ocupacional e possíveis vieses presentes nos dados.

Como limitação do estudo, destaca-se a forte influência das variáveis de ganho de capital. Um possível próximo passo seria conduzir experimentos removendo essas features, avaliando o poder preditivo do modelo apenas com atributos demográficos e ocupacionais.


🚀 Como Reproduzir

Git Clone

git clone https://github.com/felmateos/income-analysis.git
cd income-analysis

Instalação das bibliotecas

pip install -r requirements.txt

Acesso aos dados

Baixe os dados de:

https://www.kaggle.com/datasets/uciml/adult-census-income

em:

./data/01_raw/

com o nome de:

income.csv

Execução

kedro run

Garantia de qualidade de código

Rode a cobertura de testes unitários para garantir o pleno funcionamento dele.

pytest --cov=src/income_kedro --cov-report=html

(back to top)

🤝 Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para propor melhorias, relatar problemas ou abrir pull requests.

📜 Licença

Este projeto é licenciado sob a Licença MIT.

(back to top)

About

💼 🎓Quais atributos influenciam na renda de alguém? 📈💰

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors