Etapas essenciais de um projeto de ciência de dados

Wilmara Alves
comunidadeds
Published in
13 min readDec 15, 2023

As 10 fases de um projeto de ciência de dados

https://www.bing.com/images/create/uma-pessoa-desenvolvendo-um-projeto-de-ciencia-de-/

Antes de iniciarmos falando sobre as etapas envolvidas em um projeto de ciência de dados, precisamos definir o que exatamente é um projeto de ciência de dados. Segundo a Awari um Data Science é “Resumidamente, um conjunto de ciência e técnicas que incorporam diversas tecnologias para extrair informações dos dados”. Portanto, um projeto de Data Science consiste em utilizar das Ciências Matemáticas e Estatísticas, juntamente com conhecimento de negócios, incorporando ainda ferramentas como banco de dados, linguagem de programação e algoritmos de Machine Learning para extração de informações e insights a partir dos dados obtidos.

Uma vez que esteja prestes a desenvolver um projeto de ciência de dados é importante seguir uma sequência lógica para evitar análises errôneas, enviesadas ou incapazes de solucionar problemas. De forma prática, se houver o atropelamento de alguma etapa, isso com certeza interferirá na análise final e trará uma análise mais distante da realidade, inclusive ocasionar retrabalho. Um bom exemplo disso é quando ao identificar a ausência de valores em determinada variável tomarmos como escolha a eliminação destas linhas. Pois, ainda que ausentes existem melhores maneiras de substituir estes valores.

Sendo assim, é imprescindível criar uma sequência viável de passos e processos que irão garantir a qualidade do modelo final, prevenindo justamente análises enviesadas, performances baixas de algoritmos, ou mesmo com overfitting(termo utilizado para indicar que o modelo se ajustou muito bem ao conjunto de dados, o que impossibilita novas previsões. Basicamente, é quando o modelo decora os dados.). Neste sentido, a comunidade DS, ambiente onde escolhi para estudar a Ciência de Dados, estruturou os 10 passos indispensáveis a um projeto de Ciência de Dados, conforme abordaremos a seguir.

Compreensão do problema ou tarefa

Antecipadamente ao início das etapas do projeto é preciso identificar exatamente qual o problema ou tarefa a ser resolvido. Isso otimiza seu tempo de trabalho, evitando a criação de uma infinidade de gráficos e análises sem finalidade, podendo confundir também as prioridades do negócio. Ou seja, você é um cientista de dados que só sabe gerar gráficos e que não traz valor ao negócio.

A fim de transformar você em profissional que gera valor para o negócio, trago aqui alguns pontos para que você realmente compreenda o problema de negócio e entenda qual a entrega que deverá fazer. Portanto, se a tarefa foi solicitada a você, identifique primeiramente a motivação desta demanda. Ela foi motivada por solicitação de um superior do solicitante? Foi solicitada mediante acontecimento de evento específico, como por exemplo, uma queda acentuada nas vendas. Ou ainda, uma curiosidade de algum colega? Enfim, vamos aqui entender porque estas perguntas podem me orientar.

Responder estas perguntas vai trazer os reais motivos da demanda. A partir daí você irá avaliar se faz sentido criar um modelo para uma demanda específica de um setor ou colaborador, ou se a partir desta demanda outros setores do negócio serão beneficiados. Assim, será realizado um trabalho com um alcance maior, inclusive evitando que a todo momento setores diversos te solicitem a mesma coisa.

Compreendido o motivo e objetivo por trás desta demanda, é igualmente importante definir como será a entrega. Esta entrega poderá ser feita com um simples dashboard, uma planilha, um relatório semanal com resultados e insights, etc. Definido o modo de entrega é importante atribuir os prazos de cada etapa do projetos e reuniões pautadas em comunicar o processo, pois isto minimiza a ansiedade e cobrança dos envolvidos. Outra contribuição da definição de prazos e comunicação, através de reuniões, é que diante de intercorrências humanas ou sistêmicas os prazos podem seguir sendo ajustados conforme as necessidades.

1.1 Descrição dos dados

