Foresta casuale su dati multilivello / struttura gerarchica


13

Sono abbastanza nuovo nell'apprendimento automatico, nelle tecniche CART e simili, e spero che la mia ingenuità non sia troppo ovvia.

In che modo Random Forest gestisce strutture dati multilivello / gerarchiche (ad esempio quando l'interazione tra livelli è interessante)?

Cioè, set di dati con unità di analisi a diversi livelli gerarchici ( ad esempio , gli studenti nidificati all'interno delle scuole, con dati sia sugli studenti che sulle scuole).

Ad esempio, si consideri un set di dati multilivello con individui di primo livello ( ad es. , Con dati sul comportamento di voto, dati demografici ecc.) Nidificati all'interno dei paesi di secondo livello (con dati a livello di paese; ad es . Popolazione):

ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54

Diciamo che votedè la variabile risposta / dipendente e le altre sono predittore / variabili indipendenti. In questi tipi di casi, i margini e gli effetti marginali di una variabile (dipendenza parziale) per alcune variabili di livello superiore ( ad es . population) Per diverse variabili di livello individuale, ecc., Potrebbero essere molto interessanti. In un caso simile a questo, glmè ovviamente più appropriato - ma quando ci sono molte variabili, interazioni e / o valori mancanti, e / o set di dati su larga scala ecc., glmNon è così affidabile.

Domande secondarie: Random Forest può gestire esplicitamente questo tipo di struttura di dati in qualche modo? Se utilizzato indipendentemente, che tipo di distorsione introduce? Se Random Forest non è appropriato, esiste qualche altro metodo di tipo ensemble?

(Domanda La foresta casuale sui dati raggruppati è forse simile, ma non risponde davvero a questo.)


Ciao @MikaelAndersson, hai trovato una soluzione alle domande che hai posto? Sto affrontando una situazione simile e spero di sentire la tua esperienza. Grazie.
NoviceProg,

Risposte:


4

Le foreste casuali funzionerebbero bene, ma è necessario prestare molta attenzione quando si sintonizzano gli iperparametri (soprattutto se si desidera una misura realistica delle prestazioni di generalizzazione). Le stime degli errori OOB tradizionali saranno molto ottimistiche in quanto vi è un "gemellaggio" dilagante nei dati.

Per ottenere stime di ottimizzazione e generalizzazione adeguate, è necessario comprendere quali sono le caratteristiche di tutti i nuovi dati che ci si aspetta di incontrare. Se si desidera estrapolare in nuovi paesi, è necessario impostare una sorta di sintonizzazione basata su ri-campionamento (come la convalida incrociata di k-fold) che esegua il campionamento stratificato per paese.

È inoltre necessario fare attenzione a come codificare i dati in una foresta casuale. Sembra che countrysia una variabile categoriale. Inserirlo come un numero sarebbe un po 'approssimativo, ma non disperato (specialmente se hai ordinato gli ID con qualcosa di utile).


Potresti espandere un po 'il motivo per cui le stime di errore OOB saranno troppo ottimistiche?
dmartin,

2
Suppongo che il loro ottimismo dipenda da come potrebbero apparire i nuovi dati. Se i nuovi dati provenissero da altre contee, probabilmente questa foresta casuale non funzionerebbe come indicato dagli errori OOB. Questo perché, ad esempio, gli errori OOB provengono ancora da campioni della stessa serie di contee.
Shea Parkes,

3

In realtà sto lavorando su un pacchetto R che esegue randomForest come classificatore locale lungo una gerarchia di classi predefinita. Il pacchetto può essere trovato in R Forge sotto 'hie-ran-forest'. Il pacchetto è già operativo, anche se non sta superando uno dei cran test (per MAC), non sono sicuro del perché. Oltre a eseguire effettivamente randomForest per ciascun nodo padre nella gerarchia, il pacchetto contiene anche funzioni di previsione e funzioni di prestazione. Una delle misure di prestazione rappresenta in realtà la struttura gerarchica delle classi.

Il pacchetto risolve l'interazione tra i livelli eseguendo prima la foresta casuale come classificatore locale su ciascun nodo padre della gerarchia di classi. Successivamente la funzione di previsione recupera la percentuale di voti fuori borsa che ciascun caso ha ricevuto in ciascun classificatore locale. Quindi ci sono due modi per trasformare la percentuale di voti in una classificazione nitida: 1. una regola di maggioranza graduale - Inizia con il classificatore locale più vicino alla radice dell'albero e seleziona il figlio di questo classificatore che ha ricevuto la percentuale più alta di voti. Quindi, guarda tutti i figli del nodo selezionato e seleziona nuovamente il figlio che ha ricevuto la più alta percentuale di voti nel relativo classificatore locale. Continuare fino a raggiungere un nodo terminale. 2.

La proporzione moltiplicativa dei voti è paragonabile alla percentuale dei voti prodotta da una normale foresta casuale


2
Puoi chiarire che il tuo pacchetto affronta le "interazioni tra livelli" e, in tal caso, come fa? Il solo dire che esiste un pacchetto non è una gran risposta (non intendo essere troppo critico qui, ma CV sta cercando di creare un repository permanente di informazioni ML di alta qualità e il fatto che esista un pacchetto non lo fa abbastanza conforme a quello standard.)
gung - Ripristina Monica

Nota, il tuo nome utente, con un collegamento alla tua pagina utente, viene automaticamente allegato a tutti i post che pubblichi qui. Quindi non è necessario firmare i tuoi post, anzi, preferiamo che tu non lo faccia. Se vuoi che le persone siano in grado di contattarti, puoi pubblicare un metodo (ad es. Il tuo indirizzo e-mail) sulla tua pagina utente.
gung - Ripristina Monica

Fantastico, grazie @YoniGavish. Perché non modificare la risposta e aggiungere quelle informazioni?
gung - Ripristina Monica

È meglio @gung?
Yoni Gavish,

Sì, lo farà, @YoniGavish, +1. Benvenuti nel sito.
gung - Ripristina Monica

3

In un singolo albero di classificazione, questi gruppi sono codificati come qualsiasi altra variabile categoriale. Questo è spesso fatto come codifica binaria o semplicemente usando un numero intero. Esistono diversi argomenti per l'utilizzo di entrambi. Nelle foreste casuali se si utilizza la codifica binaria, alcuni gruppi verranno inclusi / esclusi per un determinato albero. Quindi potresti avere un indicatore per country_2ma no country_3. Se si lascia la variabile di gruppo come intero, anche l'ordinamento può influire sul risultato. Cosa significa per country > 5e country < 12? Come cambia se si rietichettano casualmente i paesi con nuovi numeri interi?

Ad ogni passo nella crescita di un albero, l'algoritmo sta cercando la divisione che ottimizza i criteri. Se ci sono grandi differenze tra i gruppi, allora la variabile di raggruppamento sarà importante, ma se è solo moderatamente importante e poti un albero, allora la variabile potrebbe essenzialmente essere esclusa.

Come la maggior parte degli altri algoritmi di apprendimento automatico, CART e foreste casuali non tengono necessariamente conto della dipendenza tra le osservazioni all'interno dei gruppi come ci si aspetterebbe in un modello di regressione gerarchica. Se esiste una dipendenza tra le osservazioni, dovrebbe essere catturato dall'algoritmo di foresta casuale attraverso la generazione di molti alberi che usano la variabile di raggruppamento. Tuttavia, se altre variabili dimostrano una maggiore discriminazione, la variabile di raggruppamento può essere ignorata.

Nel tuo caso, countrye populationsono perfettamente collineari. Non ci sono informazioni ottenute utilizzando entrambe le variabili nel modello. Quindi puoi pensare a come un modello di foresta casuale tratterà queste variabili nei tuoi dati.

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.