Tweet Share Share

Ultimo aggiornamento del 17 agosto 2020

Le prestazioni della modellazione predittiva dell’apprendimento automatico sono buone solo quanto i vostri dati, e i vostri dati sono buoni solo quanto il modo in cui li preparate per la modellazione.

L’approccio più comune alla preparazione dei dati è quello di studiare un set di dati ed esaminare le aspettative di un algoritmo di apprendimento automatico, quindi scegliere attentamente le tecniche di preparazione dei dati più appropriate per trasformare i dati grezzi per soddisfare al meglio le aspettative dell’algoritmo. Questo è lento, costoso e richiede una grande quantità di competenze.

Un approccio alternativo alla preparazione dei dati è quello di cercare a griglia una suite di tecniche di preparazione dei dati comuni e comunemente utili ai dati grezzi. Questa è una filosofia alternativa per la preparazione dei dati che tratta le trasformazioni dei dati come un altro iperparametro della pipeline di modellazione da ricercare e sintonizzare.

Questo approccio richiede meno competenze del tradizionale approccio manuale alla preparazione dei dati, sebbene sia computazionalmente costoso. Il vantaggio è che può aiutare nella scoperta di soluzioni non intuitive per la preparazione dei dati che raggiungono buone o migliori prestazioni per un dato problema di modellazione predittiva.

In questo tutorial, scoprirete come utilizzare l’approccio di ricerca a griglia per la preparazione dei dati con dati tabulari.

Dopo aver completato questo tutorial, saprete:

  • La ricerca a griglia fornisce un approccio alternativo alla preparazione dei dati per dati tabulari, dove le trasformazioni sono provate come iperparametri della pipeline di modellazione.
  • Come usare il metodo di ricerca a griglia per la preparazione dei dati per migliorare le prestazioni del modello rispetto a una linea di base per un set di dati di classificazione standard.
  • Come cercare a griglia sequenze di metodi di preparazione dei dati per migliorare ulteriormente le prestazioni del modello.

Avvia il tuo progetto con il mio nuovo libro Data Preparation for Machine Learning, che include tutorial passo-passo e i file di codice sorgente Python per tutti gli esempi.

Iniziamo.

Come cercare a griglia le tecniche di preparazione dei dati
Foto di Wall Boat, alcuni diritti riservati.

Panoramica del tutorial

Questo tutorial è diviso in tre parti; esse sono:

  1. Tecnica di ricerca a griglia per la preparazione dei dati
  2. Dataset e prestazioni di base
    1. Dataset di classificazione del vino
    2. Prestazioni di base del modello
  3. Approccio di ricerca a griglia per la preparazione dei dati

Tecnica di ricerca a griglia per la preparazione dei dati

La preparazione dei dati può essere difficile.

L’approccio più spesso prescritto e seguito è quello di analizzare il set di dati, rivedere i requisiti degli algoritmi e trasformare i dati grezzi per soddisfare al meglio le aspettative degli algoritmi.

Questo può essere efficace, ma è anche lento e può richiedere una profonda esperienza nell’analisi dei dati e negli algoritmi di apprendimento automatico.

Un approccio alternativo è quello di trattare la preparazione delle variabili di input come un iperparametro della pipeline di modellazione e di metterlo a punto insieme alla scelta dell’algoritmo e delle configurazioni dell’algoritmo.

Questo potrebbe essere una trasformazione dei dati che “non dovrebbe funzionare” o “non dovrebbe essere appropriato per l’algoritmo”, eppure risulta in buone o ottime prestazioni. In alternativa, può essere l’assenza di una trasformazione dei dati per una variabile di input che è ritenuta “assolutamente necessaria” eppure risulta in buone o ottime prestazioni.

Questo può essere ottenuto progettando una ricerca a griglia di tecniche di preparazione dei dati e/o sequenze di tecniche di preparazione dei dati in pipeline. Ciò può comportare la valutazione di ciascuna su un singolo algoritmo di apprendimento automatico scelto, o su una suite di algoritmi di apprendimento automatico.

Il vantaggio di questo approccio è che risulta sempre in suggerimenti di pipeline di modellazione che danno buoni risultati relativi. Soprattutto, può portare alla luce le soluzioni non ovvie e non intuitive per i professionisti senza la necessità di una profonda esperienza.

Possiamo esplorare questo approccio alla preparazione dei dati con un esempio funzionante.

Prima di immergerci in un esempio funzionante, selezioniamo un set di dati standard e sviluppiamo una linea di base nelle prestazioni.

Vuoi iniziare a preparare i dati?

Prendi subito il mio corso crash gratuito di 7 giorni via email (con codice di esempio).

Clicca per iscriverti e ottenere anche una versione gratuita del corso in PDF Ebook.

Scarica il tuo mini-corso gratuito

Dataset e linea di base delle prestazioni

