Tweet Share Share

Última actualização em 17 de Agosto de 2020

Maprendizagem de modelagem preditiva só é tão boa como os seus dados, e os seus dados só são tão bons como a forma como você os prepara para a modelagem.

A abordagem mais comum na preparação de dados é estudar um conjunto de dados e rever as expectativas dos algoritmos de aprendizagem de uma máquina, depois escolher cuidadosamente as técnicas de preparação de dados mais adequadas para transformar os dados brutos para melhor satisfazer as expectativas do algoritmo. Isto é lento, caro e requer uma vasta experiência.

Uma abordagem alternativa à preparação de dados é pesquisar em grade um conjunto de técnicas comuns e comumente úteis de preparação de dados para os dados brutos. Esta é uma filosofia alternativa para a preparação de dados que trata a transformação dos dados como mais um hiperparâmetro do pipeline de modelagem a ser pesquisado e ajustado.

Esta abordagem requer menos experiência do que a abordagem manual tradicional para a preparação de dados, embora seja computacionalmente cara. O benefício é que ela pode ajudar na descoberta de soluções não-intuitivas de preparação de dados que atinjam bom ou melhor desempenho para um dado problema de modelagem preditiva.

Neste tutorial, você descobrirá como usar a abordagem de pesquisa em grade para preparação de dados com dados tabulares.

Após completar este tutorial, você saberá:

  • A pesquisa em grade fornece uma abordagem alternativa para preparação de dados tabulares, onde as transformações são testadas como hiperparâmetros do pipeline de modelagem.
  • Como usar o método de busca em grade para preparação de dados para melhorar o desempenho do modelo em relação a uma linha de base para um conjunto de dados de classificação padrão.
  • Como usar o método de busca em grade para preparação de dados para melhorar ainda mais o desempenho do modelo.
  • >

Pickstart seu projeto com meu novo livro Data Preparation for Machine Learning, incluindo tutoriais passo-a-passo e os arquivos de código fonte Python para todos os exemplos.

>

Deixamos começar.

Como usar o método de preparação de dados de pesquisa em grade
Photo by Wall Boat, alguns direitos reservados.

Visão geral do tutorial

Este tutorial está dividido em três partes; elas são:

  1. Técnica de Pesquisa de Dados para Preparação de Dados
  2. Base de Dados e Performance
    1. Dataset de Classificação de Vinhos
    2. Execução do Modelo de Linha de Base
  3. Base de Pesquisa de Dados para Preparação de Dados

Técnica de Pesquisa de Dados para Preparação de Dados

Preparação de Dados pode ser um desafio.

A abordagem mais frequentemente prescrita e seguida é analisar o conjunto de dados, rever os requisitos dos algoritmos e transformar os dados brutos para melhor atender às expectativas dos algoritmos.

Esta abordagem pode ser eficaz, mas também é lenta e pode requerer profunda experiência com análise de dados e algoritmos de aprendizagem de máquina.

Uma abordagem alternativa é tratar a preparação das variáveis de entrada como um hiperparâmetro do pipeline de modelagem e ajustá-lo juntamente com a escolha das configurações do algoritmo e do algoritmo.

Esta pode ser uma transformação de dados que “não deve funcionar” ou “não deve ser apropriada para o algoritmo” ainda resulta em bom ou ótimo desempenho. Alternativamente, pode ser a ausência de uma transformação de dados para uma variável de entrada que é considerada “absolutamente necessária”, mas que resulta em bom ou ótimo desempenho.

Isso pode ser conseguido projetando uma busca em grade de técnicas de preparação de dados e/ou seqüências de técnicas de preparação de dados em dutos. Isto pode envolver a avaliação de cada uma em um único algoritmo de aprendizagem de máquina escolhido, ou em um conjunto de algoritmos de aprendizagem de máquina.

O benefício desta abordagem é que ela sempre resulta em sugestões de modelagem de pipelines que dão bons resultados relativos. Mais importante ainda, pode desenterrar as soluções não óbvias e não-intuitivas para os praticantes sem a necessidade de conhecimentos profundos.

Podemos explorar esta abordagem de preparação de dados com um exemplo trabalhado.

Antes de mergulharmos num exemplo trabalhado, vamos primeiro selecionar um conjunto de dados padrão e desenvolver uma linha de base em desempenho.

Quer começar com a preparação de dados?

Realizar meu curso de 7 dias grátis por email (com código de exemplo).

Clique para se inscrever e também obter uma versão PDF Ebook grátis do curso.

Download Your FREE Mini-Course

Dataset e Performance Baseline

Nesta secção, vamos primeiro seleccionar um conjunto de dados padrão de aprendizagem da máquina e estabelecer uma linha de base de desempenho neste conjunto de dados. Isto fornecerá o contexto para explorar o método de pesquisa de grade de preparação de dados na próxima seção.

