Construção de Pipeline - Parte 1

Construção de Pipeline - Parte 1

Introdução ao Workflow de Machine Learning

Desenvolvimento do Workflow

  • O instrutor dá as boas-vindas e introduz o tema da aula, que é o desenvolvimento de um workflow para automatizar etapas como pré-processamento, seleção de características e avaliação do modelo final.
  • A nova base de dados utilizada será a "airline PS Satisfaction", que possui uma classificação binária (Satisfaction ou Disatisfaction) e vários atributos categóricos, exigindo um pré-processamento mais complexo em comparação à base anterior.

Estrutura do Código

  • O código seguirá um padrão modularizado por funções para facilitar as etapas do processo. Serão utilizados três algoritmos: seleção sequencial para frente, para trás e eliminação recursiva (RFE).
  • A biblioteca Pipeline do Scikit-learn será empregada para construir a automação do workflow.

Pré-processamento dos Dados

Transformações Necessárias

  • A base contém atributos mistos (numéricos e categóricos), necessitando de transformações distintas: normalização para numéricos e outras transformações específicas para categóricos.
  • Será utilizado o SimpleImputer para lidar com dados faltantes, permitindo a automação das funções fit e fit_transform dentro do pipeline.

Limpeza dos Dados

  • O instrutor simplifica a etapa de limpeza dos dados no pipeline, removendo apenas colunas irrelevantes. As colunas a serem removidas são passadas como parâmetros.
  • A classe alvo da predição será tratada genericamente usando LabelEncoder, facilitando sua transformação de categórica para numérica.

Tratamento de Dados Faltantes

Estratégias Utilizadas

  • Para atributos categóricos com dados faltantes, será aplicada a moda (categoria mais frequente), enquanto que atributos numéricos receberão média ou mediana conforme necessário.
  • Uma função foi criada para gerar ruído em colunas categóricas, permitindo ao usuário definir quantas amostras devem ser substituídas por valores nulos.

Implementação da Função

  • A função utiliza amostragem aleatória (sample) para selecionar índices das linhas onde os valores serão substituídos por nulos. Isso ajuda na simulação de dados faltantes durante o treinamento do modelo.

Pipeline e Imputação de Dados

Estruturação de Índices e Uso da Função Lock

  • O autor menciona a utilização de índices das linhas armazenados em uma variável chamada "Change" para facilitar a pesquisa na DataFrame usando a função Lock, que requer os índices das linhas e o nome da coluna desejada.

Injeção de Dados Faltantes

  • A técnica de imputação é discutida, onde dados faltantes são injetados nas colunas. O objetivo é testar se essa abordagem, utilizando o método Simple Uder ou Modas, será eficaz para dados categóricos.

Continuidade nas Operações

  • As operações subsequentes continuam utilizando funções previamente abordadas, como separação dos atributos da classe e geração do modelo de predição. Os algoritmos de seleção de características permanecem os mesmos.

Alterações no Pipeline

  • O autor destaca mudanças na implementação do pipeline, removendo o treinamento dentro da função para permitir que apenas objetos com métodos Fit ou Fit Transform sejam incluídos automaticamente.

Geração do Pipeline

  • É mencionado um guia da documentação do Scikit-Learn sobre como gerar um pipeline adequado para atributos mistos. O primeiro passo envolve identificar quais atributos são numéricos e categóricos.

Seleção de Atributos Numéricos e Categóricos

Identificação dos Atributos Numéricos

  • O autor utiliza a função select types do DataFrame para selecionar atributos numéricos, especificando que as colunas devem ser rotuladas como int64 ou float64.

Criação dos Atributos Categóricos

  • Similarmente, os atributos categóricos são identificados através da mesma função select types, focando em colunas do tipo Object.

Separação dos Conjuntos de Dados

  • Observa-se que a base de dados possui conjuntos separados para treino (104.000 amostras) e teste (26.000 amostras), facilitando o processo ao permitir ler arquivos distintos para cada conjunto.

Padronização nos Processos

  • É enfatizada a importância da padronização entre os conjuntos treino e teste durante o pré-processamento, garantindo consistência nos dados utilizados pelo pipeline.

Preparação dos Dados para Análise

  • O autor decide utilizar o conjunto teste reduzido como amostra oficial para simplificar a demonstração prática das técnicas discutidas até então.

Pipeline de Pré-processamento com Transformers