In questa sezione, selezioneremo prima un dataset standard di apprendimento automatico e stabiliremo una linea di base delle prestazioni su questo dataset. Questo fornirà il contesto per esplorare il metodo di ricerca a griglia per la preparazione dei dati nella sezione successiva.

Dataset di classificazione del vino

Utilizzeremo il dataset di classificazione del vino.

Questo dataset ha 13 variabili di input che descrivono la composizione chimica di campioni di vino e richiede che il vino sia classificato come uno dei tre tipi.

Puoi saperne di più sul dataset qui:

  • Wine Dataset (wine.csv)
  • Wine Dataset Description (wine.names)

Non è necessario scaricare il dataset perché lo scaricheremo automaticamente come parte dei nostri esempi di lavoro.

Apri il dataset e guarda i dati grezzi. Le prime righe di dati sono elencate qui sotto.

Possiamo vedere che si tratta di un problema di modellazione predittiva di classificazione multiclasse con variabili di input numeriche, ognuna delle quali ha scale diverse.

L’esempio qui sotto carica il dataset e lo divide nelle colonne di input e di output, poi riassume gli array di dati.

Eseguendo l’esempio, possiamo vedere che il dataset è stato caricato correttamente e che ci sono 179 righe di dati con 13 variabili di input e una singola variabile target.

1
(178, 13) (178,)

In seguito, valutiamo un modello su questo set di dati e stabiliamo una linea di base nelle prestazioni.

Prestazioni di base del modello

Possiamo stabilire una linea di base nelle prestazioni sul compito di classificazione del vino valutando un modello sui dati grezzi di input.

In questo caso, valuteremo un modello di regressione logistica.

Prima di tutto, possiamo definire una funzione per caricare il dataset ed eseguire una preparazione minima dei dati per assicurarci che gli input siano numerici e che l’obiettivo sia codificato con un’etichetta.

Valuteremo il modello usando il gold standard della cross-validazione stratificata k-fold ripetuta con 10 pieghe e tre ripetizioni.

Possiamo quindi chiamare la funzione per caricare il dataset, definire il nostro modello, quindi valutarlo, riportando la precisione media e la deviazione standard.

Collegando il tutto, l’esempio completo di valutazione di un modello di regressione logistica sull’insieme di dati grezzi di classificazione del vino è elencato qui sotto.

Eseguendo l’esempio si valutano le prestazioni del modello e si riporta la precisione di classificazione media e la deviazione standard.

Nota: I vostri risultati possono variare a causa della natura stocastica dell’algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Considerate di eseguire l’esempio più volte e confrontate il risultato medio.

In questo caso, possiamo vedere che il modello di regressione logistica adattato ai dati grezzi di input ha raggiunto un’accuratezza di classificazione media di circa il 95,3%, fornendo una linea di base nelle prestazioni.

1
Raccordo: 0.953 (0.048)

Prossimo, esploriamo se possiamo migliorare le prestazioni usando l’approccio alla preparazione dei dati basato sulla ricerca a griglia.

Approccio alla preparazione dei dati basato sulla ricerca a griglia

In questa sezione, possiamo esplorare se possiamo migliorare le prestazioni usando l’approccio alla preparazione dei dati basato sulla ricerca a griglia.

Il primo passo è quello di definire una serie di pipeline di modellazione da valutare, dove ogni pipeline definisce una (o più) tecniche di preparazione dei dati e termina con un modello che prende i dati trasformati come input.

Definiremo una funzione per creare queste pipeline come una lista di tuple, dove ogni tupla definisce il nome breve della pipeline e la pipeline stessa. Valuteremo una serie di diversi metodi di scalatura dei dati (ad esempio MinMaxScaler e StandardScaler), trasformazioni di distribuzione (QuantileTransformer e KBinsDiscretizer), così come trasformazioni di riduzione della dimensionalità (PCA e SVD).

Possiamo quindi chiamare questa funzione per ottenere la lista di trasformazioni, quindi enumerare ciascuna, valutandola e riportando le prestazioni lungo il percorso.

Al termine dell’esecuzione, possiamo creare un box and whisker plot per ogni set di punteggi e confrontare visivamente le distribuzioni dei risultati.

1
2
3
4

# tracciare il risultato
pyplot.boxplot(results, labels=names, showmeans=True)
pyplot.show()

Collegando questo, l’esempio completo di tecniche di preparazione dei dati di ricerca a griglia sul dataset di classificazione del vino è elencato di seguito.

L’esecuzione dell’esempio valuta le prestazioni di ogni pipeline e riporta l’accuratezza di classificazione media e la deviazione standard.

Nota: I vostri risultati possono variare a causa della natura stocastica dell’algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Considerate di eseguire l’esempio più volte e confrontate il risultato medio.

