Disuguaglianza di classe Esplorazione delle tecniche di sottocampionamento

Esplorazione delle tecniche di sottocampionamento come strumento per affrontare la disuguaglianza di classe

Impariamo sulla sottocampionatura e su come aiuta a risolvere lo squilibrio di classe

Abbiamo spiegato in modo formale precedentemente l’effetto dello squilibrio di classe e le sue cause e abbiamo anche spiegato diverse tecniche di sovracampionatura che risolvono questo problema come sovracampionatura casuale, ROSE, RWO, SMOTE, BorderlineSMOTE1, SMOTE-NC e SMOTE-N. In questa storia, cercheremo di fare un tour simile sulle tecniche di sottocampionatura, supponendo che sia ovvio come la sottocampionatura possa aiutare a risolvere il problema dello squilibrio dato la nostra spiegazione precedente.

Le tecniche di sottocampionatura generalmente si dividono in due categorie principali: controllate e non controllate. Nelle tecniche controllate, l’algoritmo riceve un numero che indica quanti campioni dovrebbero essere presenti nel dataset finale; mentre nelle tecniche non controllate, di solito la sottocampionatura viene effettuata semplicemente rimuovendo i punti che soddisfano una certa condizione. Non si sa a priori quante punti soddisferanno tale condizione e ovviamente non può essere controllato. In questa storia, copriremo due tecniche di sottocampionatura controllate (sottocampionatura casuale e sottocampionatura k-means) e due tecniche di sottocampionatura non controllate (Tomek Links e Edited Nearest Neighbors).

Sottocampionatura Casuale Naive

In questa tecnica, se viene dato che N_k punti dovrebbero essere rimossi dalla classe k, allora N_k punti vengono scelti casualmente da quella classe per la cancellazione.

Nel seguente esempio mostreremo una sottocampionatura delle due classi maggioritarie in un dataset con tre classi 0, 1 e 2.

Figura dell'autore usando il pacchetto Imbalance.jl in Julia

La seguente è un’animazione che mostra l’output a diversi gradi di sottocampionatura

Animazione dell'autore usando il pacchetto Imbalance.jl in Julia

Si noti come questo sia interamente un processo casuale; non viene fatta una scelta specifica su quali punti mantenere. La distribuzione dei dati può essere drasticamente alterata a causa di ciò.

Sottocampionatura k-means

Possiamo preservare la distribuzione dei dati essendo più attenti su quali punti rimuovere (o mantenere). Nella sottocampionatura k-means, se è richiesto di avere N_k punti per la classe k, allora viene eseguito il k-means con K=N_k che porta a N_k centroidi finali. La sottocampionatura k-means permette a quei centri (o al vicino più vicino di ognuno di essi; questo è un iperparametro) di essere i punti finali N_k da restituire. Poiché i centri stessi preservano la distribuzione dei dati, questo porta a un insieme più piccolo di punti che lo preservano anche loro.

Nel seguente esempio mostreremo una sottocampionatura delle due classi maggioritarie in un dataset con tre classi 0, 1 e 2.

Figura dell'autore usando il pacchetto Imbalance.jl in Julia

Si noti come sia più attento nel preservare la struttura dei dati rispetto alla sottocampionatura casuale, il che sarebbe ancora più evidente con più sottocampionatura. Illustreremo ulteriormente questo con un’animazione:

Animazione dell'autore usando il pacchetto Imbalance.jl in Julia

Si noti che i centri dipendono dall’inizializzazione che di solito coinvolge casualità.

Questa è una tecnica di sottocampionamento non controllata in cui un punto può essere rimosso se fa parte di un collegamento Tomek. Due punti formano un collegamento Tomek se:

  • Appartengono a classi diverse
  • Ciascuno dei due punti è il vicino più vicino dell’altro punto

Il motivo qui è che tali punti non aiutano a migliorare il confine decisionale (ad esempio, possono facilitare l’overfitting) e che potrebbero essere rumore. Di seguito è riportato un esempio per l’applicazione dei collegamenti Tomek:

Figura dell'autore utilizzando il pacchetto Imbalance.jl in Julia

Nota come dopo il sottocampionamento sia più facile trovare un confine decisionale più lineare, oltre a portare i dati a un miglior bilanciamento. In questo caso, abbiamo saltato il sottocampionamento della classe minoritaria in verde e abbiamo smesso il sottocampionamento per una classe una volta che aveva circa lo stesso numero di punti.

Per vedere questo in azione più da vicino, dove tutte le classi vengono alla fine sottocampionate, considera l’animazione seguente:

Animazione dell'autore utilizzando il pacchetto Imbalance.jl in Julia

Sottocampionamento dei vicini migliorati

Anche se i collegamenti Tomek sono principalmente punti che non aiutano a formare un miglior confine decisionale o sono rumore, non tutti i punti rumorosi formeranno collegamenti Tomek. Se un punto rumoroso della classe k_1 esiste in una regione densa nella classe k_2, allora può essere normale che il vicino più vicino del punto rumoroso abbia un punto più vicino che non è il punto rumoroso stesso, il che implica che rimarrà senza formare un collegamento Tomek. Invece di questa condizione, il sottocampionamento dei vicini migliorati per impostazione predefinita mantiene un punto se la maggioranza dei suoi vicini proviene dalla stessa classe. C’è anche l’opzione di mantenerlo solo se tutti sono della stessa classe o per un sottocampionamento minimo di mantenere un punto se esiste un vicino della stessa classe.

Questa animazione rappresenta l’algoritmo in azione:

Animazione dell'autore utilizzando il pacchetto Imbalance.jl in Julia

Nota come elimina più punti che non sarebbero utili per il confine decisionale o che sono rumore. Ancora più pulizia può essere fatta se il numero dei vicini k o la condizione di mantenimento vengono modificati nel modo giusto. Questa è un’altra animazione che illustra l’effetto.

Animazione dell'autore utilizzando il pacchetto Imbalance.jl in Julia

La differenza tra le condizioni “modalità” e “solo modalità” è che la prima mantiene un punto se la sua classe è una delle più comuni tra i vicini; nel frattempo, l’ultima mantiene un punto se la sua classe è l’unica classe più comune.

Questo conclude il nostro tour su alcuni interessanti algoritmi di sottocampionamento. Spero che questo ti abbia aiutato a imparare di più sia sul sottocampionamento controllato che su quello non controllato. Alla prossima, au revoir.

Riferimenti:

[1] Wei-Chao, L., Chih-Fong, T., Ya-Han, H., & Jing-Shang, J. (2017). Clustering-based undersampling in class-imbalanced data. Information Sciences, 409–410, 17–26.

[2] Ivan Tomek. Two modifications of cnn. IEEE Trans. Systems, Man and Cybernetics, 6:769–772, 1976.

[3] Dennis L Wilson. Asymptotic properties of nearest neighbor rules using edited data. IEEE Transactions on Systems, Man, and Cybernetics, pages 408–421, 1972.