Per un problema di classificazione se la variabile di classe ha una distribuzione disuguale quale tecnica dovremmo usare?


10

per es. se ho un punteggio variabile di classe con due classi buone e cattive, dove # (buono) = 700 e # (cattivo) = 300. Non voglio accorciare i miei dati. quale tecnica dovrei usare? Stavo usando SVM, ma sta dando tutto male nelle previsioni.


Questa asimmetria non sembra così male; sei sicuro di non avere un errore da qualche altra parte? Puoi anche fornire qualche dettaglio in più sui dati? Non esiste una soluzione generale a questo.

il mio set di dati ha 17 predittori (3 continui e 14 categorici), ovviamente 1 variabile di classe e un totale di 1000 ostacoli. La frequenza dist. per classe var. con train e test is train (cattivo) = 197, test (cattivo) = 103, trian (buono) = 446, test (buono) = 254
asad.taj

Risposte:


6

Le dimensioni del campione della tua classe non sembrano così sbilanciate poiché hai il 30% delle osservazioni nella tua classe di minoranza. La regressione logistica dovrebbe avere buone prestazioni nel tuo caso. A seconda del numero di predittori che entrano nel tuo modello, potresti considerare un tipo di penalizzazione per la stima dei parametri, come la cresta (L2) o il lazo (L1). Per una panoramica dei problemi con una classe molto squilibrata, vedi Cramer (1999), The Statistician, 48: 85-94 ( PDF ).

Non ho familiarità con le tecniche di valutazione del credito, ma ho trovato alcuni documenti che suggeriscono che è possibile utilizzare SVM con classi ponderate, ad esempio Support Vector Machines for Credit Scoring: Extension to Non Standard Cases . In alternativa, puoi esaminare i metodi di potenziamento con CART o Random Forests (in quest'ultimo caso, è possibile adattare la strategia di campionamento in modo che ogni classe sia rappresentata durante la costruzione degli alberi di classificazione). L'articolo di Novak e LaDue discute i pro e i contro del partizionamento GLM vs ricorsivo . Ho anche trovato questo articolo, costruzione Scorecard con dimensioni di classe sbilanciate da Hand e Vinciotti.


Il collegamento per Cramer (1999) è stato modificato in papers.tinbergen.nl/98085.pdf
germcd

10

Un approccio popolare alla risoluzione dei problemi di squilibrio di classe è quello di orientare il classificatore in modo che presti maggiore attenzione alle istanze positive. Ciò può essere fatto, ad esempio, aumentando la penalità associata all'errata classificazione della classe positiva rispetto alla classe negativa. Un altro approccio consiste nel preelaborare i dati sovracampionando la classe di maggioranza o sottocampionando la classe di minoranza al fine di creare un set di dati bilanciato.

Tuttavia, nel tuo caso, lo squilibrio di classe non sembra essere un problema. Forse è una questione di ottimizzazione dei parametri, poiché trovare i parametri ottimali per un classificatore SVM può essere un processo piuttosto noioso. Ci sono due parametri per esempio in un kernel RBF: e . Non è noto in anticipo quale e sono i migliori per un determinato problema; di conseguenza, è necessario eseguire un tipo di selezione del modello (ricerca parametri).CγCγ

Nella fase di preelaborazione dei dati, ricordare che SVM richiede che ogni istanza di dati sia rappresentata come un vettore di numeri reali. Quindi, se ci sono attributi categorici, si consiglia di convertirli in dati numerici, usando i numeri m per rappresentare un attributo della categoria m (o sostituendolo con m nuove variabili binarie).

Inoltre, è essenziale ridimensionare le variabili prima di applicare SVM, al fine di evitare attributi in intervalli numerici maggiori che dominano quelli in intervalli numerici più piccoli.

Dai un'occhiata a questo documento .

Se lavori in R, controlla la funzione di ottimizzazione (pacchetto e1071) per ottimizzare gli iperparametri usando una ricerca della griglia negli intervalli di parametri forniti. Quindi, usando plot.tune , puoi vedere visivamente quale serie di valori dà il tasso di errore più piccolo.

Esiste una scorciatoia per la ricerca dei parametri che richiede tempo. Esiste un pacchetto R chiamato "svmpath" che calcola l'intero percorso di regolarizzazione per un classificatore SVM di 2 classi in una volta sola. Ecco un link al documento che descrive cosa sta facendo.

PS Potresti anche trovare interessante questo documento: Ottenere stime di probabilità calibrate


2
γ

1

Consiglierei di utilizzare un valore diverso del parametro di regolarizzazione C per esempi di classe positiva ed esempi di classe negativa (molti pacchetti SVM supportano questo, e in ogni caso è facilmente implementabile). Quindi utilizzare, ad esempio, la convalida incrociata per trovare buoni valori dei due parametri di regolarizzazione.

Si può dimostrare che questo è asypmtotically equivalente ricampionamento dei dati in un rapporto determinato da C + e C- (quindi non vi è alcun vantaggio nel ricampionamento piuttosto che nella ripesatura, arrivano alla stessa cosa alla fine e ai pesi può essere continuo, piuttosto che discreto, quindi offre un controllo più preciso).

Non semplicemente scegliere C + e C- per dare una ponderazione 50-50 ai modelli positivi e negativi, poiché la forza dell'effetto del problema delle "classi di squilibri" varierà da un set di dati a un set di dati, quindi la forza del riferimento ottimale la ponderazione non può essere determinata a priori.

Ricorda inoltre che i costi falsi positivi e falsi negativi possono essere diversi e il problema può risolversi se questi sono inclusi nella determinazione di C + e C-.

Vale anche la pena ricordare che per alcuni problemi la regola di decisione ottimale di Bayes assegnerà tutti i pattern a una singola classe e ignorerà l'altra, quindi non è necessariamente una cosa negativa - potrebbe significare solo che la densità dei pattern di una classe è ovunque al di sotto della densità dei modelli dell'altra classe.

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.