In questo caso, possiamo vedere che la standardizzazione delle variabili di input e l’uso di una trasformazione quantile raggiungono entrambi il miglior risultato con una precisione di classificazione di circa il 98.7 per cento, un miglioramento rispetto alla linea di base senza preparazione dei dati che ha raggiunto un’accuratezza di classificazione del 95,3 per cento.

È possibile aggiungere le proprie pipeline di modellazione alla funzione get_pipelines() e confrontare il loro risultato.

È possibile ottenere risultati migliori?
Fammi sapere nei commenti qui sotto.

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)

Viene creata una figura che mostra i grafici a scatola e baffi che riassumono la distribuzione dei punteggi di precisione di classificazione per ogni tecnica di preparazione dei dati. Possiamo vedere che la distribuzione dei punteggi per la standardizzazione e le trasformazioni quantili sono compatte e molto simili e hanno un outlier. Possiamo vedere che la distribuzione dei punteggi per le altre trasformazioni è più grande e inclinata verso il basso.

I risultati possono suggerire che la standardizzazione del set di dati è probabilmente un passo importante nella preparazione dei dati e nelle trasformazioni correlate, come la trasformazione quantile, e forse anche la trasformazione di potenza può offrire benefici se combinata con la standardizzazione rendendo una o più variabili di input più gaussiane.

Piano a scatola e baffi della precisione di classificazione per diverse trasformazioni dei dati sul set di dati di classificazione del vino

Possiamo anche esplorare sequenze di trasformazioni per vedere se possono offrire un aumento delle prestazioni.

Per esempio, potremmo voler applicare la selezione delle caratteristiche RFE dopo la trasformazione di standardizzazione per vedere se gli stessi o migliori risultati possono essere utilizzati con meno variabili di input (es.

Potremmo anche voler vedere se una trasformazione di potenza preceduta da una trasformazione di ridimensionamento dei dati può ottenere buone prestazioni sul set di dati, come crediamo possa fare visto il successo della trasformazione quantile.

La funzione aggiornata get_pipelines() con sequenze di trasformazioni è fornita di seguito.

Collegando il tutto, l’esempio completo è elencato qui sotto.

L’esecuzione dell’esempio valuta le prestazioni di ogni pipeline e riporta l’accuratezza di classificazione media e la deviazione standard.

Nota: I vostri risultati possono variare a causa della natura stocastica dell’algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Considerate di eseguire l’esempio più volte e confrontate il risultato medio.

In questo caso, possiamo vedere che la standardizzazione con la selezione delle caratteristiche offre un ulteriore aumento dell’accuratezza dal 98,7% al 98,9%, anche se il ridimensionamento dei dati e la trasformazione di potenza non offrono alcun vantaggio aggiuntivo rispetto alla trasformazione quantile.

1
2

>std: 0.989 (0.022)
>potenza: 0.987 (0.023)

Viene creata una figura che mostra i diagrammi box e whisker che riassumono la distribuzione dei punteggi di precisione di classificazione per ogni tecnica di preparazione dei dati.

Si può vedere che la distribuzione dei risultati per entrambe le pipeline di trasformazione è compatta con pochissima diffusione a parte gli outlier.

Piano a scatola e baffi della precisione di classificazione per diverse sequenze di trasformazioni di dati sul set di dati di classificazione del vino

Altre letture

Questa sezione fornisce ulteriori risorse sull’argomento se si desidera approfondire.

Libri

  • Feature Engineering and Selection, 2019.
  • Feature Engineering for Machine Learning, 2018.

APIs

  • sklearn.pipeline.Pipeline API.

Sommario

In questo tutorial, hai scoperto come usare un approccio di ricerca a griglia per la preparazione dei dati con dati tabulari.

In particolare, hai imparato:

  • La ricerca a griglia fornisce un approccio alternativo alla preparazione dei dati per dati tabulari, dove le trasformazioni sono provate come iperparametri della pipeline di modellazione.
  • Come utilizzare il metodo di ricerca a griglia per la preparazione dei dati per migliorare le prestazioni del modello rispetto a una linea di base per un set di dati di classificazione standard.
  • Come cercare a griglia sequenze di metodi di preparazione dei dati per migliorare ulteriormente le prestazioni del modello.

Hai qualche domanda?
Fai le tue domande nei commenti qui sotto e farò del mio meglio per rispondere.

Get a Handle on Modern Data Preparation!

Prepara i tuoi dati di Machine Learning in pochi minuti

…con poche righe di codice python

Scopri come nel mio nuovo Ebook:
Preparazione dei dati per l’apprendimento automatico

Si tratta di tutorial autodidattici con codice funzionante completo su:
Selezione delle caratteristiche, RFE, Pulizia dei dati, Trasformazione dei dati, Scalatura, Riduzione della dimensionalità, e molto altro…

Porta le moderne tecniche di preparazione dei dati ai tuoi progetti di apprendimento automatico

Vedi cosa c’è dentro

Tweet Condividi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.