Ho un set di dati altamente squilibrato con istanze di classe target nel seguente rapporto (modifica :) 60000: 1000: 1000: 100060000:1000:1000:50
(vale a dire un totale di 4 classi). Voglio utilizzare randomForest
per fare previsioni della classe di destinazione.come usare classwt in randomForest of R?
Quindi, per ridurre lo squilibrio di classe, ho giocato con sampsize
parametro, impostandolo a (modifica :)c(5000, 1000, 1000, 1000)
c(5000, 1000, 1000, 50)
e alcuni altri valori, ma non c'era molto uso di esso. In realtà, l'accuratezza della 1a classe è diminuita mentre giocavo con sampsize
, anche se il miglioramento nelle previsioni di altre classi era molto minuto.
Scavando negli archivi, mi sono imbattuto in due ulteriori caratteristiche di randomForest()
, che sono strata
e classwt
che vengono utilizzati per compensare lo squilibrio questione di classe.
Tutti i documenti su classwt
erano vecchi (in genere appartenenti alle 2007, 2008 anni), che non tutto ha suggerito l'uso della funzione classwt
di randomForest
pacchetto R
in quanto non implementa completamente la sua completa funzionalità come appare nelle fortran
. Quindi la prima domanda è:
classwt
è ora completamente implementato nel pacchetto randomForest
di R? In caso affermativo, cosa rappresenta il passaggio dello c(1, 10, 10, 10)
all'argomento classwt
? (Supponendo caso sopra di 4 classi nella variabile di destinazione)
altro argomento che si dice a compensare problema di classe squilibrio campionamento stratificato, che viene sempre utilizzato in combinazione con sampsize
. Comprendo che cos'è sampsize
dalla documentazione, ma non c'è abbastanza documentazione o esempi che hanno fornito una visione chiara dell'uso di strata
per superare il problema dello squilibrio di classe. Quindi la seconda domanda è:
Che tipo di argomenti devono essere passati a strata
in randomForest
e che cosa rappresenta?
Credo che la parola peso che non ho esplicitamente menzionato nella questione dovrebbe svolgere un ruolo importante nella risposta.
Avrei eseguito una foresta solo sulle tre classi minori. Ciò ti darà un'idea di come un modello rf possa eventualmente distinguere quelle tre classi senza la classe dominante. Se la precisione è ancora piuttosto bassa, probabilmente lo squilibrio di classe non è il tuo vero problema, piuttosto quelle tre classi non si distinguono facilmente con le caratteristiche che hai. – joran
Grazie @joran. Scusa per un po 'di confusione, ecco l'effettivo rapporto di istanza della classe che ho anche modificato nella domanda: 60000: 1000: 1000: 50. Pensi che omettere la prima classe in questo caso aiuterà? Perché quando eseguo RF con tutte e 4 le classi ottengo la precisione nel seguente ordine per ogni classe: c (90%, 70%, 70%, meno del 10%). Sono più preoccupato di migliorare l'accuratezza della 4a classe che è inferiore al 10%. E ancora una cosa è, il 'classwt' correttamente implementato in' randomForest' di R di ora? – StrikeR
Per quanto riguarda l'implementazione di 'classwt' - suppongo che non sia implementata, perché http://cran.r-project.org/web/packages/randomForest/NEWS puoi leggere che" * Implementa il nuovo schema di gestione classwt in classifica. " è nella lista dei desideri. – BartekCh