O objetivo é identificar estudantes em risco de evasão acadêmica para subsidiar ações preventivas. O notebook apresenta uma análise exploratória, um modelo preditivo de baseline e uma avaliação/correção de fairness voltada à subidentificação de estudantes bolsistas.
- Fonte: UCI Machine Learning Repository – Predict Students' Dropout and Academic Success.
- Escopo: 4.424 registros com variáveis socioeconômicas, acadêmicas e administrativas.
- Variável alvo:
Target(Graduate, Dropout, Enrolled), binarizada como evasão (1 = Dropout) e permanência (0 = Graduate/Enrolled). - Observação importante: embora não haja NaN no arquivo, parte das variáveis utiliza códigos específicos para representar valores desconhecidos. Esses códigos são tratados durante o pré-processamento.
- Aquisição e leitura do dataset (download automático via URL oficial).
- Pré-processamento com tradução de colunas, criação da variável alvo e engenharia de atributos (binarização de categorias, imputação de códigos desconhecidos com a moda do treino e remoção de colinearidade).
- Divisão estratificada em treino/validação/teste (80/10/10) com semente fixa para reprodutibilidade.
- Análise estatística com qui-quadrado, V de Cramér e odds ratio para variáveis binárias; Mann–Whitney para variáveis contínuas.
- Modelo baseline de regressão logística.
- Avaliação de desempenho global e por subgrupo (accuracy, precision, recall, F1 e ROC-AUC).
- Avaliação de fairness focada em equal opportunity (paridade de TPR) entre bolsistas e não-bolsistas.
- Correção de fairness via pós-processamento com
ThresholdOptimizer(Fairlearn), impondo paridade de TPR.
- Baseline (geral): acurácia ≈ 0,867; recall ≈ 0,697; F1 ≈ 0,770; ROC-AUC ≈ 0,911.
- Menor recall observado: grupo de mulheres bolsistas.
- Fairness (baseline):
- TPR não-bolsistas ≈ 0,734 vs. bolsistas ≈ 0,357 (Δ ≈ 0,377; razão ≈ 0,486).
- FPR não-bolsistas ≈ 0,066 vs. bolsistas ≈ 0,022.
- Após correção por equal opportunity:
- TPR bolsistas ≈ 0,429 e não-bolsistas ≈ 0,727 (Δ ≈ 0,298; razão ≈ 0,590).
- FPR aumenta de forma moderada (bolsistas ≈ 0,033; não-bolsistas ≈ 0,076).
- Acurácia de não-bolsistas reduz para ≈ 0,850 (queda controlada).
Valores arredondados e extraídos diretamente das métricas geradas no notebook.
- Binarização do alvo simplifica o problema e perde nuances entre “matriculado” e “concluinte”.
- Modelo linear simples (regressão logística) sem tuning extensivo; há margem para ganhos com modelos mais expressivos.
- Avaliação com uma única divisão de dados; não há validação cruzada.
- Fairness restrita ao atributo “bolsista”; análises interseccionais e outros atributos sensíveis não foram aprofundados.
- Subgrupos pequenos em algumas análises podem limitar a robustez estatística.
- Generalização limitada ao contexto do dataset (instituição e período específicos).
- Implementar validação cruzada e tuning de hiperparâmetros; testar modelos não lineares (ex.: XGBoost).
- Adicionar variabilidade dos experimentos e análises estatísticas com execuções repetidas variando a semente inicial.
- Incluir calibração de probabilidades e avaliação de custo de erro (falsos negativos vs. falsos positivos).
- Ampliar análise de fairness para outros atributos sensíveis e interseções (ex.: gênero + bolsa).
- Definir critérios de intervenção com stakeholders (custos, capacidade operacional, impacto social).
- Adicionar monitoramento de drift e rotinas de re-treinamento.
- Explorar interpretação de modelos e explicabilidade para suportar decisões institucionais, utilizando valores Shapley, por exemplo.
O trabalho demonstra que variáveis acadêmicas e socioeconômicas permitem antecipar risco de evasão e que a análise por subgrupos é essencial para evitar subidentificação de estudantes vulneráveis. A correção por equal opportunity reduz de forma significativa o gap de TPR entre bolsistas e não-bolsistas, com impacto controlado na acurácia, alinhando o modelo ao objetivo institucional de intervenção precoce. Com a evolução proposta nos próximos passos, o sistema pode tornar-se mais robusto, justo e operacionalmente útil.
- Crie um ambiente virtual:
python -m venv .venv
- Ative o ambiente:
- Linux/macOS:
source .venv/bin/activate - Windows (PowerShell):
.\.venv\Scripts\Activate.ps1
- Linux/macOS:
- Instale as dependências:
pip install -r requirements.txt
- Execute o notebook:
- Abra
src/main.ipynbno VS Code (extensão Jupyter) ou - Instale e use Jupyter:
pip install jupyter jupyter lab
- Abra
O notebook faz o download automático do dataset e grava os arquivos em data/.
- Semente fixa:
SEED = 0. - Divisão estratificada: 80/10/10.
- Caminhos relativos: execute o notebook a partir do diretório
src/.