Introdução ao Pipeline

  • O apresentador discute a criação de um pipeline para aplicar duas tarefas principais: limpeza de dados numéricos e normalização.
  • É necessário especificar as etapas do pipeline em formato de lista, onde cada etapa é representada por uma tupla contendo o nome da etapa e o método a ser utilizado.

Etapas do Pipeline

  • A primeira tarefa no pipeline é a imputação dos dados faltantes usando o SimpleImputer, com a estratégia definida como mediana.
  • A segunda tarefa envolve a normalização dos dados numéricos utilizando o StandardScaler, que realiza o reescalonamento padrão.

Tratamento de Dados Categóricos

  • Um segundo pipeline é criado para os dados categóricos, começando com um OneHotEncoder que transforma as colunas categóricas em novas colunas binárias.
  • Além disso, há uma etapa adicional para substituir dados faltantes nos atributos categóricos, utilizando novamente o SimpleImputer, mas agora com a estratégia "most frequent" (moda).

Agrupamento das Transformações

  • As transformações são agrupadas usando ColumnTransformer, permitindo aplicar diferentes pré-processamentos aos tipos variados de atributos na base de dados.
  • O apresentador menciona que as transformações devem ser especificadas em uma lista de tuplas, detalhando quais operações serão realizadas em cada tipo de dado.

Criação do Pipeline Final

  • O pipeline final é instanciado e composto por três etapas: pré-processamento, seleção de características e avaliação dos modelos.
  • Cada etapa do pipeline é organizada em listas duplas, garantindo que todas as operações necessárias sejam executadas automaticamente.

Construção e Testagem de um Pipeline

Estrutura do Pipeline

  • O pipeline foi finalizado e está pronto para ser executado, com a construção automatizada e genérica, sem especificar o nome do DataFrame.

Testagem do Pipeline

  • A base de dados "teste.csv" será carregada para testar o pipeline. Todo o código anterior precisa ser executado antes da testagem.

Limpeza dos Dados

  • Um novo DataFrame chamado pinfo é criado, onde alguns dados podem ser removidos, como ID e atributos categóricos que precisam ser transformados em numéricos.
  • A função de limpeza foi deixada genérica para facilitar a remoção de colunas indesejadas e transformação da classe "Satisfaction" usando Label Encoder.

Geração de Dados Faltantes

  • O processo inclui a injeção de dados faltantes em amostras aleatórias, visando preparar os dados para aplicação no pipeline.
  • Serão geradas 10 amostras aleatórias com valores faltantes na coluna "Class", enquanto outras colunas numéricas também terão amostras faltantes injetadas.

Preparação Final do Pipeline

  • Após gerar os dados faltantes, a base está pronta para rodar o pipeline. Os atributos serão separados entre treino e teste.
  • O primeiro passo é criar um objeto Pipe chamando a função gera_pipeline, passando o DataFrame sem a classe como entrada.

Seleção de Características

  • O modelo utilizado será o Decision Tree Classifier, junto com um objeto de seleção de características (Future Selection).
  • Três parâmetros principais são definidos: conjunto de dados (DataFrame), modelo (Decision Tree), e algoritmo de seleção de características.

Treinamento do Pipeline

  • O treinamento do pipeline é iniciado com Pipe.fit, utilizando os conjuntos treino e teste preparados anteriormente.
  • Um erro ocorre devido à falta da string literal necessária; isso destaca a importância da correta passagem dos objetos no pipeline.

Visualização das Etapas do Pipeline

  • Após corrigir os erros, o treinamento prossegue normalmente. Uma visualização das etapas do pipeline é gerada, mostrando as fases desde pré-processamento até classificação final.
  • As etapas incluem pré-processamento dos dados numéricos e categóricos, limpeza dos dados, padronização e aplicação do encoder nos atributos categóricos.

Seleção de Características e Pipeline de Algoritmos

Abordagem Sequential Future Selector

  • A seleção de características é realizada utilizando a abordagem "sequential Future selector" com o algoritmo "decision 3". Essa etapa é crucial para avaliar a eficácia da seleção de características antes de passar os dados para o classificador.

Testagem do Pipeline

  • O apresentador menciona que no próximo vídeo continuará a testagem do pipeline construído, focando na geração de pipelines para outros dois algoritmos. Isso inclui a abordagem "backward" e o método RFE (Recursive Feature Elimination).
  • Será feita uma comparação das características extraídas entre as diferentes abordagens, permitindo uma análise mais profunda sobre qual método se mostra mais eficaz na seleção de características.
  • O encerramento do vídeo indica que novas informações e resultados serão apresentados em breve, mantendo o público engajado para as próximas etapas do processo.