Skip to Content

Che cos'è la pre-elaborazione dei dati per il machine learning?

La pre-elaborazione dei dati per il machine learning (ML) si riferisce alla preparazione e alla trasformazione dei dati raw in un formato adatto per l'addestramento dei modelli ML. È un passaggio essenziale in una pipeline ML (o AI) perché influisce direttamente sulle performance e sulla precisione dei modelli.

La pre-elaborazione dei dati prevede diverse tecniche, come la pulizia dei dati per gestire i valori mancanti, la rimozione degli outlier, la scalabilità delle funzionalità, la codifica delle variabili categoriche e la suddivisione dei dati in set di addestramento e test. Queste tecniche sono fondamentali per garantire che i dati siano in un formato coerente e utilizzabile per gli algoritmi ML.

Questo articolo descrive tutto ciò che devi sapere sulla pre-elaborazione dei dati per il machine learning, compresi i suoi vantaggi, passi ed esempi. 

Che cos'è la pre-elaborazione dei dati? 

La pre-elaborazione dei dati è la trasformazione dei dati non elaborati in un formato più adatto e significativo per l'analisi e l'addestramento dei modelli. La pre-elaborazione dei dati svolge un ruolo vitale nel miglioramento della qualità e dell'efficienza dei modelli ML, risolvendo problemi come valori mancanti, rumore, incoerenze e valori anomali nei dati.

Vantaggi della pre-elaborazione dei dati per il machine learning

La pre-elaborazione dei dati per il machine learning offre molti vantaggi, che sono gli stessi della fase di pre-elaborazione dei dati. Diamo un'occhiata. 

1. Pulizia dei dati

La pulizia dei dati è una parte essenziale della pipeline di pre-elaborazione dei dati nel machine learning. Prevede l'identificazione e la correzione di errori o incoerenze nel set di dati per garantire che i dati siano di alta qualità e adatti per l'analisi o l'addestramento dei modelli. 

La pulizia dei dati in genere include:

Gestione dei valori mancanti

I valori mancanti sono un problema comune nei dataset del mondo reale e possono influire negativamente sulle performance dei modelli ML. Per identificare e gestire i valori mancanti:

  • Utilizza statistiche o visualizzazioni descrittive per identificare colonne/funzioni con valori mancanti. Gli indicatori comuni dei valori mancanti includono i valori NaN (non un numero) o NULL.
  • Determina l'impatto dei valori mancanti sull'analisi o sul modello. Considera la percentuale di valori mancanti in ogni colonna e la loro importanza per il set di dati complessivo.
  • Se la percentuale di valori mancanti è piccola e le righe o le colonne non sono critiche, è possibile rimuoverle utilizzando metodi come dropna() in panda o funzioni simili in altri strumenti.
  • Per le funzioni numeriche, è possibile imputare i valori mancanti utilizzando tecniche come il metodo di imputazione media, mediana o modalità (fillna() in panda). Per le funzionalità categoriche, è possibile imputare la categoria più frequente.

Puoi anche considerare metodi di imputazione più avanzati come l'imputazione di regressione, l'imputazione dei vicini più vicini o l'uso di modelli ML per prevedere i valori mancanti in base ad altre funzionalità.

Gestione degli outlier

Gli outlier sono data point che differiscono in modo significativo da altre osservazioni nel dataset e possono alterare l'analisi statistica o i modelli di machine learning. 

Per rilevare e gestire le anomalie:

  • Usa diagrammi a scatola, istogrammi o diagrammi a dispersione per visualizzare la distribuzione delle caratteristiche numeriche e identificare visivamente potenziali outlier.
  • Calcola statistiche riepilogative come media, deviazione standard, quartili e intervallo interquartile (IQR). Gli outlier sono spesso definiti come data point che ricadono al di sotto di Q1 - 1,5 * IQR o al di sopra di Q3 + 1,5 * IQR.
  • In alcuni casi, la rimozione delle anomalie può essere appropriata, soprattutto se sono dovute a errori o anomalie nell'inserimento dei dati. Usa tecniche di filtraggio basate su soglie statistiche per rimuovere gli outlier.
  • Applica trasformazioni come la trasformazione dei log, la trasformazione della radice quadrata o la trasformazione Box-Cox per rendere i dati più distribuiti normalmente e ridurre l'impatto degli outlier.
  • Considera l'utilizzo di solidi modelli di machine learning meno sensibili agli outlier, come le macchine vettoriali di supporto (SVM), le foreste casuali o i metodi di assemblaggio.

Gestione dei duplicati

I record duplicati possono alterare l'analisi e l'addestramento dei modelli gonfiando determinati schemi o pregiudizi. 

