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
SimpleImputerpara 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
OneHotEncoderque 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
Pipechamando a funçãogera_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.