SVM gestisce un set di dati non bilanciato? Esistono parametri (come C o costo di classificazione errata) che gestiscono il set di dati sbilanciato?
SVM gestisce un set di dati non bilanciato? Esistono parametri (come C o costo di classificazione errata) che gestiscono il set di dati sbilanciato?
Risposte:
Per i set di dati non bilanciati, in genere viene modificata la penalità di classificazione errata per classe. Questo si chiama SVM ponderato per classe, che minimizza quanto segue:
dove e rappresentano le istanze di allenamento positive / negative. Nella SVM standard abbiamo un solo valore , mentre ora abbiamo 2. La penalità di errata classificazione per la classe di minoranza è scelta per essere maggiore di quella della classe di maggioranza.
Questo approccio è stato introdotto abbastanza presto, è menzionato ad esempio in un documento del 1997:
Edgar Osuna, Robert Freund e Federico Girosi. Support Vector Machines: formazione e applicazioni. Relazione tecnica AIM-1602, 1997. ( pdf )
Fondamentalmente questo equivale a sovracampionare la classe di minoranza: ad esempio se questo è del tutto equivalente all'addestramento di un SVM standard con dopo aver incluso ogni due volte positivo nel set di addestramento.
Le SVM sono in grado di gestire set di dati con frequenze di classe sbilanciate. Molte implementazioni consentono di avere un valore diverso per la penalità di gioco (C) per le classi positive e negative (che è asintoticamente equivalente alla modifica delle frequenze delle classi). Consiglierei di impostare i valori di questi parametri per massimizzare le prestazioni di generalizzazione su un set di test in cui le frequenze di classe sono quelle che ci si aspetta di vedere nell'uso operativo.
Ero una delle tante persone che hanno scritto articoli su questo, ecco il mio , vedrò se riesco a trovare qualcosa di più recente / migliore. Prova Veropoulos, Campbell e Cristianini (1999).