Dovrei scegliere un set di dati "bilanciato" o un set di dati "rappresentativo"?


48

Il mio compito di "machine learning" è quello di separare il traffico Internet benigno dal traffico malevolo. Nello scenario del mondo reale, la maggior parte (diciamo del 90% o più) del traffico Internet è benigna. Quindi ho sentito che avrei dovuto scegliere una configurazione di dati simile per addestrare anche i miei modelli. Ma mi sono imbattuto in uno o due articoli di ricerca (nella mia area di lavoro) che hanno utilizzato un approccio di dati "bilanciamento di classe" per addestrare i modelli, implicando un numero uguale di casi di traffico benigno e dannoso.

In generale, se sto costruendo modelli di apprendimento automatico, dovrei cercare un set di dati che è rappresentativo del problema del mondo reale o che sia un set di dati bilanciato più adatto alla costruzione dei modelli (poiché alcuni classificatori non si comportano bene con uno squilibrio di classe, oppure per altri motivi che non mi sono noti)?

Qualcuno può fare luce sui pro e contro di entrambe le scelte e come decidere quale scegliere?

Risposte:


38

Direi che la risposta dipende dal tuo caso d'uso. Sulla base della mia esperienza:

  • Se stai cercando di costruire un modello rappresentativo - uno che descriva i dati piuttosto che prevedere necessariamente - allora suggerirei di utilizzare un campione rappresentativo dei tuoi dati.
  • Se si desidera costruire un modello predittivo, in particolare uno che si comporta bene per misura di AUC o ordine di classificazione e si prevede di utilizzare un framework ML di base (ad esempio Albero decisionale, SVM, Naive Bayes, ecc.), Suggerirei di alimentare il framework un set di dati bilanciato. Gran parte della letteratura sugli squilibri di classe rileva che il sottocampionamento casuale (giù il campionamento della classe di maggioranza in base alla dimensione della classe di minoranza) può determinare miglioramenti delle prestazioni.
  • Se stai costruendo un modello predittivo, ma stai utilizzando un framework più avanzato (ovvero qualcosa che determina i parametri di campionamento tramite wrapper o una modifica di un framework di bagging che campiona l'equivalenza di classe), allora suggerirei di alimentare nuovamente il campione rappresentativo e di lasciare che l'algoritmo si occupa di bilanciare i dati per la formazione.

2
Se stai cercando di costruire un modello rappresentativo - uno che descriva i dati piuttosto che prevedere necessariamente ... chi costruisce un modello che non prevede ?? Non ti ho portato lì ...
pnp

8
L'apprendimento senza supervisione sarebbe un esempio in cui si costruisce un modello che non è necessariamente orientato alla previsione. In alcuni casi potresti voler esplorare o riassumere i tuoi dati.
DSea,

1
Direi che è più sicuro bilanciare il campione, ma anche raccogliere pesi di campionamento in modo da poter successivamente ripesare i dati per la rappresentatività, se necessario. @pnp molti scienziati sociali costruiscono modelli non predittivi, ad esempio per confermare teorie.
Shadowtalker

Come si potrebbe confrontare un modello bilanciato con un modello rappresentativo usando osservazioni ponderate per imitare un modello bilanciato?
JenSCDC,

1
L'AUC non è influenzato dallo squilibrio di classe, essendo la probabilità che il tuo modello classifichi una classe positiva scelta casualmente più alta di una classe negativa scelta casualmente. Non sono affatto d'accordo con i tuoi consigli qui per scopi generali. Se si dispone di un campione rappresentativo, ad esempio un campione casuale semplice, dovrebbe essere lasciato rappresentativo.
Matthew Drury,

8

Penso che dipenda sempre dallo scenario. L'uso di un set di dati rappresentativo non è sempre la soluzione. Supponi che il tuo set di allenamento abbia 1000 esempi negativi e 20 esempi positivi. Senza alcuna modifica del classificatore, il tuo algoritmo tenderà a classificare tutti i nuovi esempi come negativi. In alcuni scenari questo è OK Ma in molti casi i costi di esempi postivi mancanti sono alti, quindi devi trovare una soluzione per questo.

In tali casi è possibile utilizzare un algoritmo di apprendimento automatico sensibile ai costi. Ad esempio nel caso dell'analisi dei dati di diagnosi medica.

In sintesi: gli errori di classificazione non hanno lo stesso costo!


7

C'è sempre la soluzione per provare entrambi gli approcci e mantenere quello che massimizza le prestazioni attese.

Nel tuo caso, suppongo che tu preferisca ridurre al minimo i falsi negativi al costo di alcuni falsi positivi, quindi vuoi parziare il tuo classificatore rispetto al precedente fortemente negativo e affrontare lo squilibrio riducendo il numero di esempi negativi nel tuo set di allenamento.

Quindi calcola la precisione / il richiamo, la sensibilità / la specificità o qualunque criterio ti si adatti sul set di dati completo, sbilanciato, per assicurarti di non aver ignorato un modello significativo presente nei dati reali mentre costruisci il modello sui dati ridotti.


4

Separare gli scenari operativi e di formazione.

Lo scenario operativo è quello in cui verrà misurato il tuo classificatore. Questo è dove dovresti esibirti bene. L'utilizzo deve avere un set di dati che è rappresentativo di questo scenario.

Lo scenario di addestramento è tutto ciò che stai facendo per costruire un classificatore che si comporterà bene sullo scenario operativo.

Molte volte i set di dati in entrambi gli scenari sono della stessa natura, quindi non è necessario distinguerli. Ad esempio, hai qualche negozio online in modo da utilizzare per allenare l'utilizzo passato al fine di ottenere buoni risultati in futuro. Tuttavia, durante l'addestramento è possibile utilizzare un set di dati diverso da quello che rappresenta lo scenario operativo. In realtà, se dormi, sogni un classificatore, lo convalidi sul tuo scenario operativo (questo passaggio dovrebbe essere fatto dopo il risveglio), sei bravo come dopo aver seguito il solito percorso di apprendimento automatico.

La distinzione tra scenari operativi e di formazione diventa importante quando il set di dati è squilibrato. La maggior parte degli algoritmi non funzionerà bene su un set di dati di questo tipo.

Quindi, non esitare a utilizzare due set di dati: puoi utilizzare un set di dati bilanciato per la formazione. Al termine, convalidare il classificatore del set di dati operativo.


3

Penso che ci siano due questioni distinte da considerare: il tempo di allenamento e l'accuratezza delle previsioni.

Prendi un semplice esempio: considera di avere due classi, che hanno una distribuzione normale multivariata. Fondamentalmente, è necessario stimare i rispettivi mezzi di classe e le covarianze di classe. Ora la prima cosa che ti interessa è la tua stima della differenza nella classe significa: ma le tue prestazioni sono limitate dall'accuratezza della peggiore media stimata: non è bene stimare una media al 100 ° decimale - se l'altra media è solo stimato con 1 decimale. Quindi è uno spreco di risorse informatiche utilizzare tutti i dati: puoi invece sottocampionare la classe più comune E ripesare le classi in modo appropriato. (tali risorse informatiche possono quindi essere utilizzate esplorando diverse variabili di input, ecc.)

Ora il secondo problema è l'accuratezza predittiva: algoritmi diversi utilizzano metriche di errore diverse, che possono o meno concordare con i propri obiettivi. Ad esempio, la regressione logistica penalizzerà l'errore di probabilità complessivo, quindi se la maggior parte dei tuoi dati proviene da una classe, tenderà quindi a cercare di migliorare le stime di probabilità accurate (ad esempio 90 vs probabilità del 95%) di quella classe piuttosto che cercare di identificare la classe rara. In tal caso, si vorrebbe assolutamente provare a ripesare per enfatizzare la classe rara (e successivamente adattare la stima [regolando il termine di polarizzazione] per allineare le stime di probabilità)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.