Domanda:
Fare un singolo albero decisionale da una foresta casuale
Lembik
2015-09-12 11:48:04 UTC
view on stackexchange narkive permalink

Sto usando scikit per imparare a costruire un classificatore di foresta casuale. Ho sentito che potrebbe essere possibile costruire un singolo albero decisionale da una foresta casuale. Il suggerimento è che sebbene l'albero decisionale potrebbe non essere un buon classificatore come la foresta casuale, potrebbe essere migliore dell'albero decisionale che otterresti utilizzando il metodo standard.

Tuttavia non sono stato in grado per trovare questo metodo online. Esiste?


La mia domanda non riguarda l'estrazione di uno degli alberi decisionali da una foresta casuale. Sta chiedendo un metodo per costruire un nuovo albero decisionale dall'intera foresta casuale, magari combinando in qualche modo gli alberi nella foresta casuale.

Ha ancora meno senso.Perché dovresti costruire un singolo albero da una RF, quando hai già una RF?Usa solo la RF.A proposito, RF combina già gli alberi decisionali (facendo la media delle loro previsioni).Ma forse sei ancora poco chiaro, quindi hai un riferimento per "quello che hai sentito"?Ciò ti aiuterebbe a ottenere risposte pertinenti a ciò che desideri veramente.
Forse quello che vuoi è un metodo per estrarre le * regole decisionali * di una RF?Tuttavia, non sono sicuro che questo insieme di regole possa essere rappresentato come un albero decisionale.
Il termine chiave di cui hai bisogno è _Combined Multiple Models_ (CMM).Domingos 1997 lo descrive per l'insacchettamento delle regole C4.5: http://homes.cs.washington.edu/~pedrod/papers/mlc97.pdf Sarebbe divertente avere un esempio di questo con Random Forests in `sklearn`.
Antoine, per essere chiari, la maggior parte degli algoritmi di costruzione di alberi decisionali sono algoritmi avidi che non trovano l'albero decisionale ottimale.L'OP suggerisce che, dopo aver addestrato un RF, si potrebbero ottenere informazioni sull'assemblaggio di un albero più potente di quello che si otterrebbe dai tipici algoritmi greedy.Come dice lui, le sue motivazioni sono interpretabilità e velocità.
La mia opinione: un adattamento casuale della foresta può essere visto come un ampio insieme di regole che può essere ridotto a un insieme più piccolo di regole più semplici che accettano un dato aumento di bias come in questo articolo [10].http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4243592/ Ma ... se un insieme minimo di regole rimane un numero elevato, questa riduzione è ancora incomprensibile.Spesso se riesci a ridurre la foresta a un piccolo albero con poca inclinazione, dovresti essere in grado di utilizzare un modello più semplice in primo luogo.
Non sono d'accordo sul fatto che gli alberi decisionali siano semplici da interpretare, almeno se sono di dimensioni realistiche.Lasciare quattro o cinque livelli inferiori è estremamente difficile da spiegare perché ogni decisione è condizionata a tutte le decisioni di livello superiore.+1 al commento di Soren.
Sei risposte:
Antoine
2015-09-14 14:46:09 UTC
view on stackexchange narkive permalink

Gli alberi in RF e gli alberi singoli vengono costruiti utilizzando lo stesso algoritmo (di solito CART). L'unica piccola differenza è che un singolo albero prova tutti i predittori a ogni divisione, mentre gli alberi in RF provano solo un sottoinsieme casuale dei predittori a ogni divisione (questo crea alberi indipendenti ). Inoltre, ogni albero in una RF è costruito su un campione bootstrap dei dati di addestramento originali, piuttosto che sul set di addestramento completo. Questo rende ogni albero nella foresta un esperto in alcuni domini dello spazio dati e un male altrove.

