Sovracampionamento con variabili categoriali


9

Vorrei eseguire una combinazione di sovracampionamento e sottocampionamento al fine di bilanciare il mio set di dati con circa 4000 clienti suddivisi in due gruppi, in cui uno dei gruppi ha una percentuale di circa il 15%.

Ho esaminato SMOTE ( http://www.inside-r.org/packages/cran/DMwR/docs/SMOTE ) e ROSE ( http://cran.r-project.org/web/packages/ROSE/ ROSE.pdf ), ma entrambi creano nuovi campioni sintetici usando osservazioni esistenti e ad esempio kNN.

Tuttavia, poiché molti degli attributi associati ai clienti sono categorici, non penso che questa sia la strada giusta da percorrere. Ad esempio, molte delle mie variabili come Region_A e Region_B si escludono a vicenda, ma utilizzando kNN le nuove osservazioni possono essere inserite sia in Region_A sia in Region_B. Sei d'accordo che questo sia un problema?

In tal caso - come si fa a eseguire il sovracampionamento in R semplicemente duplicando le osservazioni esistenti? O è questo il modo sbagliato di farlo?


Perché hai bisogno del sottocampionamento se hai solo 4000 osservazioni?
kjetil b halvorsen,

Voglio bilanciare il mio set di dati per avere una quota approssimativamente uguale di classi. Se uso i miei dati così come sono ora, i modelli prevedono semplicemente tutte le osservazioni come classe di maggioranza.
pir

Risposte:


8

ROSE e SMOTE sono progettati per gestire le variabili categoriali, quindi, a meno che le variabili categoriali non siano espresse in un formato binario, normalmente non dovresti preoccuparti che alle osservazioni sintetiche vengano assegnate caratteristiche categoriali reciprocamente esclusive. Se lo sono, puoi sempre ristrutturarli come fattori.

Nel tuo esempio di due regioni, creeresti una nuova variabile di regione con due livelli, "A" e "B". I tuoi record prenderebbero i valori appropriati facendo riferimento alle tue colonne originali.

Ora, se ti trovi in ​​una situazione in cui le tue nuove osservazioni sintetiche potrebbero generare categorie contrastanti perché sono distribuite su più variabili, altrimenti non correlate (ad esempio syntheticObservation.isPig = 1 e syntheticObservation.hasWings = 1), puoi sempre eseguire alcuni munging di dati aggiuntivi prima di fare la stima del tuo modello per eliminare tali aberrazioni.

Inoltre, dal momento che hai circa 600 osservazioni di eventi nel tuo set di dati, potresti considerare i potenziali benefici dell'utilizzo di osservazioni sintetiche derivate dal sottocampionamento della classe di maggioranza?

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.