Dataset de Classificação de Vinhos

Usaremos o conjunto de dados de classificação de vinhos.

Este conjunto de dados tem 13 variáveis de entrada que descrevem a composição química de amostras de vinho e requer que o vinho seja classificado como um dos três tipos.

Pode aprender mais sobre o conjunto de dados aqui:

  • Dataset de Vinho (wine.csv)
  • Dataset de Descrição de Vinho (wine.names)

Não é necessário descarregar o conjunto de dados, uma vez que o descarregaremos automaticamente como parte dos nossos exemplos trabalhados.

Abrir o conjunto de dados e rever os dados brutos. As primeiras linhas de dados estão listadas abaixo.

Vemos que é um problema de modelagem preditiva de classificação multiclasse com variáveis de entrada numéricas, cada uma com escalas diferentes.

O exemplo abaixo carrega o conjunto de dados e divide-o nas colunas de entrada e saída, em seguida, resume as matrizes de dados.

Executando o exemplo, podemos ver que o conjunto de dados foi carregado corretamente e que há 179 linhas de dados com 13 variáveis de entrada e uma única variável de destino.

1
(178, 13) (178,)

Próximo, vamos avaliar um modelo neste conjunto de dados e estabelecer uma linha de base no desempenho.

Baseline Model Performance

Podemos estabelecer uma linha de base de desempenho na tarefa de classificação de vinhos avaliando um modelo sobre os dados de entrada brutos.

Neste caso, vamos avaliar um modelo de regressão logística.

Primeiro, podemos definir uma função para carregar o conjunto de dados e executar alguma preparação mínima de dados para garantir que os inputs são numéricos e o alvo é codificado com etiquetas.

Avaliaremos o modelo usando o padrão ouro de estratificação k-validação cruzada repetida com 10 dobras e três repetições.

Podemos então chamar a função para carregar o conjunto de dados, definir o nosso modelo, depois avaliá-lo, relatando a média e a precisão do desvio padrão.

Aplicando isto, o exemplo completo de avaliação de um modelo de regressão logística no conjunto de dados de classificação do vinho bruto é listado abaixo.

A execução do exemplo avalia o desempenho do modelo e reporta a precisão da classificação da média e do desvio padrão.

Nota: Seus resultados podem variar dada a natureza estocástica do algoritmo ou do procedimento de avaliação, ou diferenças na precisão numérica. Considere executar o exemplo algumas vezes e compare o resultado médio.

Neste caso, podemos ver que o modelo de regressão logística se encaixa nos dados de entrada brutos, atingindo a precisão de classificação média de cerca de 95,3 por cento, fornecendo uma linha de base no desempenho.

1
Acuracidade: 0.953 (0.048)

Próximo, vamos explorar se podemos melhorar o desempenho usando a abordagem baseada na pesquisa em grade para a preparação dos dados.

Abordagem de pesquisa em grade para a preparação dos dados

Nesta seção, podemos explorar se podemos melhorar o desempenho usando a abordagem de pesquisa em grade para a preparação dos dados.

O primeiro passo é definir uma série de modelos de pipelines para avaliar, onde cada pipeline define uma (ou mais) técnicas de preparação de dados e termina com um modelo que toma os dados transformados como entrada.

Definiremos uma função para criar esses pipelines como uma lista de tuples, onde cada tuple define o nome curto para o pipeline e para o próprio pipeline. Vamos avaliar uma gama de diferentes métodos de escala de dados (ex. MinMaxScaler e StandardScaler), transformações de distribuição (QuantileTransformer e KBinsDiscretizer), bem como transformações de redução de dimensionalidade (PCA e SVD).

Podemos então chamar esta função para obter a lista de transformações, depois enumerar cada uma, avaliando-a e relatando o desempenho ao longo do caminho.

No final da execução, podemos criar um gráfico box e whisker para cada conjunto de pontuações e comparar visualmente as distribuições dos resultados.

1
2
3
4

# traçar o resultado
pyplot.boxplot(resultados, rótulos=nomes, showmeans=verdade)
pyplot.show()

Juntando isto, o exemplo completo de técnicas de preparação de dados de pesquisa em grelha no conjunto de dados de classificação de vinhos está listado abaixo.

Executar o exemplo avalia o desempenho de cada pipeline e relata a precisão da classificação da média e do desvio padrão.

Nota: Os seus resultados podem variar dada a natureza estocástica do algoritmo ou do procedimento de avaliação, ou diferenças na precisão numérica. Considere executar o exemplo algumas vezes e compare o resultado médio.

Neste caso, podemos ver que a padronização das variáveis de entrada e o uso de uma transformação de quantil, ambos alcançam o melhor resultado com uma precisão de classificação de cerca de 98.7 por cento, uma melhoria em relação à linha de base sem preparação de dados que atingiu uma precisão de classificação de 95,3 por cento.