Quindi, per questi motivi, non ha senso estrarre un singolo albero da una foresta casuale per usalo come classificatore. A seconda dei suoi domini di competenza, potrebbe darti risultati migliori rispetto a un albero tradizionale costruito con CART sull'intero set di dati, o molto peggio. La cosa che consente a un RF di essere molto meglio di un singolo albero è che cresce molti alberi decorrelati e calcola la media del loro output. Solo quando il comitato di esperti comprende un numero sufficiente di membri (solitamente tra 200 e 2000) la varianza viene ridotta. Ma individualmente, ogni albero di una RF sarebbe più debole di un singolo albero costruito tramite CART tradizionale.

Puoi certamente estrarre un albero da una RF per avere un'idea di cosa sta succedendo nella foresta (vedi il link che ho fornito nel mio commento sopra). Basta non usare questo singolo albero come classificatore.

Scusa, penso che la mia domanda non fosse chiara al 100%.Non sto chiedendo di estrarre uno degli alberi decisionali dalla RF.Ma piuttosto sulla costruzione di un singolo albero decisionale dalla RF con qualche metodo.Immagino che ciò comporterebbe in qualche modo la combinazione degli alberi decisionali in RF, ma come questo è fatto è il punto della mia domanda.
La motivazione principale è l'interpretabilità.Un albero decisionale ti dice qualcosa di semplice e facilmente comprensibile sui tuoi dati.Inoltre, gli alberi decisionali di dimensioni ragionevoli sono estremamente veloci da eseguire su dati di grandi dimensioni.
Una volta addestrata la RF, utilizzarla per fare previsioni è anche molto veloce.E se il tuo albero decisionale è costruito combinando in qualche modo gli alberi decisionali in RF, ciò richiederebbe comunque la costruzione di RF in primo luogo, giusto?
È vero che fare previsioni con un RF è veloce anche se non abbastanza veloce se si contano i microsecondi.Nella mia situazione, creerei l'RF su alcuni dati di allenamento e poi lo eseguirò su dati futuri che potrebbero essere molto più grandi.Ma come ho detto, l'interpretabilità è una proprietà molto attraente degli alberi decisionali per la mia situazione.
Puoi estrarre l '[importanza della variabile] (https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp) da una foresta casuale che mostra quanto siano "importanti" le tue variabili per fare previsioni.Questo è il primo passo per cercare di ottenere qualche interpretazione da una RF.
@Lembik Quindi, in sostanza, il tuo desiderio di beneficiare dell'accuratezza di una RF senza doverlo scambiare con l'interpretabilità.Penso che sia semplicemente impossibile.Non è possibile estrarre molte più informazioni dai modelli di apprendimento dell'insieme come RF, Boosting, ecc. Di quanto possano fornire le misure di importanza variabile.Gli ensemble sono per natura scatole nere (o piuttosto scatole grigie).
niente è impossibile quando non sappiamo cosa si potrebbe fare!Ho sentito che alcune aziende stanno rendendo la RF più interpretabile con successo.Ora sono "in qualche modo", quando prendono la decisione, sono in grado di spiegare quale variabile è la ragione di quella decisione, e perché!Non è esattamente perfetto chiaro come CART, ma stiamo rendendo RF meno nero!questo è il buon segno.
Abraham D Flaxman
2015-09-17 01:55:05 UTC
view on stackexchange narkive permalink

Forse quello che stai cercando è l'approccio Combining Multiple Models (CMM) sviluppato da Domingos negli anni '90. I dettagli per l'utilizzo di questo con un insieme insacchettato di regole C4.5 sono descritti nel suo documento ICML

Domingos, Pedro. "Acquisizione di conoscenze da esempi tramite più modelli". Negli Atti della quattordicesima conferenza internazionale sul machine learning . 1997.

Lo pseudocodice nella Tabella 1 non è specifico per il C4.5 in sacchi, tuttavia: enter image description here

Per applicarlo a Foreste casuali, la questione chiave sembra essere come generare l'esempio generato casualmente $ \ overrightarrow {x} $. Ecco un taccuino che mostra un modo per farlo con sklearn .

Questo mi ha fatto pensare a quale lavoro di follow-up è stato svolto su CMM, e se qualcuno ha trovato un modo migliore per generare $ \ overrightarrow {x} $. Ho creato una nuova domanda al riguardo qui.