Em posse dos dados, a primeira coisa a fazer é entender estes dados, por meio da descrição. Neste ponto você irá conhecer a quantidade de linhas e colunas do dataset. Irá avaliar o que cada linha significa e qual tipo de informação ela traz. Verificar quais variáveis (colunas) são categóricas ou numéricas, assim como analisar dados faltantes. Para isso, linguagens de programação como Python e R são amplamente utilizadas, com bibliotecas como Pandas e NumPy em Python, e dplyr em R, proporcionando ferramentas robustas para manipulação e análise de dados.

Posteriormente, a visualização dos dados é fundamental para obter insights preliminares, e nesse contexto, bibliotecas como Matplotlib, Seaborn (Python) e ggplot2 (R) são comumente empregadas. Além disso, técnicas estatísticas descritivas, como médias, medianas e desvios padrão, são implementadas para resumir as características essenciais dos dados. Em resumo, a descrição dos dados combina técnicas estatísticas e ferramentas de programação para fornecer uma visão abrangente e detalhada do conjunto de dados, preparando o terreno para análises mais avançadas em projetos de ciência de dados.

Um dos comandos simples em Python para entender os dados é df.info()

Fonte: https://media.geeksforgeeks.org/wp-content/uploads/1-539.png

Para absorver mais comandos que permitem a descrição dos dados, sugiro a leitura do artigo Guia Completo: 10 Comandos em Python Essenciais para Análise de Dados(https://medium.com/comunidadeds/guguia-completo-10-comandos-em-python-essenciais-para-an%C3%A1lise-de-dados-11165374eef0)

1.2 Feature Engineering (Engenharia de recursos)

FOnte: <a href=”https://br.freepik.com/vetores-gratis/ilustracao-do-conceito-de-configuracoes_9793179.htm#query=feature%20engineering&position=10&from_view=search&track=ais&uuid=518648e8-c0ab-4580-b366-d5ba55c936d3">Imagem de storyset</a> no Freepik

A Feature Engineering é um componente vital em projetos de ciência de dados, onde se concentra na criação e seleção de variáveis (features) relevantes e informativas a partir dos dados brutos. Esse processo envolve a transformação, combinação e extração de características das variáveis existentes para melhorar o desempenho dos modelos de machine learning e a compreensão do problema. Isso pode incluir a normalização de dados, criação de variáveis ​​dummy, escala de características, seleção de atributos e até mesmo a geração de novas características a partir das existentes.

A Feature Engineering exige um profundo entendimento do domínio do problema e do conjunto de dados, frequentemente utilizando algoritmos e técnicas estatísticas específicas. É um estágio crucial, pois a qualidade e relevância das features têm um impacto direto na precisão e eficácia dos modelos preditivos e analíticos em um projeto de ciência de dados.

Uma técnica comum de Feature Engineering é a criação de variáveis de data e hora a partir de uma coluna de data única. Por exemplo, suponha que você tenha uma coluna de data e hora em um conjunto de dados, mas para o seu problema específico, apenas o dia da semana ou o mês pode ser mais relevante do que a data completa.

Você pode criar novas features derivadas dessa coluna de data, como:

  • Dia da semana: Convertendo a data em uma nova feature que indica o dia da semana (segunda-feira, terça-feira, etc.).
  • Mês: Extrair o mês da data como uma nova feature, ignorando o dia exato.

Essas novas variáveis podem conter informações mais concentradas e úteis para o seu modelo do que a data completa, especialmente se o comportamento dos dados varia de acordo com o dia da semana ou o mês. Isso é útil para análises sazonais ou comportamentais que podem se relacionar mais fortemente com essas unidades de tempo específicas.

1.3 Filtragem das Variáveis

A terceira etapa consiste na filtragem de variáveis que se faz essencial por selecionar as features mais relevantes e significativas para a modelagem. Isso envolve a remoção de variáveis desnecessárias, redundantes ou de baixa importância, o que pode reduzir a complexidade do modelo e melhorar sua generalização.

Por exemplo, em um conjunto de dados de informações de clientes, pode-se optar por remover variáveis como identificadores únicos, que não contribuem para a previsão de comportamentos ou padrões. Além disso, técnicas como a análise de correlação podem ser usadas para identificar e eliminar variáveis altamente correlacionadas, mantendo apenas uma delas para evitar multicolinearidade.

Em suma, a filtragem de variáveis não apenas melhora a eficiência computacional, mas também pode aprimorar a capacidade preditiva e a interpretabilidade do modelo, focando nas features mais informativas para o problema em questão.

1.4 Análise Exploratória dos Dados

A análise exploratória de dados (AED) é uma etapa fundamental em projetos de ciência de dados, dedicada a entender a estrutura, padrões e insights iniciais presentes nos dados. Ela envolve a aplicação de técnicas estatísticas e visualizações para revelar características essenciais do conjunto de dados, como distribuições, tendências, correlações e possíveis anomalias.

Essa análise inicial permite formular hipóteses, identificar padrões e outliers, orientando as próximas etapas do projeto. Por exemplo, ao explorar um conjunto de dados de vendas com Python utilizando a biblioteca Pandas e Matplotlib, você pode calcular estatísticas descritivas como média, mediana e desvio padrão das vendas por região e, em seguida, criar visualizações, como gráficos de barras ou boxplots, para comparar o desempenho de diferentes regiões ao longo do tempo. Isso proporciona uma compreensão inicial do comportamento das vendas e pode revelar insights valiosos para direcionar análises mais aprofundadas ou tomadas de decisão estratégica.

Fonte: https://www.datasnips.com/media/snippet_images/pandas-hist.png

1.5 Preparação dos Dados

A preparação dos dados em um projeto de ciência de dados é um estágio crucial para garantir que os dados estejam prontos para análises e modelagem. Envolve várias etapas, como limpeza de dados, tratamento de valores ausentes, normalização, codificação de variáveis categóricas e ajustes para garantir que os dados sejam adequados aos algoritmos de machine learning. Por exemplo, ao lidar com um conjunto de dados de clientes em Python com a biblioteca Pandas, é possível realizar a limpeza removendo duplicatas e tratando valores ausentes, usando métodos como drop_duplicates() e fillna() respectivamente.

Além disso, a codificação de variáveis categóricas pode ser feita com o get_dummies() para converter colunas categóricas em variáveis binárias. Após isso, a normalização dos dados usando StandardScaler() do sklearn.preprocessing pode ser aplicada para padronizar as escalas das features. Essas etapas garantem que os dados estejam consistentes, sem informações redundantes ou nulas, e em um formato adequado para serem utilizados nos modelos de machine learning.

1.6 Seleção das Variáveis com Algoritmos

A seleção de variáveis por meio de algoritmos é uma abordagem crucial para identificar as features mais relevantes e significativas em um conjunto de dados. Existem várias técnicas para realizar essa seleção, como algoritmos de seleção baseados em árvores de decisão, como o Random Forest, que avaliam a importância das features com base na contribuição delas para a precisão do modelo. Em Python, por exemplo, usando a biblioteca scikit-learn, é possível realizar a seleção de variáveis com o Random Forest Classifier, onde a importância das features pode ser acessada através do atributo feature_importances_, permitindo a identificação das features mais relevantes para o modelo.

Gráfico de feature importance

Fonte: https://scikit-learn.org/stable/_images/sphx_glr_plot_forest_importances_001.png

Outra técnica comum é a seleção de variáveis usando métodos de filtro, como a análise de correlação. Utilizando Python com Pandas e Matplotlib, é possível calcular a matriz de correlação entre as variáveis do conjunto de dados e visualizá-la com um mapa de calor para identificar pares de features altamente correlacionadas. Isso permite a remoção de features redundantes ou fortemente correlacionadas, mantendo apenas aquelas que oferecem informações únicas para o modelo, melhorando a eficiência computacional e possivelmente a precisão do modelo de machine learning.

1.7 Modelos de Machine Learning

Nos projetos de ciência de dados, os modelos de machine learning desempenham um papel essencial na análise preditiva e na extração de insights dos dados. Existem diversos tipos de modelos, desde regressões simples até algoritmos complexos de aprendizado profundo. Usando Python com a biblioteca scikit-learn, é possível implementar modelos como Regressão Linear para prever valores contínuos ou algoritmos de Classificação, como Random Forest Classifier, para categorizar dados em classes distintas. Esses modelos podem ser treinados utilizando conjuntos de dados previamente preparados e depois testados para avaliar sua performance.

Indico os artigos a seguir que abordam sobre algoritmos de Regressão e Classificação para aprofundar o tema. Como avaliar um modelo de ML de classificação e o Como avaliar um modelo ML de Regressão.

Modelos mais avançados, como Redes Neurais Artificiais, são implementados em linguagens como Python, fazendo uso de bibliotecas como TensorFlow ou Keras. Esses modelos são capazes de aprender relações complexas nos dados, sendo empregados em problemas como reconhecimento de imagens, processamento de linguagem natural e séries temporais. A escolha do modelo depende do problema em questão, da natureza dos dados e dos objetivos da análise, buscando sempre encontrar o equilíbrio entre desempenho e interpretabilidade para alcançar resultados precisos e úteis. Aqui o objetivo é encontrar o modelo que melhor traz melhor performance através de testagem mesmo até que você adquira expertise para definir os mais adequados a cada conjunto de dados, conforme vá manipulando distintos datasets

1.8 Hyperparameter Fine Tuning

Fonte: <a href=”https://br.freepik.com/fotos-gratis/controle-remoto-e-configuracoes-de-som-do-tablet_31621863.htm#query=Hyperparameter%20Fine%20Tuning%20commands&position=1&from_view=search&track=ais&uuid=a8fe3734-5aee-4c7c-8bd8-abd56eb725d6">Imagem de pvproductions</a> no Freepik

O ajuste fino dos hiperparâmetros é uma etapa crucial para otimizar o desempenho dos modelos de machine learning em projetos de ciência de dados. Os hiperparâmetros são configurações ajustáveis que controlam o comportamento e a capacidade dos modelos, como a profundidade de uma árvore de decisão ou a taxa de aprendizado em uma rede neural. Uma técnica comum para realizar o ajuste fino é a busca em grade (Grid Search) ou a busca aleatória (Random Search) dos melhores hiperparâmetros.

No Python com scikit-learn, é viável realizar a busca em grade para encontrar os melhores hiperparâmetros de um modelo, especificando uma grade de valores para diferentes hiperparâmetros e utilizando validação cruzada para avaliar o desempenho do modelo em cada combinação de hiperparâmetros.

Uma outra abordagem é a otimização bayesiana, como implementada na biblioteca Hyperopt em Python. Essa técnica utiliza processos estocásticos para encontrar os melhores hiperparâmetros de forma mais eficiente do que a busca em grade, explorando o espaço de busca de forma mais inteligente. Esses métodos permitem encontrar combinações ideais de hiperparâmetros que maximizem o desempenho do modelo, resultando em modelos mais precisos e generalizáveis para os dados de teste ou futuros dados não vistos.

1.9 Interpretação e Tradução do Erro

A interpretação e a tradução de erros são passos fundamentais na análise dos resultados de modelos de ciência de dados, visando compreender as razões por trás das falhas e dos acertos. Isso envolve identificar e analisar os erros cometidos pelo modelo, compreendendo se são erros sistemáticos ou aleatórios. Em um projeto de classificação com Python usando scikit-learn, após treinar um modelo de Random Forest Classifier para prever categorias, é crucial analisar as instâncias onde o modelo falha na classificação. Utilizando métodos como matriz de confusão e métricas de avaliação (como precisão, recall, entre outras), é possível identificar classes onde o modelo teve maior dificuldade de acerto, ajudando a entender possíveis padrões ou deficiências na generalização do modelo.

A interpretação dos erros pode envolver técnicas avançadas, como a utilização de métodos de interpretabilidade de modelos, incluindo a importância das features ou técnicas de explainability. Técnicas de explainability referem-se a métodos e abordagens utilizados para entender e explicar como os modelos de machine learning tomam decisões ou fazem predições. O objetivo dessas técnicas é tornar os modelos mais transparentes e compreensíveis para os humanos, possibilitando a interpretação das razões por trás de uma determinada predição ou classificação.

A Feature Importance avalia a importância relativa de cada variável ou feature para as predições do modelo. O uso de SHAP (SHapley Additive exPlanations) em Python — técnica de explainability — , que atribui contribuições de cada feature para as predições do modelo. Isso não apenas auxilia na compreensão dos erros, mas também na explicação de como o modelo está tomando suas decisões, tornando a análise mais transparente e possibilitando melhorias nos dados ou no próprio modelo para reduzir erros futuros.

1.10 Deploy do modelo em produção

O deploy de um modelo em produção é a etapa em que o modelo de machine learning é implementado para fazer predições ou realizar tarefas em um ambiente real. Isso envolve integrar o modelo em um sistema ou aplicação que possa receber entradas, enviar esses dados ao modelo para processamento e retornar as predições ou resultados. Digamos que você desenvolveu um modelo de classificação de imagens usando Python e TensorFlow, o deploy poderia envolver a criação de uma API utilizando frameworks como Flask ou FastAPI, permitindo que outras aplicações envie imagens para o modelo realizar predições.

É indispensável a realização de testes extensivos após o deploy para garantir que o modelo esteja funcionando corretamente e produzindo resultados precisos. A monitoração contínua do desempenho do modelo em produção também é essencial, permitindo ajustes ou atualizações caso o desempenho comece a decair devido a mudanças nos dados ou nos requisitos da aplicação. Bibliotecas como Flask, Django, TensorFlow Serving, entre outras, são comumente utilizadas para implementar o deploy de modelos em produção, facilitando a disponibilização e a integração dos modelos em sistemas e aplicações do mundo real.

Por outro lado, o deploy pode não ser realizado em algumas situações. Às vezes, mesmo com um modelo bem treinado e validado, pode ser que seu desempenho ou suas premissas não atendam aos requisitos práticos ou éticos para implementação. Aspectos como a precisão insuficiente para aplicação real, custos elevados de manutenção ou limitações legais e éticas podem ser considerações importantes para não realizar o deploy.

A falta de infraestrutura adequada para sustentar o modelo em produção, como capacidade computacional ou recursos financeiros para manter o modelo em operação, também pode ser um fator impeditivo. Em alguns casos, a incerteza sobre a aceitação do modelo pelo público ou pelas partes interessadas pode levar à decisão de não implementá-lo.

Portanto, a decisão de não realizar o deploy de um modelo de ciência de dados pode ser estratégica, visando evitar problemas futuros ou considerando fatores práticos, éticos e financeiros que possam impactar sua utilização no mundo real. Essa decisão deve ser cuidadosamente ponderada, levando em conta não apenas a qualidade do modelo, mas também o contexto e os requisitos do ambiente em que será implementado.

Considerações

Ao percorrer os 10 passos cruciais em um projeto de ciência de dados, você se depara com um roteiro valioso para extrair insights e tomar decisões embasadas a partir dos dados. Desde a compreensão do problema até o deploy do modelo em produção, cada etapa desempenha um papel crucial na construção de soluções eficazes e na obtenção de resultados significativos. Esses passos não apenas guiam seu caminho, mas também oferecem uma estrutura para enfrentar desafios e refinamentos ao longo do processo.

Ao se aventurar nesse universo da ciência de dados, convido você a explorar cada etapa, a experimentar diferentes técnicas, linguagens de programação e bibliotecas, e a se engajar com a comunidade de ciência de dados. Use este guia como uma bússola em futuros projetos, adaptando e aprimorando conforme necessário. Compartilhe suas experiências, desafios e sucessos nos comentários, e junte-se a essa jornada de aprendizado contínuo na ciência de dados. Afinal, cada projeto oferece uma oportunidade única de crescimento e descoberta, tornando-se um marco significativo em sua trajetória na área.

Aproveito a oportunidade para te convidar a participar da Comunidade DS e avançar ainda mais no desenvolvimento de suas habilidades com Python, através da formação gratuita Data Starter para você aprimorar seus estudos em dados.

--

--