Per rilevare e gestire i duplicati:

  • Usa funzioni come duplicate() nei panda per identificare le righe duplicate in base a colonne specifiche o all'intera riga.
  • Se i record duplicati sono ridondanti e non forniscono ulteriori informazioni, è possibile rimuoverli utilizzando la funzione drop_duplicates() in panda o metodi simili in altri strumenti.
  • In alcuni casi, i duplicati possono verificarsi a causa di più voci, ma hanno identificatori univoci. Assicurati di conservare identificatori univoci o colonne chiave che differenziano i record duplicati.

Seguendo questi passaggi e utilizzando tecniche appropriate, puoi pulire ed elaborare i dati in modo efficace per le attività di machine learning, migliorando la qualità e l'affidabilità delle previsioni dei tuoi modelli.

2. Normalizzazione dei dati

La normalizzazione è una tecnica di pre-elaborazione dei dati utilizzata per scalare e standardizzare i valori delle funzionalità all'interno di un dataset. L'obiettivo principale della normalizzazione è quello di portare tutti i valori delle funzionalità in un intervallo simile senza distorcere le differenze negli intervalli di valori. Questo è importante perché molti algoritmi di machine learning funzionano meglio o convergono più velocemente quando le funzionalità di input sono su una scala simile e hanno una distribuzione simile.

I vantaggi della normalizzazione includono:

  • Impedisce alle funzionalità su larga scala di dominare quelle più piccole durante l'addestramento dei modelli. 
  • Algoritmi come la discesa a gradiente convergono più velocemente quando le funzionalità vengono normalizzate, con tempi di addestramento più brevi. 
  • Riduzione dell'impatto degli outlier portando tutti i valori all'interno di un intervallo delimitato. I dati normalizzati possono essere più facili da interpretare e confrontare tra le diverse funzionalità.

Tecniche di normalizzazione

Scalabilità min-max 

  • Formula:Xnorm =Xmax −Xmin /Xmax −Xmin
  • Gamma: Trasforma i valori in un intervallo compreso tra 0 e 1.

 

Esempio:

Z-score Normalization (Standardizzazione):

  • Formula: Xstd =σX/μ
  • Gamma: Trasforma i valori in modo da avere una media di 0 e una deviazione standard di 1.

 

Esempio:

Linee guida per l'applicazione della normalizzazione

Scalabilità min-max: La scalabilità Min-max è adatta agli algoritmi che richiedono funzionalità di input che rientrino in un intervallo specifico, come le reti neurali e le macchine vettoriali di supporto. Assicurarsi che gli outlier siano gestiti in modo appropriato, in quanto possono influire sulla scalabilità.

Normalizzazione del punteggio Z: È adatto ad algoritmi come il k-means clustering, la regressione lineare e la regressione logistica. Si traduce in una distribuzione centrata intorno a 0 con una deviazione standard di 1, che la rende ideale per gli algoritmi che presuppongono dati distribuiti normalmente.

Dati sparsi: Per i set di dati sparsi (dove la maggior parte dei valori è pari a zero), è consigliabile utilizzare tecniche come MaxAbsScaler o RobustScaler per la normalizzazione.

Dati categorici: Per le funzionalità categoriche, considera tecniche come la codifica one-hot prima della normalizzazione per garantire una scalabilità significativa.

È importante notare che la scelta della tecnica di normalizzazione dipende dalle caratteristiche specifiche dei dati e dai requisiti dell'algoritmo di machine learning che si intende utilizzare. La sperimentazione e la comprensione dell'impatto sulle performance dei modelli sono aspetti chiave per applicare la normalizzazione in modo efficace.

3. Scalabilità delle funzionalità

La scalabilità delle funzionalità è una tecnica di pre-elaborazione dei dati utilizzata per standardizzare la gamma di variabili o funzionalità indipendenti di un dataset. L'obiettivo della scalabilità delle funzionalità è quello di portare tutte le funzionalità su una scala o un intervallo simile per evitare che una caratteristica prevalga su altre durante l'addestramento o l'analisi dei modelli. La scalabilità delle funzionalità può migliorare la velocità di convergenza degli algoritmi di ottimizzazione ed evitare che determinate funzionalità abbiano un'influenza indebita sul modello.

Ruolo della scalabilità delle funzionalità nella pre-elaborazione dei dati

Le funzionalità di scalabilità garantiscono che gli algoritmi ML trattino tutte le funzionalità allo stesso modo, evitando distorsioni verso le funzionalità con scale più grandi. Inoltre, migliora le convergenze, poiché molti algoritmi di ottimizzazione (ad esempio, la discesa a gradiente) convergono più velocemente quando le funzionalità vengono scalate, portando a un addestramento più rapido dei modelli. Può anche prevenire problemi di instabilità numerica che possono insorgere a causa di grandi differenze di grandezza delle funzionalità. Infine, la scalabilità può semplificare l'interpretazione dell'impatto delle funzionalità sulle previsioni del modello.

