Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

[Projeto] prevendo atrasos de voos

https://colab.research.google.com/drive/19IsaPW0YQcpFHgKwrSfptisLo9Lv33Pu?usp=sharing

Olá, instrutores!
Segue minha implementação da atividade "IA Aumentada: Prevendo Atrasos de Voos". Documentei as decisões técnicas para facilitar o feedback.
Decisões de implementação:
1 — DummyRegressor como baseline explícito: defini strategy="mean" explicitamente — o padrão já é a média, mas tornar isso explícito comunica intenção. Um modelo real só tem valor se superar esse piso.
2 — root_mean_squared_error em vez de squared=False: o parâmetro squared=False foi removido no scikit-learn 1.4. Usei a função direta root_mean_squared_error para garantir compatibilidade com versões atuais.
3 — Delta de performance: calculei a diferença absoluta entre Dummy e RandomForest nas métricas MAE e RMSE para quantificar o ganho real, não apenas comparar números isolados.
4 — API orientada a objetos do Yellowbrick: preferi o padrão visualizer.fit().score().show() à função-atalho prediction_error(), que é mais adequado para controle de estado e evita comportamentos inesperados no Colab.
5 — np.abs() nos scores de validação cruzada: o cross_validate retorna MAE e RMSE com sinal negativo (convenção sklearn para otimizadores). A conversão é feita apenas na exibição, sem alterar os dados originais.
6 — n_jobs=-1 no RandomForest: paraleliza o treinamento usando todos os núcleos disponíveis — padrão em produção.
Agradeço o feedback!

2 respostas

Olá, Hewerson. Como vai?

Parabéns pelo altíssimo nível de detalhamento e maturidade técnica na entrega do seu projeto! Como Controlador de Acesso, trazer esse rigor metodológico para a Ciência de Dados demonstra que você captou perfeitamente as boas práticas de engenharia de machine learning.

Sua documentação de decisões está impecável. Vamos analisar alguns dos seus pontos de destaque que agregam muito valor para quem trabalha com modelos preditivos no mundo real:

  • Maturidade com o Scikit-Learn (Ponto 2): Excelente sacada ao substituir o parâmetro squared=False pela função direta root_mean_squared_error. O scikit-learn atualizou essa convenção nas versões mais recentes, e adaptar seu código para essas mudanças evita avisos de depreciação (deprecation warnings) e garante a sustentabilidade do script em produção.
  • O Valor do Baseline (Pontos 1 e 3): Estabelecer o DummyRegressor explicitamente e calcular o delta de performance é a forma correta de avaliar um projeto de IA. No mercado, um modelo complexo de RandomForest só se justifica se o ganho de precisão (o delta calculado) compensar o custo computacional superior em relação a uma média simples.
  • Análise Visual com Yellowbrick (Ponto 4): A escolha pela API orientada a objetos do Yellowbrick (visualizer.fit().score().show()) é uma ótima prática de arquitetura. Ela garante o isolamento do estado do gráfico dentro da célula do Google Colab, prevenindo que plotagens de blocos anteriores interfiram na renderização atual.

Para complementar ainda mais a sua validação cruzada (Ponto 5), onde você utilizou muito bem o np.abs() para corrigir a convenção de sinais negativos do Scikit-Learn, trago uma sugestão de boa prática para a exibição dos resultados. Quando reportamos os erros MAE e RMSE de uma validação cruzada, além da média, é muito importante calcularmos o desvio padrão dos scores.

A inclusão do desvio padrão ajuda a entender a estabilidade do seu modelo ao longo dos diferentes conjuntos de dados (folds). O código para extrair e exibir essa métrica de forma limpa ficaria assim:

# Exemplo de como calcular a média e a estabilidade (desvio padrão)
scores_mae = np.abs(resultados_cv['test_neg_mean_absolute_error'])

print(f"MAE Médio: {scores_mae.mean():.2f}")
print(f"Instabilidade do Modelo (Desvio Padrão): {scores_mae.std():.2f}")

Se o desvio padrão for muito alto, significa que o seu modelo de previsão de atrasos de voos está variando muito dependendo dos dados que recebe, o que exigiria uma investigação sobre desbalanceamento ou necessidade de mais engenharia de recursos (feature engineering).

A paralelização com n_jobs=-1 (Ponto 6) fechou o pipeline com chave de ouro, otimizando o tempo no ambiente do Colab. O seu repositório serve como um excelente guia de como estruturar um projeto de Machine Learning limpo, legível e atualizado.

Espero que possa ter lhe ajudado!

Olá, Evandro!

Muito obrigado pelo feedback detalhado e pelas observações técnicas.

Fico feliz em saber que as decisões tomadas durante o desenvolvimento do projeto seguiram boas práticas utilizadas em projetos reais de Machine Learning. Como estou em processo de transição para a área de Dados e atualmente estudo Ciência de Dados pela Alura, procuro aproveitar cada atividade para ir além da execução do código e entender os motivos por trás de cada etapa.

Achei especialmente interessante a observação sobre a estabilidade do modelo através do desvio padrão na validação cruzada. Até então eu estava focado principalmente nas médias das métricas, mas sua explicação mostrou a importância de analisar também a consistência dos resultados entre os folds.

Também vou aprofundar meus estudos sobre feature engineering e impacto dos outliers no desempenho dos modelos, pois percebi que esses pontos influenciam diretamente a qualidade das previsões.

Agradeço novamente pelo tempo dedicado à análise do projeto e pelas sugestões de melhoria. Comentários como esse ajudam muito no meu aprendizado e desenvolvimento na área.

Grande abraço!