Addestrare dei modelli predittivi richiede che i nostri dati siano in un formato adeguato. Non possiamo fornire il nostro file .csv ad un modello e aspettarci che questo impari correttamente a generalizzare.

In questo articolo, vedremo come preparare i dati per il machine learning, partendo dalla pipeline di preparazione dei dati fino alla divisione in set di addestramento, validazione e di test.

Pipeline di preparazione dei dati

Una pipeline è una serie di passaggi che vengono eseguiti per preparare i dati per l'elaborazione da parte del modello di machine learning. La pipeline può variare in base al tipo di dati che si ha a disposizione, ma di solito include i seguenti passaggi:

  1. Raccolta dei dati: il primo passo è raccogliere i dati che si vogliono utilizzare per addestrare il modello di machine learning. I dati possono provenire da diverse fonti, come ad esempio file CSV, database, API, sensori IoT e altre.
  2. Pulizia dei dati: una volta raccolti i dati, è importante pulirli eliminando i dati mancanti, correggendo gli errori e rimuovendo i dati duplicati o non rilevanti. La pulizia dei dati contribuisce a migliorare la qualità dei dati utilizzati per addestrare il modello di machine learning.
  3. Preprocessing dei dati: il preprocessing dei dati include la normalizzazione dei dati, la standardizzazione dei dati, la codifica delle variabili categoriche e la gestione degli outlier. Questi passaggi aiutano a preparare i dati in modo che possano essere elaborati dal modello di machine learning.
  4. Trasformazione dei dati: la trasformazione dei dati include la riduzione della dimensionalità, la selezione delle features e la creazione di nuove features. Questi passaggi contribuiscono a ridurre il rumore nei dati e a migliorare la capacità del modello di machine learning di fare previsioni accurate.
Il termine pipeline viene anche usato da un oggetto programmatico appartenente alla libreria scikit-learn in Python.

Questa permette di specificare proprio degli step di processamento dei dati per facilitare la scrittura di codice e ridurre l'occorrenza di errori.

Se vuoi leggere delle pipeline di Scikit-Learn, leggi l'articolo qui in basso

Come usare le Pipeline di Sklearn per ottimizzare la tua analisi
Spiegazione, template e codice Python per la creazione di pipeline con Scikit-Learn

Raccolta dei dati

È importante raccogliere i dati da fonti affidabili e pertinenti al problema che si vuole risolvere.

Ad esempio, se si vuole creare un modello di machine learning per la predizione del prezzo delle case, è necessario raccogliere dati relativi a fattori quali la posizione della casa, il numero di stanze, la presenza di giardino, la vicinanza ai mezzi di trasporto pubblico. Queste informazioni, come informano noi umani del valore di un immobile, informeranno anche il modello predittivo.

È importante scegliere la fonte più adatta al problema e alla disponibilità dei dati. Ad esempio, se si vuole creare un modello di machine learning per la rilevazione di anomalie in un sistema IoT, è necessario raccogliere i dati dai sensori presenti nel sistema.

Altre fonti di dati possono essere

  • API pubbliche e private
  • Fornitori diretti
  • Sondaggi

Inoltre, è importante valutare la qualità dei dati raccolti. I dati possono contenere errori, duplicati o mancanze che possono influire negativamente sulla qualità del modello di machine learning.

Pertanto, è necessario eseguire una pulizia dei dati e controllare che non ci siano dati mancanti, duplicati o errati. La pulizia dei dati può contribuire a migliorare la qualità del modello di machine learning e a ottenere previsioni più accurate.

Qui un articolo che si focalizza proprio sul processo di creazione di un dataset

Costruire il proprio dataset: vantaggi, approccio e strumenti
L’importanza di costruire il proprio dataset invece di usare una soluzione già pronta

Preprocessing dei dati

In generale, il preprocessing dei dati include la normalizzazione o standardizzazione dei dati, la codifica delle variabili categoriali e la gestione degli outlier.

La normalizzazione / standardizzazione dei dati viene utilizzata per ridurre la scala dei dati in modo che siano comparabili tra loro. Molti modelli di machine learning, come il K-nearest neighbors e le reti neurali richiedono che il dato sia normalizzato o standardizzato per performare bene.

🔗
Standardizzare e normalizzare sono termini che assumono spesso lo stesso significato. Di fatto, non sono proprio la stessa cosa.

