/ifood-case-data-analyst

Projeto de ensino para o curso Ciência de Dados ministrado por mim na Hashtag

Primary LanguageJupyter Notebook

author

Case iFood - Analista de dados

Considere uma empresa bem estabelecida que atua no setor de varejo de alimentos. Atualmente, eles têm cerca de vários milhares de clientes registrados e atendem quase um milhão de consumidores por ano. Eles vendem produtos de 5 grandes categorias: vinhos, carnes, frutas exóticas, peixes especialmente preparados e produtos doces. Estes podem ser divididos ainda mais em produtos de gold e regulares. Os clientes podem encomendar e adquirir produtos por meio de 3 canais de vendas: lojas físicas, catálogos e site da empresa. Globalmente, a empresa teve receitas sólidas e uma linha de fundo saudável nos últimos 3 anos, mas as perspectivas de crescimento dos lucros para os próximos 3 anos não são promissoras... Por esse motivo, várias iniciativas estratégicas estão sendo consideradas para inverter essa situação. Um deles é melhorar o desempenho das atividades de marketing, com foco especial em campanhas de marketing.

pairplot

Projeto de ensino utilizado em curso de Ciência de Dados ministrado por mim para a Hashtag Treinamentos. Baseado no processo seletivo para Analista de Dados do iFood disponível neste repositório.

Descrição completa do case aqui.

Objetivos

O objetivo deste projeto é mostrar aos alunos como estruturar um projeto para um processo seletivo que foi aplicado na vida real.

Durante o curso, mostrei a importância de realizar o pré-processamento dos dados, bem como a importância de se realizar a análise exploratória dos dados. Muito foi discutido sobre o que deve ser apresentado para em um documento técnico e o que deve ser apresentado em uma apresentação para um público não técnico.

Objetivos detalhados:

  • Construir uma análise exploratória robusta.
  • Segmentar os clientes da base de dados fornecida.
  • Construir um modelo de classificação para prever se um cliente irá comprar o produto oferecido na campanha.
  • Apresentar uma estrutura de projeto de Ciência de Dados, com a utilização de notebooks, scripts, relatórios e repositório no GitHub.
  • Apresentar boas práticas de programação em Python, como a utilização de funções e arquivos de script para facilitar o reaproveitamento de código.
  • Mostrar boas práticas de uso do SciKit-Learn, como a utilização de pipelines e otimização de hiperparâmetros.

Estrutura do repositório

├── case
├── data
├── images
├── notebooks
├── reports
  • Na pasta data estão os dados utilizados no projeto. O arquivo ml_project1_data.csv é o dataset utilizado originalmente. Os demais arquivos são os datasets gerados durante o projeto.
  • Na pasta images estão as imagens utilizadas neste README.
  • Na pasta notebooks estão os notebooks com o desenvolvimento do projeto.
  • Na pasta reports estão os relatórios gerados durante o projeto utilizando a biblioteca ydata-profiling.

Detalhes do dataset utilizado e resumo dos resultados

Uma descrição detalhada do dataset utilizado está disponível aqui.

Com um pipeline com pré-processamento, PCA e K-Means, a base foi segmentada em 3 clusters:

clusters

Análise por cluster:

  • Cluster 0:

    • Renda alta
    • gasto alto
    • muito provalmente não tem filhos
    • mais propenso a aceitar campanhas
    • cluster sem pessoas com escolaridade básica
    • sem um perfil de idade que se destaque
  • Cluster 1:

    • Renda baixa
    • gasto baixo
    • provalmente tem filhos
    • baixa propensão a aceitar campanhas
    • único cluster com porcentagem significativa de pessoas com escolaridade básica
    • pessoas mais jovens
  • Cluster 2:

    • Renda intermediária
    • gasto intermediário
    • provalmente tem filhos
    • pode aceitar campanhas
    • pessoas com idade mais elevada

Posteriormente, três modelos de classificação foram treinados para prever se um cliente irá comprar o produto oferecido na campanha. Os modelos utilizados foram:

  • Regressão Logística
  • Decision Tree
  • KNN

Um DummyClassifier foi utilizado como baseline. Os modelos foram comparados com base em 6 métricas:

comparing_models

Com base nessa comparação, o modelo de Regressão Logística foi escolhido para passar por uma otimização de hiperparâmetros.

Como reproduzir o projeto

O projeto foi desenvolvido utilizando o Python 3.11.5. Para reproduzir o projeto, crie um ambiente virtual com o Conda, ou ferramenta similar, com o Python 3.11.5 e instale as bibliotecas abaixo:

Biblioteca Versão
Imbalanced-Learn 0.11.0
Matplotlib 3.7.2
NumPy 1.24.3
Pandas 1.5.3
Scikit-Learn 1.3.0
Seaborn 0.12.2

Essas são as bibliotecas principais utilizadas no projeto. O relatório foi gerado com a biblioteca ydata-profiling, instale-a se quiser reproduzir o relatório.