Riduzione del numero di livelli della variabile predittore categoriale non ordinata


11

Voglio addestrare un classificatore, diciamo SVM, o foresta casuale, o qualsiasi altro classificatore. Una delle funzionalità nel set di dati è una variabile categoriale con 1000 livelli. Qual è il modo migliore per ridurre il numero di livelli in questa variabile. In R c'è una funzione chiamata combine.levels()nel pacchetto Hmisc , che combina livelli poco frequenti, ma stavo cercando altri suggerimenti.


La variabile categoriale non è ordinata? Approssimativamente quanti casi hai? Qual è la distribuzione di frequenza attraverso la variabile categoriale?
Jeromy Anglim,

I livelli non sono ordinati. Ho circa 10.000 osservazioni. La distribuzione della frequenza è la seguente: il livello A appare in circa l'11% delle osservazioni. Il livello B appare nell'8%. Il livello c appare nel 5%. Circa 15 di questi livelli coprono il 50% delle osservazioni nel set di dati.
sabato

Risposte:


9

Il modo migliore per farlo varierà enormemente a seconda dell'attività che stai eseguendo, quindi è impossibile dire quale sarà la cosa migliore in modo indipendente dall'attività.

Ci sono due semplici cose da provare se i tuoi livelli sono ordinali:

  1. Raccoglili. Ad esempio, 0 = (0 250), 1 = (251 500), ecc. Potresti voler selezionare i limiti in modo che ogni cestino abbia un numero uguale di elementi.
  2. Puoi anche effettuare una trasformazione del registro dei livelli. Questo ridurrà il range verso il basso.

Se i livelli non sono ordinali, è possibile raggruppare i livelli in base ad altre caratteristiche / variabili nel set di dati e sostituire gli ID del cluster con i livelli precedenti. Ci sono tanti modi per farlo quanti sono gli algoritmi di clustering, quindi il campo è completamente aperto. Mentre lo leggo, questo è ciò che combine.levels()sta facendo. Puoi fare lo stesso usando kmeans()o prcomp(). (Potresti / dovresti in seguito formare un classificatore per prevedere i cluster per nuovi punti dati.)


3
Non conosco un modo davvero efficace di gestirlo se non quello di considerare la variabile categoriale come un effetto casuale. Puoi emularlo usando un processo di penalizzazione quadratico (cresta) sulla variabile. Il mio libro Strategie di modellazione della regressione e le note del corso vanno in questo.
Frank Harrell,

1
@FrankHarrell Vengono in mente due approcci: l'analisi della classe latente variabile POlytomous sarebbe una (cran.r-project.org/web/packages/poLCA/poLCA.pdf), un'altra analisi della corrispondenza (ad es. Statmethods.net/advstats/ca. html).
Mike Hunter,
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.