Invito il lettore interessato a leggere questa risorsa in inglese che spiega le differenze tra standardizzazione e normalizzazione per saperne di più.

La codifica delle variabili categoriali (detto anche encoding in inglese) viene utilizzata quando si hanno variabili che non sono numeriche, come ad esempio il sesso o il colore degli occhi. La codifica delle variabili categoriali trasforma queste variabili in numeri per poter essere utilizzate dal modello di machine learning.

La gestione degli outlier viene utilizzata per gestire i dati che si discostano molto dal resto dei dati. Questi dati possono influenzare negativamente il modello di machine learning, pertanto vanno gestiti in modo adeguato.

Trasformazione dei dati

La trasformazione dei dati può includere la riduzione della dimensionalità, la selezione delle features e la creazione di nuove features.

La riduzione della dimensionalità viene utilizzata per ridurre il numero di features dei dati. Questo passaggio può essere utile quando si hanno molti dati ma si hanno limitazioni di risorse, come ad esempio il tempo di elaborazione del modello di machine learning. Una delle tecniche più utilizzata è la PCA (Principal Component Analysis).

La selezione delle features viene utilizzata per selezionare le features più importanti dei dati. Questo passaggio può essere utile quando si hanno molte features ma si vuole utilizzare solo un sottoinsieme di esse per addestrare il modello di machine learning.

Selezione delle feature con Boruta
L’algoritmo Boruta serve per scoprire quali sono le feature più importanti per un modello predittivo

Leggi come fare selezione delle feature con una tecnica chiamata Boruta in Python

La creazione di nuove features viene utilizzata per creare nuove features dai dati esistenti. Questo passaggio può essere utile quando si vogliono creare features che non erano presenti nei dati originali ma che possono essere utili per addestrare il modello di machine learning.

Divisione in set di addestramento, validazione e test

La divisione in set di addestramento, validazione e test è un passaggio importante nella preparazione dei dati per il machine learning.

  1. Set di addestramento (train set): il train set viene utilizzato per addestrare il modello di machine learning. Esso contiene i dati che il modello userà per apprendere le relazioni utili alla predizione
  2. Set di validazione (validation set): il validation set viene utilizzato per valutare le prestazioni del modello di machine learning durante l'addestramento e per testare i suoi iperparametri
  3. Set di test (test set): il test set viene utilizzato per valutare le prestazioni del modello di machine learning dopo l'addestramento.

La divisione in train, validation e test set è importante perché consente di valutare le prestazioni del modello di machine learning in modo accurato.

Se si utilizzano tutti i dati per addestrare il modello di machine learning e poi si valutano le prestazioni del modello sui dati stessi, si rischia di ottenere un'immagine distorta delle prestazioni del modello.

🔗
Una delle tecniche più importanti per valutare correttamente se il modello sta imparando o meno è la cross-validazione.

Questa consiste nella ripartizione del set di addestramento in porzioni, che vengono usate per valutare il modello in maniera iterativa.

Se vuoi leggere della cross-validazione e come applicarla nella tua codebase, leggi l'articolo qui in basso

Cosa è la cross-validazione nel machine learning
Leggi cosa è la cross-validazione - una tecnica fondamentale per costruire modelli generalizzabili

Conclusione

In questo articolo abbiamo esaminato i passaggi necessari per preparare i dati per il machine learning.

Abbiamo visto come la raccolta dei dati da fonti affidabili e pertinenti al problema, insieme alla pulizia dei dati, siano fondamentali per garantire la qualità dei dati utilizzati per addestrare il modello di machine learning.

Abbiamo inoltre esaminato il preprocessing dei dati, che include la normalizzazione e la standardizzazione dei dati, la codifica delle variabili categoriche e la gestione degli outlier, nonché la trasformazione dei dati, che può includere la riduzione della dimensionalità, la selezione delle features e la creazione di nuove features.

Infine, abbiamo visto l'importanza della divisione dei dati in train, validation e test set per valutare le prestazioni del modello di machine learning in modo accurato.

La preparazione dei dati per il machine learning richiede un'attenzione particolare ai dettagli, ma svolgere correttamente i passaggi della pipeline di preparazione dei dati può fare la differenza tra un modello di machine learning che funziona e uno che non funziona.