Metodi di scalabilità delle funzionalità

Oltre alla scala min-max e alla normalizzazione del punteggio Z descritte sopra, sono disponibili anche:

MaxAbsScaler: In questo modo ogni caratteristica viene scalata in base al suo valore assoluto massimo, quindi i valori risultanti variano tra -1 e 1. È adatto per i dati sparsi in cui è importante preservare zero voci, come nella classificazione del testo o nei sistemi di raccomandazione.

Scalabilità solida: Questo utilizza statistiche solide per gli outlier, come la mediana e l'intervallo interquartile (IQR), per scalare le funzionalità. È adatto per dataset contenenti outlier o distribuzioni alterate.

Linee guida per l'applicazione della scalabilità delle funzionalità

Per applicare la scalabilità delle funzionalità:

  • Applicare la standardizzazione (normalizzazione del punteggio Z) quando i dati seguono una distribuzione normale o quando utilizzano algoritmi come la regressione lineare, la regressione logistica o il k-means clustering.
  • Applica la normalizzazione (scala min-max) quando hai bisogno che i dati rientrino in un intervallo specifico, come le reti neurali o le macchine vettoriali di supporto.
  • Usa MaxAbsScaler per gestire dati sparsi, come i dati di testo o le funzionalità sparse ad alta dimensione.
  • Usa RobustScaler per gestire dataset contenenti outlier o funzionalità distribuite in modo non normale.

Tieni presente che le funzionalità categoriche possono richiedere la codifica (ad esempio, la codifica one-hot) prima di applicare la scalabilità delle funzionalità, specialmente se sono nominali (categorie non ordinate).

4. Gestione dei dati categorici

Le variabili categoriche rappresentano gruppi o categorie e sono spesso di natura non numerica, ponendo sfide durante l'addestramento dei modelli, tra cui:

  • Rappresentazione non numerica: Le variabili categoriche sono in genere rappresentate utilizzando stringhe o etichette, che la maggior parte degli algoritmi di machine learning non è in grado di elaborare direttamente. Gli algoritmi richiedono input numerici per l'addestramento e le previsioni.
  • Variabili normali e nominali: Le variabili categoriche possono essere ordinali (con un ordine significativo) o nominali (senza un ordine specifico). Trattare le variabili ordinali come nominali o viceversa può portare a interpretazioni errate dei modelli o a previsioni distorte.
  • Maledizione della dimensionalità: La codifica one-hot, una tecnica comune per la gestione dei dati categorici, può portare a un aumento della dimensionalità del set di dati, specialmente con un elevato numero di categorie univoche. Ciò può influire sulle performance del modello e aumentare la complessità computazionale.

Tecniche di codifica delle variabili categoriche

Le tecniche di codifica delle variabili categoriche includono:

Codifica delle etichette: La codifica delle etichette assegna un'etichetta numerica univoca a ciascuna categoria in una variabile categorica. È adatto per le variabili ordinali in cui esiste un ordine significativo tra le categorie.

Ecco un esempio di utilizzo dello scikit-learn di Python:

da sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

coded_labels = le.fit_transform(['cat', 'cane', 'coniglio', 'cane'])

Codifica one-hot: La codifica one-hot crea colonne binarie per ogni categoria in una variabile categorica, in cui ogni colonna indica la presenza o l'assenza di tale categoria. È adatto per le variabili nominali senza un ordine specifico tra le categorie.

Ecco un esempio di panda:

importare panda come pd

df = pd.DataFrame({'category': ['A', 'B', 'C', 'A']})

one_hot_encoded = pd.get_dummies(df['category'], prefisso='category')

Codifica fittizia: La codifica fittizia è simile alla codifica one-hot, ma elimina una delle colonne binarie per evitare problemi di multicollinearità nei modelli lineari. È comunemente utilizzato nei modelli di regressione in cui una categoria funge da categoria di riferimento.

Ecco un esempio di panda:

dummy_encoded = pd.get_dummies(df['category'], prefisso='category', drop_first=True)

Linee guida per la gestione dei dati categorici

Per gestire correttamente i dati categorici, è necessario:

Comprendere i tipi di variabili: Determinare se le variabili categoriche sono ordinali o nominali per scegliere la tecnica di codifica appropriata.

Evitare interpretazioni errate ordinali: Prestare attenzione quando si utilizza la codifica delle etichette per le variabili nominali, in quanto può introdurre ordinalità involontaria nei dati.

Affronta l'alta cardinalità: Per le variabili categoriche con un elevato numero di categorie univoche, considerare tecniche come la codifica della frequenza, la codifica della destinazione o le tecniche di riduzione della dimensionalità come PCA.

Tutto questo si aggiunge alla già citata gestione dei valori mancanti e alla normalizzazione dei dati numerici. 

5. Gestione dei dati sbilanciati