JohnRos
2015-09-20 15:11:34 UTC
view on stackexchange narkive permalink

Fatta eccezione per scenari molto improbabili, una previsione di foresta casuale non può essere rappresentata da un singolo albero. Questo perché apprendono predittori in diverse classi di ipotesi: una foresta casuale apprende predittori nello spazio di combinazioni lineari di alberi, che include predittori che non sono alberi. In altre parole, le foreste apprendono i predittori nell'arco dello spazio degli alberi.

Detto questo, c'è la speranza che esista un albero che sia una buona approssimazione del predittore della foresta. Un modo rapido e sporco per trovare questo albero è adattare un albero alle previsioni della foresta. La qualità delle sue previsioni dipenderà dalla "distanza" dal miglior predittore di foresta alla sua migliore approssimazione di albero.

Tchotchke
2015-09-14 19:30:09 UTC
view on stackexchange narkive permalink

Sembra che tu stia cercando di risolvere due problemi: 1. interpretabilità e 2. efficienza della previsione. Come già accennato nei commenti sopra, puoi estrarre importanza variabile in Python, in modo che indirizzi il punto 1.

Per affrontare il punto 2, se sei interessato all'efficienza fino a microsecondi, quindi potresti voler esplorare altri algoritmi, come la regressione logistica, e confrontare le prestazioni fuori campione con quelle generate da Random Forest; se le prestazioni sono quasi equivalenti ma la regressione logistica è molto più veloce, puoi prendere la decisione di procedere con la regressione logistica.

Se hai deciso di utilizzare Random Forest, la risposta breve è che tecnicamente potrebbe costruire un albero casuale impostando ntree = 1 e potrebbe produrre una previsione decente, ma una raccolta di alberi sarà molto meglio di un singolo albero. Quindi non ha senso costruire un solo albero dal sottoinsieme di alberi a meno che tu non voglia compromettere le prestazioni fuori campione con l'efficienza.

Inoltre, potresti anche accelerare le previsioni un fattore di 10 o più utilizzando solo un sottoinsieme degli alberi nella previsione finale. Se addestri 1500 alberi, puoi selezionare il sottoinsieme che meglio contribuisce alla previsione finale. Sto pensando a qualcosa sulla falsariga di Selezione di un insieme da un modello di biblioteche, in cui ogni albero nella tua foresta sarebbe il modello nel tuo insieme.

DaL
2015-09-20 13:39:05 UTC
view on stackexchange narkive permalink

Uno dei classici sulla combinazione di tali funzioni è "Algoritmi basati su grafici per la manipolazione di funzioni booleane". Contiene oltre 3.000 citazioni. Puoi trattare gli alberi come un caso speciale di funzioni booleane.

Tieni presente che se il tuo modello di foresta casuale è grande, è probabile che anche il modello ad albero singolo sia grande.

Laurent Deborde
2019-03-24 20:39:56 UTC
view on stackexchange narkive permalink

Proprio come dice JohnRos sopra, puoi effettivamente cercare l'approssimazione globale di un singolo albero della foresta casuale cercando di adattare un singolo albero alla previsione della foresta casuale su un numero (molto) elevato di punti.Potrebbe funzionare per altri modelli di scatola nera.Si chiama approccio "oracolo" all'approssimazione globale di un singolo albero per [1] (perché la scatola nera è usata come un oracolo per adattarsi al singolo albero). Se ne ho il coraggio, ho caricato un paio di esempi e altre spiegazioni su Github qui: https://github.com/ljmdeb/GSTA

[1] Riccardo Guidotti, Anna Monreale, Salvatore Ruggieri, Franco Turini, Fosca Giannotti e Dino Pedreschi.2018. Un'indagine sui metodi per spiegare i modelli della scatola nera.ACM Comput.Surv.51, 5, articolo 93 (agosto 2018), 42 pagine.(specialmente la tabella a pagina 93:26)



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...