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](https://www.espertotech.it/wp-content/uploads/2024/09/esempio-di-dataset-sbilanciato-1.webp)
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:
- Random Oversampling e Undersampling: Machine Learning Mastery
- 10 Tecniche per Gestire i Dati Sbilanciati: Analytics Vidhya
- Oversampling vs Undersampling: Crunching the Data