Gestire i dati sbilanciati è una sfida comune nel machine learning, specialmente nelle attività di classificazione in cui il numero di istanze in una classe (classe di minoranza) è significativamente inferiore rispetto alle altre classi (classi di maggioranza). I dati sbilanciati possono avere un impatto profondo sull'addestramento e sulla valutazione dei modelli, portando a modelli disorientati che favoriscono la maggioranza e offrono performance scarse sulle classi di minoranza. 

Ecco alcuni punti chiave relativi ai dati sbilanciati e alle tecniche di gestione:

Impatto dei dati sbilanciati sulle performance dei modelli

I modelli formati su dati sbilanciati tendono a dare priorità alla precisione nella classe di maggioranza, trascurando al contempo la classe di minoranza. Ciò può portare a performance scadenti per le previsioni di minoranze. Inoltre, metriche come l'accuratezza possono essere fuorvianti nei dataset sbilanciati, poiché una precisione elevata può derivare dalla previsione corretta della classe di maggioranza, ignorando al contempo la classe di minoranza. Le metriche di valutazione come precisione, richiamo, F1-score e area sotto la curva ROC (AUC-ROC) sono più informative per i dataset sbilanciati rispetto alla sola precisione.

Tecniche di gestione dei dati sbilanciati

Le tecniche più comuni per la gestione dei dati sbilanciati sono l'oversampling e l'undersampling. L'ipercampionamento implica l'aumento del numero di istanze nella classe di minoranza per bilanciarlo con la classe di maggioranza. Il sottocampionamento comporta la riduzione del numero di istanze nella classe di maggioranza per bilanciarle con la classe di minoranza. Puoi anche adottare un approccio ibrido combinando il sovracampionamento e il sottocampionamento.

È inoltre disponibile una ponderazione della classe, in cui si regolano i pesi della classe durante l'addestramento dei modelli per penalizzare gli errori nella classe di minoranza piuttosto che gli errori nella classe di maggioranza. Ciò è utile solo per gli algoritmi che supportano la ponderazione delle classi, come la regressione logistica o il supporto delle macchine vettoriali.

Linee guida per la gestione dei dati sbilanciati

Per gestire i dati sbilanciati, è necessario:

Comprendere la distribuzione dei dati: Analizzare la distribuzione delle classi nel dataset per determinare la gravità dello squilibrio.

Scegliere la tecnica appropriata: Seleziona la tecnica di sovracampionamento, sottocampionamento o ibrida in base alle dimensioni del set di dati, al rapporto di squilibrio e alle risorse computazionali.

Valuta le metriche: Utilizza metriche di valutazione appropriate come precisione, richiamo, F1-score o curva AUC-ROC per valutare le performance del modello su entrambe le classi.

Convalida incrociata: Applicare tecniche all'interno di fold di convalida incrociata per evitare la perdita di dati e ottenere stime affidabili delle performance del modello.

Conclusione

La pre-elaborazione dei dati aiuta a garantire che i modelli ML siano formati su dati di alta qualità e adeguatamente formattati, il che influisce direttamente sulle performance, sulla precisione e sulla capacità di generalizzazione del modello. Risolvendo problemi come valori mancanti, outlier, variabili categoriche e squilibri di classe, la pre-elaborazione dei dati consente ai modelli di fare previsioni più informate e accurate, portando a un migliore processo decisionale nelle applicazioni del mondo reale.

Grazie a una corretta pre-elaborazione dei dati, i professionisti del ML possono liberare tutto il potenziale dei propri dati e creare modelli predittivi più precisi e affidabili per varie applicazioni tra domini.

Tuttavia, per farlo realmente nel mondo reale, devi prima disporre di una soluzione di data storage flessibile come Pure Storage che ti aiuti ad accelerare l'AI e il machine learning e ad andare avanti con le tue iniziative di AI aziendale.

03/2024
High-Performance AI for State and Local Government
AI has the potential to transform national, state, and local governments. Here’s how AIRI, AI-ready infrastructure by Pure Storage and NVIDIA, can help.
Solution brief
4 pagine
CONTATTACI
Domande?

Hai domande o commenti sui prodotti o sulle certificazioni di Pure?  Siamo qui per aiutarti.

Prenota una demo

Prenota una demo per vedere come puoi trasformare i tuoi dati in risultati concreti con Pure. 

Telefono: +39 02 9475 9422

Media: pr@purestorage.com

 

Pure Storage Italia

Spaces c/o Bastioni di Porta Nuova, 21

Milano, 20121

+39 02 9475 9422

italia@purestorage.com

CHIUDI
Il browser che stai usando non è più supportato.

I browser non aggiornati spesso comportano rischi per la sicurezza. Per offrirti la migliore esperienza possibile sul nostro sito, ti invitiamo ad aggiornare il browser alla versione più recente.