Pode adicionar os seus próprios pipelines de modelagem à função get_pipelines() e comparar o seu resultado.

Pode obter melhores resultados?
Deixe-me saber nos comentários abaixo.

1
2
3
4
5
6

>norm: 0.976 (0,031)
>std: 0,987 (0,023)
>quan: 0,987 (0,023)
>kbins: 0,968 (0,045)
>pca: 0,963 (0,039)
>svd: 0,953 (0,048)

É criada uma figura mostrando gráficos de caixa e whisker que resumem a distribuição das pontuações de precisão de classificação para cada técnica de preparação de dados. Podemos ver que a distribuição das pontuações para a padronização e as transformações de quantis são compactas e muito semelhantes e têm um outlier. Podemos ver que a distribuição de escores para as outras transformadas é maior e mais inclinada.

Os resultados podem sugerir que a padronização do conjunto de dados é provavelmente um passo importante na preparação dos dados e das transformações relacionadas, como a transformação de quantil, e talvez mesmo a transformação de potência possa oferecer benefícios se combinada com a padronização, tornando uma ou mais variáveis de entrada mais Gaussianas.

Box and Whisker Plot of Classification Accuracy for Different Data Transforms on the Wine Classification Dataset

Podemos também explorar sequências de transformadas para ver se elas podem oferecer uma elevação no desempenho.

Por exemplo, podemos querer aplicar a selecção de características RFE após a transformação de normalização para ver se os mesmos ou melhores resultados podem ser utilizados com menos variáveis de entrada (e.Por exemplo, menos complexidade).

Também podemos querer ver se uma transformação de potência precedida de uma transformação de escala de dados pode alcançar um bom desempenho no conjunto de dados, pois acreditamos que poderia dar o sucesso da transformação de quantil.

A função get_pipelines() atualizada com seqüências de transformadas é fornecida abaixo.

Atualizando isto, o exemplo completo é listado abaixo.

A execução do exemplo avalia o desempenho de cada pipeline e relata a precisão da classificação da média e desvio padrão.

Nota: Seus resultados podem variar dada a natureza estocástica do algoritmo ou procedimento de avaliação, ou diferenças na precisão numérica. Considere executar o exemplo algumas vezes e compare o resultado médio.

Neste caso, podemos ver que a padronização com seleção de características oferece uma elevação adicional na precisão de 98,7% a 98,9%, embora a escala de dados e a transformação de potência não ofereçam nenhum benefício adicional sobre a transformação de quantil.

1
2

>std: 0.989 (0,022)
>power: 0,987 (0.023)

É criada uma figura mostrando gráficos de caixa e whisker que resumem a distribuição das pontuações de precisão de classificação para cada técnica de preparação de dados.

Vemos que a distribuição dos resultados para ambos os pipelines de transformadas é compacta com muito pouco espalhamento além do outlier.

Box and Whisker Plot of Classification Accuracy for Different Sequences of Data Transforms on the Wine Classification Dataset

Outras Leituras

Esta secção fornece mais recursos sobre o tópico se você estiver procurando ir mais fundo.

Livros

  • Engenharia e Seleção de Recursos, 2019.
  • Engenharia de Recursos para Aprendizagem de Máquinas, 2018.

APIs

  • sklearn.pipeline.Pipeline API.

Resumo

Neste tutorial, você descobriu como usar uma abordagem de pesquisa em grade para a preparação de dados com dados tabulares.

Especificamente, você aprendeu:

  • Pesquisa em grade fornece uma abordagem alternativa para a preparação de dados tabulares, onde as transformações são tentadas como hiperparâmetros do pipeline de modelagem.
  • Como usar o método de busca em grade para preparação de dados para melhorar o desempenho do modelo em relação a uma linha de base para um conjunto de dados de classificação padrão.
  • Como usar o método de busca em grade para preparação de dados para melhorar o desempenho do modelo.

Você tem alguma pergunta?
Saiba suas perguntas nos comentários abaixo e eu farei o meu melhor para responder.

Preparação de Dados Modernos!

Prepare os dados de aprendizagem da sua máquina em minutos

…com apenas algumas linhas de código python

Descubra como no meu novo Ebook:
Preparação de Dados para Aprendizagem de Máquina

Fornece tutoriais de auto-estudo com código de trabalho completo em:
Selecção de Características, RFE, Limpeza de Dados, Transformações de Dados, Dimensionamento, Redução de Dimensões, e muito mais…

Bring Modern Data Preparation Techniques to
Your Machine Learning Projects

See What’s Inside

>

Tweet Share Share

Deixe uma resposta

O seu endereço de email não será publicado.