Nel machine learning (anche nel data mining), i dataset sbilanciati rappresentano una sfida comune. Un dataset si dice sbilanciato quando alcune classi sono rappresentate da un numero significativamente maggiore di campioni rispetto ad altre.

esempio di dataset sbilanciato

Esempio di dataset sbilanciato

Questo squilibrio può portare a modelli di classificazione che ignorano le classi meno rappresentate, riducendo l’efficacia del modello nel risolvere problemi reali.

In tali casi, è utile applicare tecniche di campionamento (in inglese sampling), che si suddividono in due categorie principali:

  • Oversampling: aumenta artificialmente il numero di campioni della classe minoritaria.
  • Undersampling: riduce il numero di campioni della classe maggioritaria.

L’obiettivo di queste tecniche è bilanciare le classi, migliorando la capacità del modello di imparare in modo equo da tutte le classi presenti.

Approfondimento sulle tecniche di Oversampling

Esistono varie tecniche di oversampling, ciascuna delle quali si basa su diversi approcci di campionamento. Di seguito le più utilizzate:

Random Oversampling

Questa tecnica aumenta la classe minoritaria duplicando campioni esistenti. Sebbene semplice da implementare, può portare a overfitting, poiché il modello potrebbe imparare a riconoscere solo le caratteristiche dei dati duplicati, creando uno squilibrio artificiale.

SMOTE (Synthetic Minority Oversampling Technique)

SMOTE utilizza un approccio di campionamento che crea campioni sintetici della classe minoritaria attraverso l’interpolazione tra campioni esistenti. Questa tecnica è preferita rispetto al random oversampling, in quanto riduce il rischio di overfitting.

from imblearn.over_sampling import SMOTE
from sklearn.datasets import make_classification
from collections import Counter

X, y = make_classification(n_samples=1000, weights=[0.9, 0.1])
sm = SMOTE()
X_res, y_res = sm.fit_resample(X, y)
print(f"Distribuzione dopo SMOTE: {Counter(y_res)}")

ADASYN (Adaptive Synthetic Sampling)

ADASYN, una variante di SMOTE, genera campioni sintetici concentrandosi su aree in cui la classe minoritaria è più rara, migliorando la distribuzione locale dei dati attraverso campionamenti più specifici.

Tabella comparativa delle tecniche di Oversampling:

Tecnica Descrizione Vantaggi Svantaggi
Random Oversampling Duplica i campioni della classe minoritaria Semplice da implementare Rischio di overfitting
SMOTE Crea campioni sintetici interpolando i dati esistenti Riduce l’overfitting rispetto al random oversampling Potrebbe creare campioni non realistici
ADASYN Genera campioni concentrandosi sulle aree dove la classe minoritaria è meno rappresentata Adattamento locale migliore Aumento della complessità computazionale

Approfondimento sulle tecniche di Undersampling

L’undersampling è un’altra forma di campionamento che riduce la classe maggioritaria, spesso quando il dataset è troppo grande per essere gestito efficacemente. Di seguito le tecniche più utilizzate:

Random Undersampling

Rimuove campioni casuali dalla classe maggioritaria. È una tecnica semplice ma può comportare la perdita di informazioni rilevanti, riducendo il numero complessivo di dati disponibili per il training.

Cluster Centroids

Utilizza algoritmi di clustering per creare una rappresentazione ridotta della classe maggioritaria, preservando al contempo le caratteristiche più importanti del dataset.

NearMiss

NearMiss è una tecnica di campionamento che seleziona campioni della classe maggioritaria basandosi sulla loro vicinanza ai campioni della classe minoritaria. Questo permette di ridurre i campioni ridondanti e mantenere quelli più utili.


from imblearn.under_sampling import NearMiss
from sklearn.datasets import make_classification
from collections import Counter

X, y = make_classification(n_samples=1000, weights=[0.9, 0.1])
nm = NearMiss()
X_res, y_res = nm.fit_resample(X, y)
print(f"Distribuzione dopo NearMiss: {Counter(y_res)}")

Tabella comparativa delle tecniche di Undersampling

Tecnica Descrizione Vantaggi Svantaggi
Random Undersampling Rimuove campioni a caso della classe maggioritaria Semplice ed efficace su dataset grandi Rischio di perdita di informazioni
Cluster Centroids Rappresenta la classe maggioritaria riducendo i dati tramite clustering Mantiene le caratteristiche principali Complessità computazionale
NearMiss Seleziona i campioni della classe maggioritaria più vicini alla classe minoritaria Riduce i campioni meno utili Complessità nella scelta dei parametri

Valutazione delle performance dei modelli: oltre l’Accuracy

L’accuracy è una metrica comunemente utilizzata per valutare i modelli di machine learning, ma non è sempre indicativa delle reali performance, soprattutto nei dataset sbilanciati. In tali casi, l’accuracy può risultare fuorviante, poiché un modello che predice solo la classe maggioritaria può avere un’alta accuracy ma fallire completamente nel riconoscere la classe minoritaria.

Immagina un dataset con il 95% di campioni appartenenti alla classe A e solo il 5% alla classe B. Se il modello predicesse sempre la classe A, avrebbe un’accuracy del 95%, ma non individuerebbe mai correttamente alcun campione della classe B, rendendo inutile l’accuracy come metrica di valutazione.

Per questo motivo, è meglio utilizzare metriche come:

  • Precision: misura quanto sono accurate le previsioni positive.
  • Recall: valuta quanti veri positivi sono stati correttamente individuati.
  • F1-Score: media armonica tra precision e recall, utile quando è importante bilanciare entrambe le metriche.
  • AUC-ROC: stima la capacità del modello di distinguere tra le classi.
Metrica Descrizione Quando Usarla
Accuracy Percentuale di previsioni corrette Non adatta per dataset sbilanciati
Precision Percentuale di previsioni positive corrette Utile quando i falsi positivi sono costosi
Recall Percentuale di veri positivi individuati Utile quando i falsi negativi sono critici
F1-Score Media armonica tra precision e recall Utile quando c’è squilibrio tra precision e recall
AUC-ROC Misura la capacità di distinguere tra le classi Utile per modelli binari

Queste metriche offrono una visione più completa delle performance del modello, specialmente in contesti con sbilanciamenti di classe. Per calcolare queste metriche, può essere utile analizzare i risultati attraverso una matrice di confusione, che permette di visualizzare gli errori commessi dal modello.

Conclusione

In conclusione, sia oversampling che undersampling offrono soluzioni efficaci per affrontare dataset sbilanciati. Tuttavia, la scelta della tecnica giusta dipende dalla dimensione del dataset e dal rischio di overfitting o perdita di informazioni. L’uso di metriche alternative come F1-Score o AUC-ROC è fondamentale per valutare correttamente le performance del modello.

Per approfondire ulteriormente, puoi consultare:

Se ti va di sostenere il blog, unisciti al canale Telegram dove puoi trovare un sacco di offerte sulla tecnologia interessanti, con sconti fino all'80%. Manchi solo tu: unisciti subito al canale per non perderti le prossime occasioni!
Categorie: informatica