Questo articolo introduce sette tecniche comunemente applicate in domini come il rilevamento delle frodi o le offerte in tempo reale, su dati o dataset che sono spesso estremamente sbilanciati.
I dati possono essere uno strumento potente. Possono fornire informazioni su come e dove possiamo migliorare la nostra attività. Tuttavia, i dati possono anche essere fuorvianti. È qui che la gestione dei dati diventa difficile. Esistono molte tecniche che possono essere utilizzate per gestire i dati sbilanciati. Queste tecniche ti permetteranno di andare oltre l'utilizzo dei dati per creare piani strategici.
Introduzione alle tecniche per gestire dati e dataset sbilanciati
Che cosa hanno in comune i set di dati in domini come il rilevamento delle frodi nel settore bancario, le offerte in tempo reale nel marketing o il rilevamento delle intrusioni nelle reti?
I dati utilizzati in queste aree spesso contengono meno dell'1% di eventi rari ma “interessanti” (ad es. truffatori che utilizzano carte di credito, utenti che fanno clic su annunci pubblicitari o server corrotti che scansionano la propria rete).
Mentre la maggior parte dei dati è abbastanza ben bilanciata, alcuni dati non lo sono. Questi dati possono essere distorti in qualche modo e devono essere analizzati con maggiore attenzione.
Tuttavia, la maggior parte degli algoritmi di apprendimento automatico non funziona molto bene con set di dati sbilanciati. Le seguenti sette tecniche possono aiutarti ad addestrare un classificatore a rilevare la classe anormale.
Cosa sono i dati sbilanciati?
I dati sbilanciati si riferiscono a quei tipi di set di dati in cui la classe target ha una distribuzione non uniforme delle osservazioni, ovvero un'etichetta di classe ha un numero molto elevato di osservazioni e l'altra ha un numero molto basso di osservazioni. Possiamo capirlo meglio con un esempio.
Supponiamo che XYZ sia una banca che emette una carta di credito ai propri clienti. Ora la banca è preoccupata che alcune transazioni fraudolente siano in corso e quando la banca controlla i propri dati ha scoperto che per ogni transazione 2000 ci sono solo 30 No di frode registrati. Quindi, il numero di frodi per 100 transazioni è inferiore al 2%, o possiamo dire che più del 98% della transazione è di natura "Nessuna frode". Qui, la classe "No Fraud" è chiamata classe di maggioranza e la classe "Frode" di dimensioni molto più piccole è chiamata classe di minoranza .
Tecnica per gestire dati e dataset sbilanciati 1.
Usa le giuste metriche di valutazione
L'applicazione di metriche di valutazione inadeguate per il modello generato utilizzando dati sbilanciati può essere pericoloso. Immagina che i nostri dati di allenamento siano quelli illustrati nel grafico sopra. Se l'accuratezza viene utilizzata per misurare la bontà di un modello, un modello che classifica tutti i campioni di prova in "0" avrà un'accuratezza eccellente (99,8%), ma ovviamente questo modello non fornirà alcuna informazione preziosa per noi.
In questo caso possono essere applicate altre metriche di valutazione alternative come:
Precisione/Specificità: quante istanze selezionate sono rilevanti.
Richiamo/Sensibilità: quante istanze rilevanti sono selezionate.
Punteggio F1: media armonica di precisione e richiamo.
MCC: coefficiente di correlazione tra le classificazioni binarie osservate e previste.
AUC: relazione tra tasso di veri positivi e tasso di falsi positivi.
Tecnica per gestire dati e dataset sbilanciati 2.
Ricampiona il set di addestramento
Oltre a utilizzare criteri di valutazione diversi, si può anche lavorare per ottenere set di dati diversi. Due approcci per creare un insieme di dati equilibrato da uno sbilanciato sono il sottocampionamento e il sovracampionamento.
2.1. Sottocampionamento
Il sottocampionamento bilancia il set di dati riducendo le dimensioni della classe abbondante. Questo metodo viene utilizzato quando la quantità di dati è sufficiente. Mantenendo tutti i campioni nella classe rara e selezionando casualmente un numero uguale di campioni nella classe abbondante, è possibile recuperare un nuovo set di dati bilanciato per ulteriori modelli.
2.2. Sovracampionamento
Al contrario, il sovracampionamento viene utilizzato quando la quantità di dati è insufficiente. Cerca di bilanciare il set di dati aumentando le dimensioni di campioni rari. Invece di eliminare campioni abbondanti, vengono generati nuovi campioni rari utilizzando, ad esempio, la ripetizione, il bootstrapping o SMOTE (tecnica di sovracampionamento della minoranza sintetica)
Si noti che non vi è alcun vantaggio assoluto di un metodo di ricampionamento rispetto a un altro. L'applicazione di questi due metodi dipende dal caso d'uso a cui si applica e dal set di dati stesso. Anche una combinazione di sovra e sottocampionamento ha spesso successo.
Tecnica per gestire dati e dataset sbilanciati 3.
Usa la convalida incrociata K-fold nel modo giusto
È interessante notare che la convalida incrociata dovrebbe essere applicata correttamente mentre si utilizza il metodo di campionamento eccessivo per affrontare i problemi di squilibrio.
Tieni presente che il sovracampionamento prende campioni rari osservati e applica il bootstrap per generare nuovi dati casuali basati su una funzione di distribuzione. Se la convalida incrociata viene applicata dopo un campionamento eccessivo, in pratica ciò che stiamo facendo è adattare il nostro modello a uno specifico risultato di bootstrapping artificiale. Ecco perché la convalida incrociata dovrebbe sempre essere eseguita prima di sovracampionare i dati, proprio come dovrebbe essere implementata la selezione delle funzionalità. Solo ricampionando i dati ripetutamente, la casualità può essere introdotta nel set di dati per assicurarsi che non ci siano problemi di overfitting.
Tecnica per gestire dati e dataset sbilanciati 4.
Insieme diversi set di dati ricampionati
Il modo più semplice per generalizzare correttamente un modello è utilizzare più dati. Il problema è che classificatori fuori dagli schemi come la regressione logistica o la foresta casuale tendono a generalizzare scartando la classe rara. Una pratica ottimale è costruire n modelli che utilizzino tutti i campioni della classe rara e campioni n-differenti della classe abbondante. Dato che vuoi mettere insieme 10 modelli, manterrai ad esempio i 1.000 casi della classe rara e campionaresti casualmente 10.000 casi della classe abbondante. Quindi dividi i 10.000 casi in 10 blocchi e alleni 10 modelli diversi.
Questo approccio è semplice e perfettamente scalabile orizzontalmente se disponi di molti dati, poiché puoi semplicemente addestrare ed eseguire i tuoi modelli su diversi nodi del cluster. I modelli di ensemble tendono anche a generalizzare meglio, il che rende questo approccio facile da gestire.
Tecnica per gestire dati e dataset sbilanciati 5.
Ricampiona con rapporti diversi
L'approccio precedente può essere perfezionato giocando con il rapporto tra la classe rara e quella abbondante. Il rapporto migliore dipende fortemente dai dati e dai modelli utilizzati. Ma invece di addestrare tutti i modelli con lo stesso rapporto nell'insieme, vale la pena provare a mettere insieme rapporti diversi. Quindi, se vengono addestrati 10 modelli, potrebbe avere senso avere un modello con un rapporto di 1:1 (raro:abbondante) e un altro con 1:3 o anche 2:1. A seconda del modello utilizzato, ciò può influenzare il peso che ottiene una classe.
Tecnica per gestire dati e dataset sbilanciati 6.
Raggruppa la classe abbondante
Un approccio elegante è stato proposto da Sergey su Quora [2]. Invece di fare affidamento su campioni casuali per coprire la varietà dei campioni di addestramento, suggerisce di raggruppare la classe abbondante in gruppi r, dove r è il numero di casi in r. Per ogni gruppo viene mantenuto solo il medoid (centro del cluster). Il modello viene quindi addestrato con la classe rara e solo con i medoidi.
Tecnica per gestire dati e dataset sbilanciati 7.
Progetta i tuoi modelli
Tutti i metodi precedenti si concentrano sui dati e mantengono i modelli come un componente fisso. Ma in realtà, non è necessario ricampionare i dati se il modello è adatto per dati sbilanciati. Il famoso XGBoost è già un buon punto di partenza se le classi non sono troppo sbilanciate, perché internamente si preoccupa che le borse su cui si allena non siano sbilanciate. Ma poi di nuovo, i dati vengono ricampionati, stanno solo accadendo segretamente.
Progettando una funzione di costo che penalizzi una classificazione errata della classe rara più che una classificazione errata della classe abbondante, è possibile progettare molti modelli che si generalizzano naturalmente a favore della classe rara. Ad esempio, modificare un SVM per penalizzare le classificazioni errate della classe rara con lo stesso rapporto in cui questa classe è sottorappresentata.
Osservazioni finali sulle tecniche per gestire dati e dataset sbilanciati
Questo non è un elenco esclusivo di tecniche, ma piuttosto un punto di partenza per gestire dati sbilanciati. Non esiste un approccio o un modello migliore adatto a tutti i problemi e si consiglia vivamente di provare diverse tecniche e modelli per valutare ciò che funziona meglio. Cerca di essere creativo e combina diversi approcci. È anche importante essere consapevoli del fatto che in molti ambiti (es. rilevamento di frodi, offerte in tempo reale), dove si verificano classi sbilanciate, le “regole di mercato” cambiano continuamente. Quindi, controlla se i dati passati potrebbero essere diventati obsoleti.
Kommentare